Blog

Translating WordPress.com in 2018

Happy new year! It’s time to look back at our translation community’s wonderful achievements during the past year and to thank everyone who contributed.

Year in Review 2018 cover image

In 2018, 1,987 WordPress.com community volunteers contributed 66,343 strings in 104 languages, bringing the total number of translations to 247,800.

You all put in so much time and effort to make our service available to more users around the world. We know that it’s not always easy to translate English messages and labels to your language, so we want to thank you for your sharing your skills, creativity, and hard work with us and other users.

Notable mentions

We are so happy to see both new faces and veteran contributors, and want to highlight the work of a few notable volunteers.

  • Parvez Qadir for leading the Saraiki translation project on WordPress.com
  • Dan Caragea for his help with reporting several bugs and missing parts while keeping Romanian translation up-to-date
  • Fredrik for bringing Swedish translation into higher active levels in the last year
  • Armuti for delighting Chuvash bloggers and site builders
  • Luciano Croce (Luçiâno Lóccy Crôxe) for contributing to the most number of locals (en-gb/fr-be/fr-ca/fr-ch/it/pt)
  • justina33 for generously extending his Lithuanian translation efforts to Jetpack and WooCommerce projects
  • Dandelion Sprout for perfecting Norwegian translation
  • bujku for making Gravatar.com fully available in Albanian
  • Ken Ken for providing translations of several WordPress.com themes in Chinese (Hong Kong)
  • The Polytonic Project for their passion in preserving Polytonic Greek language and keeping it alive

Locales with most volunteer activity

Here are the top 10 movers of 2018:

  1. Saraiki
  2. Swedish
  3. Romanian
  4. French
  5. English (UK)
  6. Bulgarian
  7. German
  8. Spanish
  9. Norwegian
  10. Dutch

Get involved

Would you like to be part of the translation community? Head over to translate.wordpress.com to find out how you can get started.

Current community translators can also request to become validators. Find out more in the FAQs.

Fireworks icon credit: EmojiOne

Improved Filter Functionality

The filter functionality in GlotPress has been a helpful way to search for strings in GlotPress. You can use filters to find out how a specific term is translated or to find a translation string you would like to improve. Filters give you the possibility to search through our entire repository of WordPress.com strings and translations. You can even find strings you have translated by filtering by a user.

While filters can be useful when translating, sometimes the filtered results are too large and don’t yield the results you were expecting. This would force you to scroll through several irrelevant strings to get to the right one.

We have now added the possibility to narrow down the scope of the search.

Screen Shot 2018-12-19 at 5.26.19 PM.png

Under the “Term” field, you will see Term Scope options. Here you can choose whether you want to search for the term in the English Source (select Originals only) or the Translations (select Translations only). You can also search the context or string reference.

This can be used in many ways to improve your translation or validation workflow. For example, if you want to know how a feature name has been translated in your language, you can search for “originals only”. This will pull up every instance of the feature name. You can then check how it was translated across all strings in your language. If you want to change the translation of a term that has been translated inconsistently, you can filter for the “wrong” translation by “Translations only” and update the translation.

Have a look around! Try filtering for some terms or phrases. Maybe you will find other uses for the improved filters!

New Feature: Easy Placeholder Insertion

We have added a new feature to GlotPress to ease the handling of placeholders during translation!

Placeholder tags have long been a pain point for translators and validators in GlotPress. If a placeholder appears in the source string, the exact same placeholder must appear in the translation. To enter these into your translations, you would previously have to copy the placeholder from the source string and paste it into the correct place in the translation or manually enter the placeholder into the translation.

Now you can add placeholders while translating by simply clicking on the placeholder from list below the translation field. The placeholder will automatically be placed where your cursor is located.

glotpress-variables2.gif

Placeholders that are missing from the translation are shown in red. Once you insert the placeholder into the translation, it will turn green.

With this new feature, you no longer have to worry about typos in the placeholder text or errors copying partial tags! Additionally, you can easily edit fuzzy strings when only the placeholders have changed. We hope this new feature is helpful to you!

Translating WordPress.com in 2017

2017 was a terrific year for translate.wordpress.comAnother year, another gargantuan effort by the tireless WordPress polyglot community (all 2,941 of you!).

In 2017 community volunteers contributed 69,089 strings in 109 languages, bringing the total number of translations to 299,374 – a 34% increase since 2016.

Thanks to their work translating labels, tooltips, settings, editor buttons, headings, help text, themes and hundreds of other categories over more than 30 projects, there are now more happy WordPress.com users than ever.

Notable mentions

All community volunteers deserve kudos/multiple hugs/pats on the back. Still, there are a few to whom we’d like to give a digital fist bump for being among our most active contributors this year.

  1. armuti for giving 1.6 million Chuvash speakers the gift of WordPress.com
  2. Ken Ken for performing the Hong Kong/Taiwan Chinese double-whammy
  3. Dandelion Sprout for devotion to the delightful Norwegian language
  4. Dan Caragea: Romanian maintains its position as the most highly translated language of the year 🙂
  5. gorskimoz, for whom countless speakers of Slovenian are grateful
  6. justina33, who came out on top in the WordPress.com UI vs Lithuanian challenge
  7. taqbaylitassa for enriching WordPress.com with exquisite Kabylian syllables
  8. DelphiKnight for demonstrating great chivalry in Georgian. Thank you, O Knight!
  9. Muhammad Farhan Danish, whose translations grace the screens of all Urdu-speaking users
  10. వీవెన్, for the continuing contributions to Telugu, a language spoken by a whopping 75 million people!

Locales with the most activity

Here are the top 10 movers of 2017:

  1. Chuvash
  2. Norwegian
  3. Chinese (Hong Kong)
  4. Romanian
  5. Slovenian
  6. Urdu
  7. Icelandic
  8. Telugu
  9. Lithuanian
  10. Afrikaans

Thank you!

The amount of translations and projects is forever climbing, and so is the number of WordPress users who, in their own languages, are delivering new ideas to the universe.

To those we didn’t mention – you know who you are – we bow to you. Language is the bridge to a better internet and better world, and your work has a direct and positive impact on the experience of millions of bloggers. Thank you for helping us make WordPress.com awesome for everyone.

We wish you all a fabulous 2018. Here’s to an even more successful year of polyglotism. 🙂

The community needs you

Would you like to contribute your linguistic knowledge to the biggest blogging community humankind has ever known? Great! Head over to translate.wordpress.com to find out how you can get started.

Current community translators can also request to become validators. Find out more in the FAQs.

New Features for Validators: Locale Glossary, Set as Fuzzy

With the recent upgrade, we have two useful new features for validators.

Locale Glossary

Building a robust glossary for your locale is crucial for a successful translation project. From now on, WordPress.com project validators can build a locale glossary shared across all translate.wordpress.com projects.

This means that translators no longer have to look up terms on the project glossary for WordPress.com while translating themes or any other projects.

russian-theme-translation-with-tooltip
Locale glossary term is shown while translating a theme

Validators can start building their locale glossary by importing an existing set of terms and translations*. For more information, check out this documentation.

* If you had a project glossary for the WordPress.com project, we’ve already migrated it to a locale glossary. You can find the new location on this list.

Set Current Translation as Fuzzy

Have you had a time when you wanted to change the status of an already approved translation from “Current” to “Fuzzy” while validating? Now validators can click the “Fuzzy” button on a questionable translation to mark it as not Current and come back to it later.

fuzzy-button

Until a new translation is approved and set as Current, Fuzzy items will become untranslated after a translation deploy**.

** Translation deploys happens irregularly for all projects except for the themes, which has scheduled deploys once a day after a completion threshold is met.

Special Thanks

These updates were made possible by everyone who contributed the release of GlotPress 2.3, the open source software behind translate.wordpress.com. Thank you!

translate.wordpress.com in 2016

Happy New Year!

2016 was a busy year on translate.wordpress.com, the translation platform of Automattic projects. For the first time, we are sharing some stats about the past year.

Numbers of Translators, Translations, and Locales

3,250 community volunteers translated 61,676 strings into 107 languages, resulting in 225,806 translations.

Most active users

These top 10 translators suggested the most translations across all projects.

  1. Dan Caragea (Romanian)
  2. Vijaya Madhavi (Hindi)
  3. Satnam S Virdi (Punjabi)
  4. Mariozo (Latvian)
  5. Manuela Silva (Portuguese/Portugal)
  6. Muhammad Farhan Danish (Urdu)
  7. Amreen (Urdu)
  8. justina33 (Lithuanian)
  9. gwgan (Welsh)
  10. cubells (Catalan)

top-wpcom-translators-2016.jpg

Most active locale teams

And congratulations to the locale teams that made the most progress this year.

  1. Romanian
  2. Hindi
  3. Urdu
  4. Latvian
  5. Punjabi
  6. Portuguese/Portugal
  7. Italian
  8. Icelandic
  9. French
  10. German

Number of active projects

translate.wordpress.com is not just for WordPress.com UI. Currently, there are 22 active projects (This number doesn’t include 399 WordPress.com themes).

We added 14 new WooCommerce-related projects this year.


We would like to thank everyone who helped us reach out to users around the world who speak languages other than English. Your effort makes it possible for more people to have a voice of their own.

We look forward to bringing you better support in translating WordPress.com and beyond this year!


Alex, Hew, Julian, Naoko, and Yoav of Team Global

Translating Almost Entire WordPress.com in Romanian: Story of Dan Caragea

For quite a while, either Japanese or Brazilian Portuguese had been the most translated locales of WordPress.com. Other locales closest to the 90% completion threshold were French (France), German, Spanish (Spain), and Swedish.

But today, 98% of WordPress.com is translated to Romanian with the highest percentage than any other locales.

wpcom-translation-status
WordPress.com translation project completion status

We were amazed to see the fast progress of the Romanian translation project and found out that Dan Caragea (dancarageact62) has been hard at work. On his own, he translated astonishing 23,613 strings this year. His contribution also includes WordPress.com themes and other projects.

I had a chance to ask Dan a few questions.

dan-caragea-romanian-translator
Dan Caragea, Romanian translation contributor

What made you decide to work on WordPress.com translation?

I noticed that Romanian WordPress.com translation project was stagnant for a while, even though it’s a platform very much used in my country. On the other hand, I realized that there are quite a few strings fetched directly from WordPress.com on my self-hosted WordPress site such as Jetpack related sections (I’m also one of Global Translation Editors of WordPress.org Romanian).

I began to translate on translate.wordpress.com but nobody validated my translations, so I asked to become a validator and started doing it alone.

Any tips you want to share with fellow translators?

No tips, just hard work, with a daily goal. It was maybe a personal bet: Romanian translation to have a share of over 90% by the end of year.

But to my joy, I reached the target earlier with a percentage that I never imagined when I started.

What do you use WordPress for?

Now I use a self-hosted WordPress for my blog.

dan-caragea-blog
Dan’s blog

We would like to congratulate Dan for achieving an impressive milestone. He inpired us by showing that dedicated hard work and setting small (daily) goals can make a big difference over time.


Would you like to help us translate WordPress.com into your language? Learn how to get started!

Context vs. Comment

While this post is intended for developers, it gives high level explanations of the concepts of contexts and comments which might be interesting for everyone who deals with translation of software.

Making original strings easier to translate

When creating code with translatable strings, developers might want to help translators by providing an explanation for the string.

Maybe they also know that translators are commonly presented just with the translatable string. They cannot see any adjacent code, and thus no variable names or other helpful pieces of surrounding text.

It turns out that there are two spots where additional information can be added to a string: via the second parameter of _x(), or with a /* translators: */ comment (or the context resp. comment parameter of translate()).

Let’s start with the takeaway message first: don’t use context, use a comment.

That sounds quite rigid but brings it to the point. To understand why, let’s look at what context actually is and when it’s used.

Context – oh, at that spot you need to have it translated differently? We can do that!

Practically speaking, every translation requires knowledge of the context of the original string, and translators will commonly ask for it (for example through a screenshot). You could call context the whereabouts of a string.

To correctly translate a string, it can make a big difference what’s shown next to it. Yet, we encourage our developers not to add context when they first create a string. Why?

It’s in the developers nature to reuse things, and we also want to foster reuse: if a string is used in new code that already has been translated before, then consequently there is less work for translators and that part of the new UI is already localized.

When the already translated string has a context, the new string needs to have the exact same context so that the translation can be reused.

So doesn’t the advice to not specify context commonly create problems with wrong translations in some places?

Surprisingly, it doesn’t happen too often. Most of the times the same string is used in different locations with the same meaning.

Occasionally–commonly true for one-word strings–English is less precise than other languages and it turns out that the use of a word in position A needs to be translated differently than when it’s used in position B.

comment-button-headline.png
Is “Comment” used in a headline or on a button?

That’s when a translator will ping the developer and show them the two places where the English original string needs two different translations. They’ll agree on a useful context for one (or sometimes both) of the strings which will in turn help the translators of other languages.

The agreed upon context will then be added using _x() (or the context parameter of translate()). Technically speaking, displaying a translation is done with a hash lookup, so both context and string are used for the lookup and therefore enables two separate translations.

As shown by the process above, a developer cannot judge whether the string will require more than one translation when it’s created. Consequently, a context should only be added upon request from translators, when they find that two (or more) separate translations are necessary.

The benefit of reusing more translations outweighs the extra effort to add context retrospectively.

Multilingual developers might already know that a string will need context when they create it, and we don’t want to prevent them from doing so. Just remember that we want to reuse existing translations, it is important to check if the string is already in our GlotPress with the right meaning.

In practice, simply leaving it without context is the easier route. The developer is trying to solve a different problem in the first place.

Comment – explain the original string for translators

We have spent a lot of time explaining context above but let’s come back to the start: developers want to help translators to find the right translation quickly!

The number one thing translators need explained is the variables that are used.

Remember that translators only see the translatable text. They don’t see variable names, they don’t see the code section or function name (for open source software there commonly is a code reference that can be used to look it up but translators cannot be expected to read code).

This is what such a comment looks like in code: (the comment must appear in the previous or actual line)

/* translators: %1$s: domain name, %2$s: date of renewal, %3$s: bundle name */

$body = __( 'The domain %1$s was last renewed on %2$s as part of %3$s.' );

Despite explaining variables being the most common use, any other explanation to translators is highly appreciated. Especially links to screenshots!

Comments don’t affect the lookup of strings. Multiple comments from different locations around the code will be concatenated, and might indicate to translators that a context might be needed to differenciate them.

Context – an example where it’s needed

This has all been very theoretical, so let’s conclude this post with a practical example of where context is required.

Let’s look at the string “Add New”. There are several occurances of it in the sidebar of the WordPress dashboard, where “Add New” can be a submenu item of “Posts” or “Media”.

add-new-wp-admin.png
“Add New” in two different submenus

For translating to Spanish it’s important to know what it actually is that’s going to be added because of the gender of the (imaginarily) following word.

So here, _x('Add New', 'post') and _x('Add New', 'add new media') have been used to allow translators to have different translations in Spanish and other languages (in the screenshot the grey box is the context):

add-new-spanish.png
Context allows for different translations of the same string

You can also see that context has been given to strings that do have the same translation in Spanish. That’s because other languages have differences in those cases.


Hopefully with this post we were able to provide you with a better understanding of the two methods for providing translators with additional information, feel free to ask further questions in the comments.

You might also want to take a look at the i18n quiz on developer.wordpress.com for more details around code and translation.

Welcome to WordPress.com Translation Resource Site

Since 2006, translate.wordpress.com has been serving its purpose as a collaborative translation platform for generous and enthusiastic volunteer translators.

Today, we are happy to share the brand-new section of this site with you. We’ve reorganized documentation, added this blog, and made it easier to find the information you need.

Screenshot of translate.wordpress.com homepage

Where did the translation projects go?

You can visit the “Project” section to view the page you used to see when you visited this domain. All of the functions of the translation tool stay the same, with the addition of footer links to the new translation resource pages.

Happy translating!