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.
When you see the stringsStringA string is a translatable part of the software. A translation consists of a multitude of localized strings. to translate in a pattern, you don’t have a live preview to be able to see the strings in context.
We have added a new preview for the patterns.
This is a testing functionality, so if you want to test it to give us feedback, you need to:
Add the &pattern_preview=true text at the end of the URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org. You can test here the previous link with this parameter.
We need your feedback to improve this tool before releasing to the whole community.
In the first release, this proposed functionality will be only available for validators (GTEGeneral Translation EditorA General Translation Editor (often referred to as GTE) is a person, who has global access to validate strings on all projects for a specific locale./PTEProject Translation EditorA Project Translation Editor (often referred to as PTE) is a person, who has access to validate strings on a specific project (for example BuddyPress, WooCommerce or Twenty Fourteen) for one specific locale. A project translation editor can approve strings that are added by translation contributors. Per project translation, editors are appointed by a general translation editor after a request by the project author or by the contributors themselves./CLPTECross-locale Project Translation EditorA Cross-Locale Project Translation Editor is an account owned by a plugin or theme author (or the authoring organization), which uses professional translators to localize their product. The cross-locale project translation editor can import/validate strings on a specific project for more than one locale. This role has the same capabilities as a Project Translation Editor over multiple locales instead of one. Cross-Locale Project Translation Editors need to meet a set of criteria before being appointed by General Translation Editors.).
In the last months, we have added some translations helpers, using the APIAPIAn API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. from DeepL and OpenAI (ChatGPT), to improve the translation speed and its quality.
Now, I want to propose to create a new functionality, only available to validatorValidatorSee translation editor., to pre-translate a number of stringsStringA string is a translatable part of the software. A translation consists of a multitude of localized strings. for a project. The validator will select:
The number of strings to pre-translate.
The source for the translation: our TM, DeepL or OpenAI.
The new translations will be in waiting status, so this validator, or another one, will have to review the waiting translations and approve or improve them.
I am proposing this new functionality to be only available to validators to avoid a lot of extra work for them.
Please, can you share your thoughts, impressions, feelings, improvements, … about this? Thank you
A lot of translators don’t know that we have a translation memory help, using the translations proposed by OpenAI and DeepL. To give it more visibility, I have just added a link to the OpenAI and DeepL configuration and another link to the post with a more detailed explanation.
This link only appears if the translator has not entered any APIAPIAn API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. key in the settings area.
We have some situations where we don’t check some translations or if we check it, we return a warning, that can be dismissed by the translator, so the translators can add incorrect, and sometimes, dangerous translations. To prevent these situations, we have deployedDeployLaunching code from a local development environment to the production web server, so that it's available to visitors. two PR:
The first PR in GlotPressGlotPressGlotPress is the translation management software that powers Translate.WordPress.org. More information is available at glotpress.org., to check the incorrect placeholders. This is a generic check, so it will be useful in any installation.
The second PR at translate.wordpress.org, with 4 checks specifically designed for the WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.:
The first check adds an error for unexpected timezone stringsStringA string is a translatable part of the software. A translation consists of a multitude of localized strings..
The second check adds an error for unexpected start of week number.
The third check adds an error for unexpected slug format.
The fourth check adds an error for unexpected timezone date format.
You have a depth explanation in both PR.
If you think it could be interesting to add more generic checks in the GlotPress core or specific checks for the WordPress core, please, add these suggestions in the comments. Thank you.
We have a consistency tool to look for the translation consistency in the projects translated to one language.
A lot of times the users find a big chunk of incorrect translations, and to resolve them, they have to edit by hand one by one. It is a hard work. E.gr., in this example, where I check the “Continue” translation to Galician language, we have:
1 incorrect translation: Seguir (Incorrect word, 9 times).
A GTEGeneral Translation EditorA General Translation Editor (often referred to as GTE) is a person, who has global access to validate strings on all projects for a specific locale. will update the second and the third translation, but to do this, she should do 32 different edits: one by each incorrect translation.
Improvement
I propose to do a tool, only available for the GTEs, to bulk update this words, with a simple form:
Original stringStringA string is a translatable part of the software. A translation consists of a multitude of localized strings.: The original string to look for. We will look for the whole string ans the form will have a checkbox to make it case-sensitive.
New translation: If some translation for the original string have a different translation, the translator and the timestamp will be updated.
Language: The GTE will only be able to update translations for her language.
Project. All the projects or only one of the root projects.
With a few clicks and the translation, we will be able to update all the incorrect translations easily.
To avoid incorrect updates, the new translations will be in waiting or fuzzy status and could have a comment, explaining that this update was made by one GTE in a bulk update. One GTE will have to review them in the waiting queue.
We have just added a new tab in the right 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. with the content we already have in the translation memory, in the bottom of the row. The main purpose of this new tab is to avoid having to scroll to access the current TM. The current TM remains as you already have, and we do have short-term plans to remove it.
Another improvement added is to remember the last tab opened in a row, so you will have the same tab opened in the next row you will open.
And we have resolved a bug we have that sometimes produced the same request to the OpenAI and DeepL APIs a few times in the same translation.
We have added some small updates, and I want to share them with you.
External APIAPIAn API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. key checking
When you add your OpenAI API or your DeepL API in your translation settings, the system shows you if these are correct or not.
Don’t use the external API if the TM suggestion has 100% of accuracy
If you have a suggestion from the translation memory (TM) with 100% of accuracy, the system will not get info from OpenAI neither from DeepL, to avoid consuming API credits.
If you don’t have a suggestion from the translation memory (TM) with 100% of accuracy, the system will get info from OpenAI and from DeepL.
Copy the suggestion from TM if the TM suggestion has 100% of accuracy
This functionality has been temporally disabled.
If you have a suggestion from the translation memory (TM) with 100% of accuracy, the first suggestion is copied automatically to the translation textarea.
We have just deployedDeployLaunching code from a local development environment to the production web server, so that it's available to visitors. an update to add some components into tabs in the right 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 each translation:
MetaMetaMeta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress., with the current information.
Discussion, with the discussions for this original.
History, with the history for this original in the current 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/.
Other 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/, with the translation in other locales.
We have increased the maximum content width from 1200 px. to 1600 px. You can see all the improvements, with screenshots, in the PR.
We have just deployedDeployLaunching code from a local development environment to the production web server, so that it's available to visitors. an update to create one project for each pattern.
Previously, when a translator translated the patterns, all the stringsStringA string is a translatable part of the software. A translation consists of a multitude of localized strings. were under the same project, so she couldn’t focus in translating one pattern easily.
Today we updated this functionality, creating “virtual projects” for the patterns, so each pattern has its own project. This approach try to improve the individual translation for patterns.
Limitations
This approach has some limitations:
The virtual projects are alphabetically ordered.
The search and the filterFilterFilters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. are not working.
If this approach improves the work of the translators, in the future we will consider to really split the patterns in subproject, so each pattern will be one subproject, and they will be able to use whole GlotPressGlotPressGlotPress is the translation management software that powers Translate.WordPress.org. More information is available at glotpress.org. functionality.
This tool is a working in progress. Some of the functionalities described here could have been changed.
Last months we were working on a new expected functionality, the feedback tool. This tool improves the communication between the translators, developers and validators (GTEGeneral Translation EditorA General Translation Editor (often referred to as GTE) is a person, who has global access to validate strings on all projects for a specific locale., PTEProject Translation EditorA Project Translation Editor (often referred to as PTE) is a person, who has access to validate strings on a specific project (for example BuddyPress, WooCommerce or Twenty Fourteen) for one specific locale. A project translation editor can approve strings that are added by translation contributors. Per project translation, editors are appointed by a general translation editor after a request by the project author or by the contributors themselves., CLPTECross-locale Project Translation EditorA Cross-Locale Project Translation Editor is an account owned by a plugin or theme author (or the authoring organization), which uses professional translators to localize their product. The cross-locale project translation editor can import/validate strings on a specific project for more than one locale. This role has the same capabilities as a Project Translation Editor over multiple locales instead of one. Cross-Locale Project Translation Editors need to meet a set of criteria before being appointed by General Translation Editors.), so the translation process can be more agile, sending feedback through email to the different people involved in a translation.
In this post, I am going to talk about:
Opt-in to receive notifications.
Single feedback on approve, reject or fuzzy.
Bulk feedback on reject.
Discussions.
Opt-in notifications
The tool sends some email notifications. The notifications are opt-in. To receive it, you have to opt-in here.
These are the notifications the system sends:
The translator will receive a notification when a validatorValidatorSee translation editor. makes a bulk rejection or rejects, approves or sets as fuzzy a single stringStringA string is a translatable part of the software. A translation consists of a multitude of localized strings. or when a validator replies to one of her comments.
The developer receives a notification when someone asks something around a “typo in the English text” or request more context for the translation.
The GTE/PTE/CLPTE will receive a notification when someone replies to a notification she made before or when someone asks something related with her language and/or 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.
The email subject is “New comment in a translation discussion” and the email content is similar to this one:
Single feedback
When a validator (GTE, PTE or CLPTE) is reviewing a suggested translation, she can approve, reject or mark as fuzzy the current translation, as we have been doing so far. But we have added a new element, the “Give feedback” tool.
If you click on the text marked on the next image:
You will see some checkboxes where you can select a feedback type and a comment. Both fields are optional, so you can approve, reject or mark as fuzzy the current translation without adding feedback to this action.
If you select one checkbox and/or write some comment, you will see how the “Reject” button will change to “Request changes”, because if you click in this new button:
The translator will receive a notification with the feedback.
The translation will be in a new status: “Changes requested”.
Once you click on this button, you will see the translation with this new status (changes requested), and you can see this filterFilterFilters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. in the top bar.
You can also see this new status in the advanced filter:
This new status has its own color: light blue. You can see it in the next image, in a “changes requested” row and in the legend, at the bottom.
You can add feedback when you approve or mark as fuzzy one string.
Bulk feedback
As validator, you can also give feedback in a bulk rejection. To do this, you have to:
Select the translations to which you want to give feedback.
Select the “Reject” status.
Click on the “Apply” button.
Once you click on this button, you will see a new form, similar to the one you have in the single feedback tool. If you click on the “Reject” button, you will reject both stringsStringA string is a translatable part of the software. A translation consists of a multitude of localized strings., as usual.
But if you select some reason and/or you made some comment, the “Reject” button will change to “Request changes”.
Once you click on the “Request changes” button, you can see these 2 strings in “changes requested” status.
You can’t add feedback when you bulk approve or mark as fuzzy some strings.
Discussions
There is a discussion page for each original where you can find all discussions about it.
To access to the discussions for an original, you have to:
Click on the hamburger icon.
Click on the “Discussion” link to open the discussion page in the same tab.
Click on the arrow image to open the discussion page in a new tab.
In the “Discussions” page, you can get this information for an original string:
A filter.
The feedback comment.
The comment reasons.
A button to reply to this comment.
You can have a lot of comments with replies, similar to a page in a forum.
You have a new tab with the translation history.
And another tab with the translation in other 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/, so you can get some inspiration for your 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/.
At the bottom of the page, you have a form to open a discussion to:
Notify developers (if opted-in):
A typo in the source.
Requesting more context, because the source doesn’t have enough information.
Notify validators (if opted-in) with a question related with your language.