Many open source projects span regions, countries and dialects and need to support a variety of translations, GlotPress is here to help you collaborate online with your translators to ensure your users see your software in their native language.

GlotPress has two versions, a standalone version and this WordPress plugin version. At this time these two versions are functionally similar, but the plugin version is likely to start moving away from the standalone version in future versions. For the rest of this document, any reference to “GlotPress” should be taken as the plugin.

For more information about GlotPress, feel free to visit the channels listed below in the “Communication” section.

So who should use GlotPress?

Any developer of software that uses gettext, like WordPress theme or plugin authors. But that’s just the start, anyone who uses a gettext bases system can use GlotPress to help their translators collaborate.

This plugin wouldn’t be possible without all the hard work that has gone in to the standalone version of GlotPress and we’d like to thank all those who contribute to it.


For basic support questions, please use the support forums.

If you have a bug or feature request please visit the issues list to help improve it in future.

If you’d like to work on something and there’s not currently an issue for it, open a new issue and describe your proposed change before jumping into coding.



Search for “GlotPress” in the plugin directory and install it.

After activating the plugin, GlotPress can be accessed via <home_url>/glotpress/

Manual Installation

  1. Upload the entire /glotpress directory to the /wp-content/plugins/ directory.
  2. Activate GlotPress through the ‘Plugins’ menu in WordPress.
  3. GlotPress can then be accessed via <home_url>/glotpress/

Daha çox məlumat

More information can be found in the GlotPress Manual.


How can I contribute to GlotPress?

Drop by the GlotPress GitHub repository and look through the open issues and pull requests.

So who should use GlotPress?

Any developer of software that uses gettext, like WordPress theme or plugin authors. But that’s just the start, anyone who uses a gettext bases system can use GlotPress to help their translators collaborate.

How do I migrate my standalone GlotPress install to the plugin?

There’s a conversion document on the GlotPress wiki on how to convert your standalone install.

I’ve written a custom plugin for the standalone version, will it work with the plugin?

Short answer, no.

You will need to update the plugin to be a WordPress plugin. Instructions on how to do so can be found on the GlotPress Wiki.


01 Aprel 2018
I am impressed by this plugin, it is simple but really efficient.
07 Oktyabr 2017
Отличный плагин как для больших так и для маленьких проектов. Аналогов практически нет, тем более бесплатных. Минимум кода, максимум возможностей. Документация написано от и до. Спасибо, ждём новых версий!
19 Avqust 2017
I'm loving this developing plugin. I would love more features of course, am willing to wait for them at this stage.
20 Dekabr 2016
I'd like to thank your contribution. It really help us to develop worldwide product. Though there are not many tool currently (tranlations memory, leave comments, etc) But I believe the powerful Open Source will make your project better.
24 Sentyabr 2016
Very useful plugin, I used it, when i was looking for a plugin for my own WordPress. Because my coworkers do not speak english, I decided to take part in the translation process of plugin onto I discovered a very powerfull and useful tool. Also, i would like to request an specific add in order to include a "glossary" plugin (similar than WebLate or Transifex).
Read all 12 reviews


All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.

2.3.1 (March 1, 2017)


  • Don’t require a project glossary to show terms of a locale glossary. (#656)
  • Allow querying translations by priority. (#664)
  • Fix incorrect nonce check for locale glossary imports. (#673)
  • Fix flushing existing glossary on import. (#675)


  • Add gp_locale_glossary_path_prefix filter for the locale glossary path prefix. (#655)

Thanks to all the contributors so far: Alex Kirk, Dominik Schilling, Greg Ross, and Yoav Farhi.

2.3.0 (February 6, 2017)

(this space intentionally left blank)

2.3.0-rc.1 (January 31, 2017)


  • Allow project glossaries to override terms of a locale glossary. (#640)
  • Remove hard coded ‘default’ slug which prevented locale glossaries for locale variants. (#641)
  • During imports, don’t change status fuzzy to waiting if a translation has warnings. (#646)
  • Allow CLI imports to set the status of translations to current. (#644)

Thanks to all the contributors so far: Dominik Schilling, Greg Ross and Sergey Biryukov.

2.3.0-beta.1 (January 17, 2017)


  • Fix incorrect URL’s in some cases on locale page. (#632)
  • Fix truncation of download names if they contain a space. (#633)
  • Improve glossary plural handling. (#595)
  • Restore edit text for non translated entries. (#519)
  • Don’t create duplicate translations during imports. (#579)
  • Redirect users back to previous page when they have to log in. (#558)
  • Fix default file extension for .NET Resources files. (#573)
  • Fix radio button code to remove spurious single quote. (#610)


  • Add JSON format for JED and plain JSON. (#523)
  • Add support for locale glossaries. (#227)
  • Add ability to mark translations as fuzzy. (#620)
  • Enhance display of previous translations with special characters in them. (#625)
  • Add support for importing fuzzy translations. (#596)
  • Add keyboard shortcut for copying original strings. (#554)
  • Developers: Add filters for translations queries. (#524)
  • Developers: Add Fine-grained permissions per translations. (#537)
  • Developers: Add filter for adding links to the translation editor. (#597)
  • Add meta data to all file formats that can support it. (#575)
  • Update ROH locale information. (#605)

Thanks to all the contributors so far: Alex Kirk, Anton Timmermans, Dominik Schilling, Greg Ross, Nikhil, Pascal Birchler, and Yoav Farhi.

2.2.2 (November 21, 2016)


  • Fix an information leak in the API, reported by Alex Kirk.

2.2.1 (November 11, 2016)


  • Fix missing header fields in .mo files. (#594)
  • Add padding to table headers to avoid overlapping with sorting graphics. (#565)
  • Fix for “Only variables should be passed by reference” warning when importing translations. (#566)


  • Add locale information for Xhosa. (#603)

Thanks to all the contributors so far: Alex Kirk, Dominik Schilling, and Greg Ross.

2.2.0 (September 30, 2016)

(this space intentionally left blank)

2.2.0-rc.1 (September 22, 2016)

(this space intentionally left blank)

2.2.0-beta.1 (September 19, 2016)

Breaking Changes

  • Change the slug of the Kyrgyz locale from ky to kir. (#550)


  • Fix broken cancel link on project create form. (#547)
  • Fix native name of the Tibetan locale name from བོད་སྐད to བོད་ཡིག. (#539)
  • Fix extra entry in GP_Translation::translations(). (#516)
  • Merge similar strings to improve translation. (#535)
  • Refactor script and style registration to make them more reliable. (#476)
  • Update locale information for Kyrgyz to use correct data. (#550)


  • Add locale information for the Latin version of Hausa. (#549)
  • Fix translations which are using the placeholder for tab characters. (#473)
  • Add gp_reference_source_url filter for the source URL of a project. (#522)
  • Provide minified assets. (#505)
  • Update JavaScript library for table sorting. (#502)

Thanks to all the contributors so far: Alex Kirk, David Decker, Dominik Schilling, Greg Ross, Pedro Mendonça, Petya Raykovska, and Sergey Biryukov.

2.1.0 (July 13, 2016)

(this space intentionally left blank)

2.1.0-rc.1 (July 7, 2016)


  • Allow project slugs to contain periods. (#492)


  • Add confirmation message when saving settings. (#490)
  • Convert sort by fields from hard coded to a filterable function call. (#488

2.1.0-beta.1 (June 29, 2016)


  • Replace LIKE queries for the status of an original with an exact match. (#419)
  • Move gp_translation_set_filters hook to allow additions to the filter form. (#391)
  • Fix wrong error message for translations with a missing set ID. (#341)
  • Fix Android exports with translation that start with an @. (#469)
  • Improve performance of default GP_Translation->for_translation() query. (#376)
  • Use __DIR__ constant for GP_PATH. (#455)
  • Use lowercase field types in schema.php. (#461)
  • Change field type for user IDs to bigint(20). (#464)
  • Don’t call gp_upgrade_data() in gp_upgrade_db() on install. (#361)
  • Define max index length for user_id_action column. (#462)


  • Allow export by priority of originals. (#405)
  • Check imported translations for warnings. (#401)
  • Allow translations to be imported with status waiting. (#377)
  • Add Language header to PO exports. (#428)
  • Add option to overwrite existing glossary when importing. (#395)
  • Allow modification of accepted HTTP methods in the router. (#393)
  • Update the Project-Id-Version header PO exports to better handle sub projects and be filterable. (#442)
  • Convert the permissions list to a table. (#99)
  • Split translation status counts by hidden and public. (#397)
  • Store user ID of validator/approver on translation status changes. (#293)

Thanks to all the contributors so far: Dominik Schilling, Greg Ross, Yoav Farhi, Alex Kirk, Anton Timmermans, Mattias Tengblad

2.0.1 (April 25, 2016)


  • Avoid a PHP warning when a user had made translations and the user was then deleted. (#386)
  • Update all delete permission levels to be consistent in different areas of GlotPress. (#390)
  • Fix the CLI export command to properly use the “status” option. (#404)
  • Add upgrade script to remove trailing slashes left of project paths from 1.0 which are no longer supported. (#410)
  • Fix conflict with other plugins that also use the GP_Locales class. (#413)
  • Exclude the art-xemoji locale from length check that caused spurious warnings. (#417)


  • Add Haitian Creole locale definition. (#411)
  • Update Asturian locale definition. (#412)

Thanks to all the contributors so far: Dominik Schilling, Greg Ross, and Yoav Farhi.

2.0.0 (April 04, 2016)


  • Delete cookies for notices on installs without a base. (#379)
  • Fix “Use as name” link on translation set creation page. (#381)

2.0.0-rc.1 (March 29, 2016)

(this space intentionally left blank)

2.0.0-beta.2 (March 27, 2016)


  • Implement nonces for URLs and forms to help protect against several types of attacks including CSRF. (#355)


  • Avoid a PHP warning when updating a glossary entry. (#366)
  • Improve mb_* compat functions to support all parameters and utilize WordPress’ compat functions. (#364)

2.0.0-beta.1 (March 17, 2016)

Breaking Changes

  • Remove Translation Propagation from core. Now available as a plugin. (#337)
  • Remove user and option handling in gp_update_meta()/gp_delete_meta(). (#300)
  • Remove deprecated assets/img/glotpress-logo.png. (#327)
  • Remove gp_sanitize_for_url() in favor of sanitize_title() for enhanced slug generation. (#330)
  • Improve return values of gp_meta_update(). (#318).
  • Remove CLI command GP_CLI_WPorg2Slug. (#347)


  • Make projects, translation sets, and glossaries deletable via UI. (#267)
  • Update several locale definitions to use new Facebook and Google codes and correct country codes. (#246)
  • Add Greenlandic, Spanish (Guatemala), and Tahitian locale definition. (#246)
  • Add auto detection for format of uploaded import files. (#290)
  • Add UI to manage GlotPress administrators. (#233)
  • Add checkbox for case-sensitive translation searches. (#312)
  • Add support for Java properties files. (#297)
  • Add cancel link to import pages. (#268)
  • Add warning and disable the plugin if permalinks are not set. (#218)
  • Add warning and disable the plugin if unsupported version of PHP is detected. (#276)
  • Add inline documentation for actions and filters. (#50)
  • Add backend support to allow for integration with WordPress’ user profiles. (#196)
  • Introduce a separate page for settings. (#325)
  • Validate slugs for translation sets on saving. (#329)
  • Standardize triggers in projects, translations and originals. (#294)
  • Introduce GP_Thing::after_delete() method and new actions. (#294)
  • Add .pot extension to GP_Format_PO. (#230)
  • Various code cleanups to improve code quality. (#237)


  • Mark Sindhi locale definition as RTL. (#243)
  • Replace current_user_can( 'manage_options' ) with GlotPress permissions. (#254)
  • Make child projects accessible if permalink structure has a trailing slash. (#265)
  • Use real URLs for back links instead of JavaScript’s history back() method. (#278)
  • Replace deprecated/private [_]wp_specialchars() function with htmlspecialchars(). (#280)
  • Merge similar translation strings and avoid using HTML tags in translation strings. (#295)
  • Add missing gp_ prefix for for translation actions. (#232)
  • Fix case where $original->validate() fails if singular is ‘0’. (#301)
  • Fix auto generation of project slugs with special characters. (#328)
  • Suspend cache invalidation during original imports. (#332)
  • Prevent submitting translations with empty plurals. (#308)
  • Update schema definitions to work with WordPress’ dbDelta() function. (#343)
  • Fix redirect when a translation set update failed. (#349)
  • Prevent a PHP fatal error when importing originals. (#302)

Thanks to all the contributors so far: Aki Björklund, Daisuke Takahashi, Dominik Schilling, Gabor Javorszky, Greg Ross, Peter Dave Hello, Rami, and Sergey Biryukov.

1.0.2 (March 09, 2016)


  • Sanitize messages in gp_notice().

1.0.1 (January 21, 2016)


  • Unslash PHP’s superglobals to prevent extra slashes in translations. (#220)
  • Adjust add/delete glossary entry links with trailing slashes. (#224)

1.0.0 (January 18, 2016)

  • İlik versiya.