Status update

So it has been quiet for the last two months. Only some small changes have been made to the code. But before going into this years plans I first want to thank all the contributors from last year: yoavf, Secretmapper, vanillalounge, nacin, nbachiyski, DJPaul, koke, dimadin, juanramondiaz, wonderboymusic, stuwest, extendwings, Nao, ocean90, knome, joostdevalk, waclawjacek, cfoellmann, ramiy, hew. And that is without mentioning the people who submitted still waiting patches and tickets. It was a good year where great improvements where made.

So for this year already quite some tickets and patches have been created and I will try to review this month. There will be three focus topics for this year which are increasing contributions, build a new default theme and rebuild part of core (to increase performance).

To increase the amount of contributors we will try to be more proactive when tickets, patches and issues are raised so people feel more connected to the project. Also from March there will be a weekly meeting where we can sync planning and work on new ideas. currently I’m thinking to do this meeting on Thursdays at 15:00 UTC. If you have suggestions then please let my know. I will create blog posts for the other two topics.

As last, from this point on I will be actively leading the project. Due to the fact that we have active contributors now, it also means that my role need to be active instead of committing things that I like to work on. Also GlotPress has become more important for open source projects and there is a lot of things that could increase the usability of GlotPress.


Process November 2014

As promised in last update we will now have monthly update post. The biggest change is that since this weekend we moved to PHP 5.3. While we adding new features, we also clean up the code and this time we starting to deprecate our lambda function and now moving to anonymous functions which got added in PHP 5.3.

Unfortunately we didn’t manage to do the things on our roadmap due to fixing some important bugs. But I’m sure that some of those bugs will make you guys happy. I finally had the time to dig into the caching issue of the translation set counts and fixed it.  We also currently hidden public profiles but that will be back in a few days.

Changes made

  • Invalidate the translation set cache when approving/rejecting a string.
  • Increased performance of profile pages.
  • Disregard context if it’s any falsy value.
  • Fix going to the previous translation with the keyboard.
  • Move to the next translation when approving/rejecting a string.
  • Reduce the size of index ‘singular_plural_context’ for originals.
  • Added a link on users profile page to his translations of that translation set.
  • Fix guess_uri() for subdirectory installations.
  • Fixed not exporting translation comments for PO files.
  • Don’t fatal when hitting a projects page where the parent project has been deleted (work in progress).
  • Remove RRC format.
  • Stop using lambda function and start switching to anonymous or normal functions.
  • Add support for Oriya and Lingala.
  • Update Kinyarwanda.

Thanks to: yoavf, joostdevalk, nbachiyski and waclawjacek

Changesets 970 – 999


In the last couple of months some great…

In the last couple of months some great features got added like profiles and locale pages. Also we created a roadmap and try to keep up with that one. So from last month only profiles got added and we still need to do a bit more work for fixing the SQL issues and cleaning up locales.php. Also since we now have a roadmap, I will post by the end of every month an update about what got done.

Changes made

  • Added locale pages (in progress).
  • Added public profiles (in progress).
  • Fixes to Glossary.
  • Fixes for branching.
  • Complete overhaul of the installation process. You can now fill in your username, password and email address.
  • Return percent_translated and wp_locale when using the API to retrieve the translation sets of a project.
  • Add last_modified to the API and cache it.
  • Show by default references again and add a filter to hide them if needed.
  • Exclude old strings from the untranslated translations query.
  • Add filter to the import method to allow selective import over existing translations.
  • Add action in the translation set filters form.
  • Add filter to import translation status.
  • Small design changes
  • Cleanup locales.php a bit
  • Proper native name for Sakha.
  • Update native names for zh_CN and zh_TW.

Thanks to yoavf, nacin, nbachiyski, secretmapper, knome, extendwings, vanillalounge, stuwest and ocean90

Changesets 931 – 969


The last couple two and a half months…

The last couple two and a half months a lot of things got changed. As you guys have seen in the last two posts is that we have this year our first GSoC project and the focus of the project will be a huge improvement for GlotPress. I can’t wait to see how GlotPress will look like in September.

We also did some nice improvements and some groundwork for upcoming features. This is a list of almost all changes that are made.

  • Branching
    • Preserve hierarchy when duplicating projects that contain multiple sub projects.
    • Allow editing of the project description.
    • Keep the original project status.
    • Fix an issue where translations original id was set to the original project originals.
    • Performance improvements. About 20% faster on a project with 15k originals.
  • Add CLI script to perform branching.
  • Save username when importing new translations.
  • Add “projects” filters to GP_Project to be able to sort the array.
  • Show fuzzy count of translated sets in the project view.
  • Add bulk setting for priority.
  • Introduce the fuzzy_count method for translation sets.
  • Add support for comments in Android import.
  • Add abstract class GP_Format to use for all our import/export formats.
  • Add indices on the original tables.
  • Add hook to discard_warning_edit_function.
  • Import “fuzzy” flag.
  • Make the $where array in for_translation filterable.
  • Improved unit tests
  • Added support for Ido and German (Switzerland).
  • And other minor fixes and cleanups.


Progress made so far in 2014

It has been almost five months since the last update post. Since then we added two major features to GlotPress.

The first one is that we have glossaries now. It gives validators the opportunity to have a list of most used words and how they should be translated. It makes it easier to manage translators since you can point them to the glossary. There are still some things to do but you can already use it. For progress see ticket #97. Props for Yoav on this one.

And as second we finally have project branching. It allows admins to duplicate a project with all the originals, translation sets and translations. Milan Dinić worked on this a long time ago and we finally committed this. See ticket #65.

Other features added are:

  • Allow setting originals’ priority on import. See #275.
  • Skip strings that are marked as untranslatable when using the Android format. See #279.
  • Stop needed ?action=upgrade when upgrading the database. See #281.
  • Improved guess_uri() to also work when there is an url passed in a GET parameter. See #282.
  • Updated jQuery and stop using $ sign. See #284.
  • Added phpunit.xml file and moved tests in their own folder. See #285.
  • Fixed UTF16 and escaping issue when importing new strings with the .strings format. See #295.
  • Generate .htaccess file automatically when posibble. See #280.
  • Added more unit tests.
  • Added support for Fulah, Tigrinya and Rohingya.
  • Added wp_locale for Irish, Marathi, Mongolian and Amharic.
  • Fixed the Rohingya locale information.

We recommend everyone who is using GlotPress to update to the latest code base.


Redesign of GlotPress

It came to my mind that to get things further we might first need to make a redesign. So the plan is to work on that in January. The focus then is to make GlotPress a better collaborative place since that is the thing what it lacks now.

The most important thing is that we need to use user data to build the UI. So knowing which language the user translates for and which projects he likes. Having localization pages is one of the tasks that need to be done. I already blogged about it and Hugo Baeta already expressed his thoughts in 2011. He had some really good points there and after two years I guess we finally can work on those.

The idea is to make an plan on what pages are needed and what functionality should be provided. It should end up being a roadmap for the next year. When that is done and I got feedback on it, I will start working on the UI. I’m not a designer and I do need your help on this.

From there I can create tickets and build on the features. It’s not something that will be done in a few months but doing things step by step makes it really good to get feedback from the community and in the end to have a great product we all love and use.

Related posts:

#progress, #redesign

Since the last update nothing special happend outside…

Since the last update nothing special happend outside our first IRL meetup. Changes since the last time are:

  • Setting the correct last PO-Revision-Data instead of the current time
  • Unit tests are fixed
  • Changed Uzbek to LTR
  • Added word-break & word-wrap to the translation table
  • Added wp_locale to Tibetan and Khmer
  • Added locales: Australian English and Spanish (Argentina)
  • Synced POMO library and made it GlotPress independent
  • Only load PHP files in the plugin folder
  • Always return JSON data when using the API

From next week I will start working more heavily on GlotPress and trying to tackle the WordCamp Europe results. This also means that running GlotPress in trunk will not be recommended for a while due some changes that need to be made. Nothing should break but it’s something you never know.


The last 2 months not a lot of…

The last 2 months not a lot of stuff happened. All the changes are now on The focus is still more and less the same.


  • Google translator does work again as a plugin. So by default you don’t
  • Better Android support. Now all strings should be translatable
  • Added actions when finished with importing originals and translations
  • Fix some other minor issues and reverted some changes


Since the last update there are quite some…

Since the last update there are quite some nice changes. Probably the biggest is a new filter that allows you to create a “child theme” with a plugin. Because of that has the same header/footer as Also it has a link to the blog/Polyglots and the translator handbook.


  • Finally fix caching bug when using Memcache including small improvement when importing strings
  • Improved project view. It’s now always 100% wide
  • Reverted code for changing the po/mo file names on export
  • Fix typos in locales.php
  • Added a new filter “tmpl_load_locations”. Now you can add your own template folder. Thanks to Nacin.
  • Moved project actions outside the template and added a filter “gp_project_actions”
  • Fix notice when importing new strings
  • Fix all kinds of strict PHP warnings. See #220
  • First small change to improve accessibility.

The next weeks I will concentrate on cleaning up milestone 1.0. Fixing some irritating bugs or moving it to milestone 1.1. Even if we don’t have versions it does help out to structure the flow.

  • Improve dealing with strings. Adding ability to import fuzzy strings (#138) and be able to mark a string as “waiting” (#84)
  • Ability to copy projects (#65) and copy translations between translations sets (#66)
  • Ability to check the same strings in of a language in main projects and it’s sub projects
  • Move Google translator out of core into the plugins folder (#170 and #133)
  • Add Microsoft translator (#103)
  • Records validator when importing (#217)
  • Improve check for empty translations (#149)
  • Improve/checking deleting of projects, translation sets and suggested translations (#186 and #223)
  • More accessibility improvements.
  • Remove “default” slug from a translations set (#67)

Lots of things that need to be done and the target is that everything should be fixed before WordCamp San Francisco. The main problem will probably creating unit tests


In the last couple of weeks several things…

In the last couple of weeks several things are fixed. Not what was on my list but still some major improvements that you guys like:

  • Export for resx format
  • Validation for when first translation is empty. Still need to get fixed for plurals
  • Added Last-modified support to the API for downloading a translation set
  • Change filename for po/mo files
  • Strings in RTL languages are now displayed from the right
  • Translations sets of a project can now be sorted. Still a little bit secret
  • Make project view 100% width when there are no subprojects
  • Fix some other minor things

Will check everything tomorrow that I didn’t break something and after that I will request that the changes are going to be applied on

Current focus is fixing the cache issues. Hopefully I’m able to write some unit tests for it in the next week.
Also hoping to fix empty translation for plurals and not exporting when one of them is empty.

Downloading as a zip file has no focus anymore. When most of the major issues are fixed we can look into that.