Thought it might be fitting to post this…

Thought it might be fitting to post this as today marks five years since @ocean90‘s first patch to WordPress. As has been obvious to some of you, I have stepped back from i18n in the past few months, especially after 4.1’s release and as WordCamp Europe, WordCamp SF, the community summit, and Slack have empowered so many of you. I am stretched across a lot of projects, and Dominik very willingly stepped up to take on a lot of responsibility for improving Rosetta, core language packs, and related projects. He’s a highly respected WP core developer, he’s previously helped me on a number of i18n projects, and he’s slid into this role with ease. It’s also time for the technical point of contact to be a polyglot again. 🙂

@stephdau has also been instrumental for the massive project to translate plugins and themes (including language packs, localized plugin/theme directories, and the like). Also, you may have noticed a lot of coordination across these initiatives now happens in a #meta-i18n channel on Slack.

While I haven’t gone anywhere and I’m still helping a bit behind the scenes, please consider @ocean90 the new @nacin and the primary point of contact core/dotorg i18n and the like!


WordPress 4.1 instruction manual

WordPress 4.1 instruction manual

Hello polyglots! In the next 3 hours or so, @johnbillion will be starting the release process (in #core in Slack). Please make sure you are 100% translated for WordPress 4.1 and all subprojects, and also do not forget about the Akismet project.

I’d expect a release somewhere around 1600 UTC, but for most locales, the release process is now automated. Please read on.

Part 1, Language Packs

If you are 100% translated at the time of 4.1’s release, a language pack will be generated for you. This is a ZIP file consisting of PO and MO files only, and is used for the language chooser during the install process, and for the language switcher on the settings screen.

If you become 100% translated some time after 4.1’s release, a language pack will be generated for you once the script is run. This will be around every hour.

If you are 100% translated, a language pack has been created, and then you modify a translation to fix a typo or whatever, a language pack will be regenerated for you once the script is run. Please do not do this with unnecessary frequency, as it triggers an update across all WordPress sites.

Part 2, Release Packages — IMPORTANT CHANGES AHEAD

release package is what you’re used to building using the form on Rosetta’s dashboard. This is a ZIP file consisting of WordPress in its entirety, along with PO and MO files for core, the PO and MO files of default themes and Akismet, and any custom changes you have.

Do you have custom changes? For the purposes of this exercise, your locale falls under one of these four groups:

  • You have never had any custom changes and is entirely empty for your locale.
  • You have no custom changes for 4.1.
  • You have minor custom changes consisting of, at most, a translated readme, license file, and wp-config-sample.php.
  • You have extensive custom changes consisting of other files, such as wp-content/languages/$locale.php or core modifications.

Here are the details on each:

  • If you have never had any custom changes and is entirely empty for your locale, you do not need to do anything. Your release package will be created automatically for you. An example locale is en_GB.
  • If you have no custom changes for 4.1, please ensure you have an empty branches/4.1/dist or tags/4.1/dist directory at (Having an empty trunk/dist directory does not help you.) You do not need a dist directory if branches/4.1 or tags/4.1 is empty. An example would be nl_NLYour release package will be created automatically for you.
  • If you have minor custom changes consisting of, at most, a translated readme, license file, and wp-config-sample.php, please ensure these files exist in a branches/4.1/dist or tags/4.1/dist directory at (Having your stuff in only trunk/dist does not count.) An example would be eo or fr_FRYour release package will be created automatically for you.
  • If you have extensive custom changes consisting of other files, such as wp-content/languages/$locale.php or core modifications, you will need to create a package via Rosetta as you have done in the past. For this, We are phasing out the ability to ship any customizations beyond license, readme, and wp-sample-config.php. This means you need to reach out to the WordPress core contributors to fold your modifications into WordPress core. You can start this process by creating a Trac ticket.

To summarize:

  • If all you have is a license, readme, and wp-config-sample.php (or no custom changes at all), everything will be automated for you for WordPress 4.1 if you follow the instructions above. Both language packs and release packages will automatically be created once 4.1 is announced. If you are not at 100% at that time, then language packs and release packages will be created when you reach 100%. If you are later modify a translation (to fix a typo, for example), your language pack and release package will be regenerated.
  • If you have extensive custom changes, you will need to manually create a package via Rosetta as you have done in the past. This option is being phased out in 2015.


If you go to the releases screen on your Rosetta dashboard, you’ll see a new notice that explains what the system thinks your status is. If you have any questions, comments, concerns, or issues, please comment here or find me or @ocean90 in #polyglots on Slack.

If your locale is currently eligible for automatic creation of release packages (which includes being at 100%), you’ll find an RC3 build generated from tags/4.1-RC3 waiting for you on your dashboard. Please inspect these ZIPs. Those locales are: az, bs_BA, de_DE, en_CA, en_GB, eo, fi, fr_FR, it_IT, nb_NO, nl_NL, pt_PT, ro_RO, and sv_SE (zip links).

#4-1, #announcement, #rosetta

If you are an RTL expert we need…

If you are an RTL expert, we need help on, please. Without this resolved, we can’t release 4.1.


There’s been a snafu on Rosetta sites —…

[Updated 9:02 GMT] There’s been a snafu on Rosetta sites — I managed to delete the released zip packages for about half of the locales. There were a few minutes where 4.0.1 was not available to download for some languages, and a few hours where older releases were not available. Everything has been restored from backups. You have nothing to worry about!


There have been some underlying infrastructure changes to…

There have been some underlying infrastructure changes to all Rosetta sites. This shouldn’t break anything, but if you notice anything unusual or broken, please let me know. These changes don’t make any difference at the moment, but will make it a lot easier for me to implement a number of things in the coming days, weeks, and months.

This is what caused images and downloads to break the other day, as discussed here. This was my fault and I’m sorry about that. As Nikolay pointed out, this had no effect on any new installs (language chooser) or updates — just downloads directly from the individual websites. Anyway: that initial deploy was un-done, the problems were diagnosed, solutions were put in place, and then we re-deployed it a few minutes ago.

#rosetta, #status

WordPress 4.0 is out See full instructions here…

WordPress 4.0 is out. See full instructions here. When building, you can simply choose 4.0/4.0.x and HEAD and it will work.

#4-0, #core, #release

Instructions for 4.0 which will be released in…

Instructions for 4.0, which will be released in the next 15-30 minutes:

  • The need to create a localized build through the Rosetta form is unchanged for 4.0. This will go away very soon, but we couldn’t get all the ducks in a row to make this go away for 4.0. I’m trying for 4.0.1. Thank you so much for your patience as we work to make the experience painless for all of you.
  • As usual, you will build your release off the 4.0 tag, which will exist soon. Since you’re building off of 4.0, you don’t need the revision number (HEAD is fine), but it’s 29485.
  • CHECK YOUR BUILD FIRST. Especially $wp_version in wp-includes/version.php.
  • If you have WPLANG defined in wp-config-sample.php, the build will be rejected. If you don’t translate this file and this file is thus an exact copy of the core file, you may delete it. Only mess with trunk / 4.0, not dist directories from 3.9 or earlier.
  • Thanks to your feedback, the language chooser will not show for a localized build. For the regular build, it will show. These languages are via the API at and reflect any translations that are 100% for all three projects (wp/dev, wp/dev/admin, wp/dev/admin/network). Percent completion is checked periodically and language packs are then built.
  • (This is mainly for @pavelevap…) If you are not at 100% for all three projects, you may ask for me to manually trigger an incomplete language pack, for the purposes of being available in the language chooser. I’d rather not, though — this is API-driven and we can always get the language in there once you finish your translation.
  • Do not forget to 100% translate Akismet. There were no string changes in the default themes.

If you have any questions, please leave a comment, and @ocean90 or I will address them. If there is an urgent issue, please ping me in #wordpress-polyglots or #wordpress-dev.

#4-0, #announcement, #core, #release

You have about 14 hours to complete your…

You have about 14 hours to complete your translations for WordPress 4.0.

I’ve added one last string, “Release Lead,” for use on the credits page. If you were at 100% for 4.0, don’t worry, you have a language pack built already, but it’d be nice if you could translate this.

Please ensure you are 100% for wp/dev, wp/dev/admin, and wp/dev/admin/network. Currently 19 languages have done this (minus the new string).

pl_PL, he_IL, my_MM, and eu (Basque) are all at 100% for wp/dev but are not at 100% for the administration projects. Another 30 languages are at 90% or higher for wp/dev — so close!

WPLANG should be removed from wp-config-sample.php. If you have a custom wp-config-sample.php file in your SVN trunk/dist directory, please update it. See how German did it here.

If you are translating via SVN please make sure you are importing each of your PO files into, for language packs.

More launch day instructions to follow. Thanks for your patience. If you have any specific questions you’d like me to answer, please include them below so I can be sure to cover them in my instructions.

#4-0, #announcement, #core

WordPress 4.0 RC is out

WordPress 4.0 RC is out.

In a few hours I’ll be building new language packs for RC1 for any locale at 100% for the wp/dev project and all sub-projects (this includes the network admin). Each day as translations are completed, packs will be created or updated. We’ll work out some kinks over the next few days and hopefully have everything in order come September. Expect to hear more from me in the coming days and weeks as we begin a new journey. 🙂

@helen is targeting September 3 for release. The about page is done, help tabs are updated, and strings are frozen. You have one week to get everything in order, so good luck and happy translating!

#4-0, #core, #string-freeze

I’ve finally fixed a very broken translate wordpress…

I’ve finally fixed a very broken and pushed 4.0 to There are ~85 new strings, which you can now begin translating. (It should probably go pretty quickly.)

It’s safe to consider this a “string freeze” — with the exception of the about page, which will be finalized over the weekend.

#4-0, #announcement, #core

WordPress 3.9.2 is now available Please ship your…

WordPress 3.9.2 is now available. Please ship your packages. No string changes. (This may be the last time you have to do this!)


Internationalization goals for WordPress 4.0

Internationalization goals for WordPress 4.0

Hello all. Earlier today I published a post on make/core called Internationalization goals for WordPress 4.0. This of course affects you so I wanted to make sure you saw it and give you the opportunity to provide feedback. I am sure you will have questions as to how this will affect translation teams, which you can ask here if you’d like.

Let me outline the goals for WordPress 4.0. I’ll then answer what I anticipate will be some frequently asked questions.

  1. The first step installing WordPress should be to choose a language. The rest of the install process would then be in that language.
  2. You should be able to choose/switch a language from the general settings screen, after which the language pack should be downloaded.
  3. You should be able to search from the dashboard for plugins and themes that are available in your language.
  4. All localized packages should be able to be automatically generated and made available immediately as part of the core release process.
  5. Localized packages should only be used for initial downloads from Instead, language packs should be transparently used for updates.

Does this mean I will no longer need to create builds and releases?
That’s the idea. If at time of core release you are 100% translated, then I’d want everything to be packaged up automatically. Ideally, the Rosetta builder will go away entirely.

The builder will go away? But what about alpha/beta/RC releases?
We’ll make it possible to build these.

What if my locale doesn’t make any modifications?
Once this goes into effect, you won’t be able to make local modifications anymore. The whole process is being simplified. We’ll be retiring the ability to ship a {$locale}.php file or to add files to dist/. Future adjustments will need to go through WordPress core.

What if my locale currently requires local modifications?
We’re not going to make the experience worse for your users by preventing you from making these modifications. As I noted in the post, about 14 locales make changes that WordPress core will need to account for first, not including readmes, licenses, and the sample config file. This is going to be similar to my efforts in 3.4 to reduce the number of hacks you needed to make. Once your locale no longer requires modifications, legacy modification support will be disabled for your locale.

So, how are we going to translate readmes, licenses, and sample config files?
I don’t know yet. They will either continue to be done in SVN, incorporated into the Rosetta dashboard, or somehow imported into You won’t need to update the readme with each version, though; we’ll be sure of that.

Does this mean SVN won’t be needed anymore?
The idea is to simplify the entire process down to translation. You shouldn’t need to be a developer, or know how to use version control, or be awake to immediately push a build, or be responsible for issues like this.

What if I want to use SVN still?
I plan to drop support for building packages directly from SVN. This isn’t just simplifying the process. It will also drastically simplify the complex build system behind Rosetta (yes, the rest of it will be open-sourced) and improve maintainability. If you’re one of the three or so translation teams that make liberal use of SVN, I imagine we can work something out. (After all, GlotPress makes it easy to import PO/MO files.)

Will this eliminate the double-upgrade annoyances?
You bet. There will no longer be irrelevant “in English” warnings. Automatic background updates will “just work” without leaving you confused.

Do language packs mean I can fix a typo post-release?
Yes! Language packs for core WordPress releases will mean that updating the strings will be separated from updating the software itself. We don’t typically change strings in a point release because it slows you down in shipping a package (which is sometimes a security fix), but we might do that in the future with enough warning. And if you have a typo in a translated string, you could fix it whenever, and the language pack would simply be rebuilt and re-served to installs — no need to wait (or hope) for a point release.

This post mentions plugins and themes, but when is all of that coming?
Basic language pack support is live for a few select plugins (bbPress, BuddyPress, Akismet) and I expect to have a wider pilot program ready in the coming weeks. More details to follow, promise.

Nacin, you forgot about X!
The post and its comments mention a few things that aren’t going to happen for 4.0, like “Admin in English,” per-user languages, per-post languages. (We need to walk before we can run.) If something is missing that should probably be in 4.0, please mention it. Or if I over-simplified something in that post (as in, it doesn’t look like I accounted for how complex something is going to be to do), please enlighten me.

Bonus: How can I help build all of this?
Great question! I’ll be shifting tasks into tickets on both core and meta Tracs in the coming days. If there is something in particular you want to help with, please let me know.

#4-0, #announcement, #core

WordPress 3.9.1 is out There are no string…

WordPress 3.9.1 is out. There are no string changes.

You may have noticed the 3.9.x project in is not yet functional, due to some ongoing GlotPress development work. (You’ll find it doesn’t work.) The “wp/dev” project is frozen to the 3.9 branch and is the proper project to use.

With regards to SVN: there is a core 3.9.1 tag already created, so no revision number is necessary, though the proper revision to use is 28182.

3.9.x releases will be the last set of releases with all of these hoops to jump though. It’ll be made much easier in the coming few weeks/months.

Thanks all and happy translating.

#3-9, #core, #release

WordPress 3.9 is being released soon.

WordPress 3.9 is being released at 1700 GMT, or about 10 hours from now.

I’m sorry you didn’t get more lead time on a few strings. I recognize there has been some string flux over the past week, as a result of the about page, some strings that had gone untranslated accidentally, etc. Just wanted to say I know how much time you put into these and thanks for all you do.

After 3.9 I’ll be spending a few weeks working primarily on localization and internationalization, so expect some exciting things. 🙂

#3-9, #core, #release

Hello everyone Akismet 3.0 is going to be…

Hello everyone. Akismet 3.0 is going to be released really soon. If you complete the translation of it here then users using WordPress in your language will be eligible for a language pack on update.

It’ll likely be released within an hour or so, but please please please treat these as core strings, as Akismet 3.0 is shipping with WordPress 3.9 tomorrow!