New “Bad Quality (AI?)” checkbox for the “changes requested” status

Some 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. are reviewing massive translations made with automatic translation tools, mainly with AI powered tools, without further review by the translators.

This improvement adds a new checkbox to reflect this new status when a GTE requests changes in a translation.

After requesting this change, a new comment will be created with the “Bad Quality (AI?)” text as comment reason, and the GTE comment, if exists.

#improvements

Translation Events Prototype

Last year, unfortunately, nobody in the WordPress Polyglots community was able to manage a WP Translation Day, so this event didn’t take place in 2023.

When trying to understand why this didn’t happen, we learned that it takes quite some effort and dedication to orchestrate such an event. We realized that it would be interesting to change the scope and framing so that it becomes easier to collectively translate WordPress and its plugins and themes in an event-like format.

What if all it took to organize an event was to define a time and date and give the event a name? People could join an event and would automatically contribute to its success: on the event page, you’ll be able to see how many translations and reviews were contributed.

To make this a reality, we have created a prototype that we’d like to try on translate.wordpress.org in a first test at the polyglots table of the WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more. Asia 2024 Contributor DayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://2017.us.wordcamp.org/contributor-day/ https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/..

With translation events, we’d like to try and put the organization of small-scale translation events in the hands of users. They could be able to create new translation events and WordPress.orgWordPress.org The 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/ community members will be able to “join” them.

When you have joined an event, your translation statistics will be counted for the duration of the event towards the event. This means that the success of an event can be easily measured by taking a look at the event page and seeing how many people have contributed how many translations and reviews.

This 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 is available on GitHub, and you can test it on your own server or in a development environment. You just need to have GlotPressGlotPress GlotPress is the translation management software that powers Translate.WordPress.org. More information is available at glotpress.org. installed and activated.

Continue reading

#event, #events, #improvements, #local-events

Inactive projects in the consistency tool

When you look for some stringString A string is a translatable part of the software. A translation consists of a multitude of localized strings. in the consistency tool, you get a list with the different translations in a 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/.

Today I released a small improvement to flag the inactive projects. E.g., if you look for “Save Changes” in Galician language, you will get a small flag with the “(inactive)” text to reflect that some projects are no longer active, but it is interesting to show them in the tool, so you can see the different translations used over the years.

Props @nilovelez for raising this improvement.

#i18n, #improvements

Duplicates in the Translation Consistency

At https://translate.wordpress.org/consistency/, we have some duplicates in the language dropdown.

This is the list of duplicates:

  • Catalan (Valencian).
  • Dutch (Formal).
  • English.
  • French (France).
  • German (Formal).
  • German (Switzerland), Informal & German (Switzerland, Informal).
  • Portuguese (Portugal) AO90, Portuguese (Portugal AO90).
  • Serbian (Latin).

Below, I analyze each situation:

Catalan (Valencian)

We have 2 situations:

In the translation system, we have two variants:

  • ca/valencia, the old format, as catalan variant.
  • ca-val/default, the new format, as new 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/.

So we need to hide the first one (ca/valencia).

Dutch (Formal)

We have 2 situations:

In the translation system, we have 2 variants:

We need to hide the second one (nl/formal/default).

English

We have 2 situations:

In the translation system, we don’t have the en locale: English (en_US) is the original language, and the other English variants have the country suffix (en_AU, en_CA, en_NZ, art_xpirate, en_ZA, en_GB).

We need to hide both (en/formal and en/default).

French (France)

We have 2 situations:

In the translation system, we only have one variant:

So we need to hide the second one (fr/formal).

German (Formal)

We have 2 situations:

In the translation system, we have two variants:

So we need to hide the second one (de/formal/default).

German (Switzerland), Informal & German (Switzerland, Informal)

We have 2 situations:

  • German (Switzerland), Informal. de-ch/informal. Example.
  • German (Switzerland, Informal). de-ch/info/default. Example.

In the translation system, we have two variants:

So we need to hide the second one (de-ch/info/default).

Portuguese (Portugal) AO90, Portuguese (Portugal AO90)

We have 2 situations:

  • Portuguese (Portugal) AO90. pt/ao90. Example.
  • Portuguese (Portugal AO90). pt/ao90/default. Example.

In the translation system, we have three variants:

So we need to hide the second one (pt/ao90/default).

Serbian (Latin)

We have 2 situations:

In the translation system, we only have one variant:

So we need to hide both variants (sr/latin and sr/latin/latin).

Resolving this problem

I have released an update to address this problem, so in the future you should not see this duplication problems.

#improvements

Merging the “History”, “Other locales” and “Translation Memory” tabs

We had 5 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. to show different information for 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..
  • Discuss.
  • History.
  • 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/.
  • Translation memory (TM).

These tabs took up a lot of horizontal space with small devices and/or screens, showing tabs with only a few letters and without the number of elements, with a bad usability.

I have just deployedDeploy Launching code from a local development environment to the production web server, so that it's available to visitors. a new improvement, merging the content from the “History”, “Other locales” and “TM” in a new tab, called “Others”, removing the three previous tabs.

This PR adds “summary” elements, so the user could show or hide the different elements. This PR remembers the status of each summary (opened or closed) when you change to another row.

Related PR:

#improvements

Adding related languages at the bottom of the translation row

A few months ago, we added an improvement, to show the related 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/ at the top of the “Other locales” tab. You can see the announcement at Improving Translation Suggestions from Other Languages.

Today we release a related improvement, adding the same functionality at the bottom of the translation row, in the “Other languages” element.

If you are 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. in your language, you can request this improvement, adding a new issue in the gp-translation-helpers 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, with the title “New order for the other locales tab: {your language}” (change {your language} with your language). In the issue, please, add the 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/ slugs related with your language (you can find the slugs used at translate.wordpress.org here).

Some examples from translate.w.org

Translation to Spanish (Spain) with Spanish variants and related locales. Link.

Translation to Spanish (Colombia) with Spanish variants but without related locales. Link.

Translation to Spanish (Spain) with relate locales but without Spanish variants, because these variants doesn’t have any translations for this original stringString A string is a translatable part of the software. A translation consists of a multitude of localized strings.Link.

Translation to Italian without variants or related languages. Link.

Translation to Dutch with variants (Dutch formal and Dutch (Belgium)). Link.

#improvements

Pattern preview during translation is general available

A few months ago, we released a new functionality, the pattern preview during translation, but this functionality was only available if you used a parameter in the URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org.

Now, by default, you are going to see the pattern preview while you translate the pattern.

#improvements

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