Welcome to the official blog of the translator team for the WordPress open sourceOpen SourceOpen Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. project. This is where we discuss all things related to translating WordPress. Follow our progress for general updates, status reports, and debates.
We’d love for you to help out!
Translate WordPress
You can help translate WordPress to your language by logging in to the translation platform with your WordPress.orgWordPress.orgThe community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/ account and suggesting translations (more details).
We have meetings every week on SlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. in polyglots (the schedule is on the sidebarSidebarA sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. of this page). You are also welcome to ask questions on the same channel at any time!
Posting here
In order to post to this site, you will need to log in with your wordpress.org account. Your first post may take a while to show up, as it is moderated. Please follow our tag policy when posting.
In the WordPress administration interface, there are various messages that must be translated. Some of these messages are seen frequently, while others are only seen occasionally. Each of these message types are documented below, along with examples.
Labels are often used in the context of HTMLHTMLHTML is an acronym for Hyper Text Markup Language. It is a markup language that is used in the development of web pages and websites. <label>, <legend>, <a>, or <select> tags. They are short and precise descriptors of the purpose of a UIUIUI is an acronym for User Interface - the layout of the page the user interacts with. Think ‘how are they doing that’ and less about what they are doing. element. These can be very difficult to translate at times, especially if they are single words, and if the word used in English can be interpreted as either a noun or imperative verb. With most labels you will need to do some searching through the code to find the context of its use before coming up with an appropriate translation.
Because so many of the messages are part of the WordPress administration interface, Labels are probably the most frequent type of message to translate.
“Post” could be interpreted as an imperative verb, but in this context it’s a noun. The noun form of “post” in English can be difficult to translate, and the most appropriate translation has been difficult for some teams to decide upon. Many translations use their language’s equivalent to the English “Article,” as the one below, from the Finnish (Finland) translation does.
msgid "Post"
msgstr "Artikkeli"
Another example of a label is seen here, from the Hindi translation.
Labels with surrounding dashes, as in the example below (from the Welsh translation), can be eliminated or replaced if they might be confusing to users in your target localeLocaleLocale = language version, often a combination of a language code and a region code, for instance es_MX denotes Spanish as it’s used in Mexico. A list of all locales supported by WordPress in https://make.wordpress.org/polyglots/teams/, or if there are different established conventions for your locale.
Informational message are usually composed of full sentences. They convey information or request an action from a user. Since these tend to be longer than labels, they tend to be slightly easier to translate. However, with the longer messages comes more variation in the level of formality (or informality), which is something translators need to be aware of.
In the example below – from the Bulgarian translation – the information message contains a modified English formulaic expression (“the check/cheque is in the mail”), which contributes to its informality.
#: wp-login.php:146
msgid "Your new password is in the mail."
msgstr "Вашата нова парола е в електронната ви поща."
Error messages tend to be more formal, simply because they’re short and concise, as seen in this example from the Swedish translation.
Of course, not all error messages are formal in the WordPress interface. The below example, from the German translation, shows an error message with an informal tone.
#: wp-includes/functions-post.php:467
msgid "Sorry, you can only post a new comment once every 15 seconds. Slow down cowboy."
msgstr "Leider kannst du nur alle 15 Sekunden einen neuen Kommentar eingeben. Immer locker bleiben."
If a stringStringA string is a translatable part of the software. A translation consists of a multitude of localized strings. contains a vertical bar |, the part on the right of | is a description. Its purpose is to help you translate the string, placing it in certain context or providing additional information.
Rather than using PHPPHPPHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. http://php.net/manual/en/intro-whatis.php.’s built-in locale switching features, which is not configured properly for very many languages on most hosts, WordPress uses the gettext translation module to accomplish date and time translations and formatting.
WordPress translates all of the following date and time settings.
Note the unusual msgid in the example above. These messages should not be translated literally. The msgid here is a hack that is used because the full name and abbreviation are the same in English and Gettext would erroneously combine the two into one entry. (From the Italian translation.)
The weekday initials are for WordPress’s calendar feature, and uses the same hack as the month abbreviations above to get around the fact that in English Tuesday and Thursday share the same first letter. Not all localesLocaleLocale = language version, often a combination of a language code and a region code, for instance es_MX denotes Spanish as it’s used in Mexico. A list of all locales supported by WordPress in https://make.wordpress.org/polyglots/teams/ use single-letter abbreviations for all days. In the example above, Norwegian Bokmål uses an extra letter to distinguish tirsdag (Tuesday) and torsdag (Thursday).
These are PHP date() formatting stringsStringA string is a translatable part of the software. A translation consists of a multitude of localized strings., and they allow you to change the formatting of the date and time for your locale.
WordPress uses the translations elsewhere in the localizationLocalizationLocalization (sometimes shortened to "l10n") is the process of adapting a product or service to a particular language, culture, and desired local "look-and-feel." file for month names, weekday names, etc. This special string is for the selection of which elements to include in the date & time, as well as the order in which they’re presented.
Take this msgid from the theme.pot filePOT filePOT files are the template files for PO files. They will have all the translation strings left empty. A POT file is essentially an empty PO file without the translations, with just the original strings.:
To translate a date, e.g. inside your pluginPluginA plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party, use mysql2date() or date_i18n(). Your date will be returned in localized format, based on the timestamp.
Many messages contain special PHP formatting placeholders, which allow the insertion of untranslatable dynamic content into the message after it is translated. The PHP placeholders come in two different formats:
%s: used when only one placeholder is present. %1$s, %2$s, %3$s, …: numbered placeholders, which enable translators to rearrange their order. This allows for more flexibility in the translated string while ensuring the dynamic content will still be inserted in the right places.
In the example below – from the Spanish translation – the message inserts the username of the user to which an email has been sent.
#: wp-login.php:116
msgid "The e-mail was sent successfully to %s's e-mail address."
msgstr "El e-mail fue enviado satisfactoriamente a la dirección e-mail de %s."
Whereas, the example below – from the Chinese translation – uses numbered placeholders and reverses the order in which the filename and type are used.
#: wp-admin/upload.php:96
#, php-format
msgid "File %1$s of type %2$s is not allowed."
msgstr "类型为%2$s的文件%1$s不允许被上传。"
Stop words are very common words that should be excluded from a search, like ‘a’, ‘the’, and ‘and’. You should not simply translate these individual words into your language. Instead, look for and provide commonly accepted stopwords in your language.
Notes:
WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.’s comparison algorithm for stop words is looking for exact matches, so if your language makes use of diacritic marks, be sure to include all possible variation of a stop word in the list (e.g “pravé” and “právě”).
There’s no need to add single letter stop words (if those letters are in the A-Z range).
#: wp-includes/query.php:2031
msgctxt "Comma-separated list of search stopwords in your language"
msgid "about,an,are,as,at,be,by,com,for,from,how,in,is,it,of,on,or,that,the,this,to,was,what,when,where,who,will,with,www"
msgstr "le,la,les,de,des,un,uns,une,unes,et,a,à,il,elle,on,ne,je,tu,nous,vous,ils,elles,son,sa,ses,que,quoi,se,qui,ce,cette,dans,en,du,au,aux,pour,pas,sur,y,ou,où,si,ton,ta,te,mon,ma,tout,toute,tous,toutes,ça,ni,www,com,fr,par,sur,par,dans,mais,vos,votre,vôtre,sans,toi,moi,lui,leur,leurs"