Previewing patterns during translation

When you see the stringsString A 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:

  • Go to the patterns page in any language.
  • Click on the link of a pattern to see the live preview.
  • Add the &pattern_preview=true text at the end of the URLURL A 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.

#improvements

Proposal: pre-translating strings in projects

In the first release, this proposed functionality will be only available for validators (GTEGeneral Translation Editor A 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 Editor A 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 Editor A 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 APIAPI An 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 validatorValidator See translation editor., to pre-translate a number of stringsString A 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

#improvements, #proposal

A link to OpenAI and DeepL config from the TM

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 APIAPI An 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.

#improvements, #tm, #translation-memory

Adding error checks at translate.wordpress.org

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 deployedDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. two PR:

  • The first PR in GlotPressGlotPress GlotPress 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 coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.:

The first check adds an error for unexpected timezone stringsString A 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.

#improvements

Bulk updates in the Translation Consistency

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 correct translation: Continuar (63 times).
  • 1 incorrect translation: Continúe (formal version, 23 times).
  • 1 incorrect translation: Seguir (Incorrect word, 9 times).

A GTEGeneral Translation Editor A 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 stringString A 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.

#improvements

New translation memory (TM) tab in the right sidebar

We have just added a new tab in the right sidebarSidebar A 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.

#improvements, #tm, #translation-memory

Some updates at translate.wordpress.org

We have added some small updates, and I want to share them with you.

External APIAPI An 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.

#improvements

Components into tabs in the right sidebar

We have just deployedDeploy Launching 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 sidebarSidebar A 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:

  • MetaMeta Meta 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 localeLocale Locale = 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 localesLocale Locale = 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.

#improvements, #sidebar, #tabs

Virtual projects for the patterns project

We have just deployedDeploy Launching 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 stringsString A 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 filterFilter Filters 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 GlotPressGlotPress GlotPress is the translation management software that powers Translate.WordPress.org. More information is available at glotpress.org. functionality.

#improvements, #patterns

The feedback tool

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 Editor A 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 Editor A 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 Editor A 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 validatorValidator See translation editor. makes a bulk rejection or rejects, approves or sets as fuzzy a single stringString A 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 pluginPlugin A 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 filterFilter Filters 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 stringsString A 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:

  1. Click on the hamburger icon.
  2. Click on the “Discussion” link to open the discussion page in the same tab.
  3. 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:

  1. A filter.
  2. The feedback comment.
  3. The comment reasons.
  4. 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 localesLocale Locale = 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 localeLocale Locale = 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.

And at the bottom of the form, you can:

  • Opt-in/opt-out for the current discussion.
  • Opt-in/opt-out globally in the discussions.

#feedback, #improvements