On October 3 a group of GTEs met on Zoom for the brainstorming session @tobifjellner called a month earlier. The topic: the flood of AI-generated translations and the PTE 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. request workload it created. This is the recap of the pain points, the ideas on the table and the follow-ups. Nothing was decided; the goal was to collect options before moving to decision mode.
Attendees: Tor-Björn Fjellner @tobifjellner (sv_SE, host), Peter Smits @psmits1567 (nl_NL), Akira Tachibana @atachibana (ja), Gary Jones @garyj (en_GB), Jamie Dąbrowiecki @jdab (en_GB), Pedro Mendonça @pedromendonca (pt_PT), Luis Rull @luisrull (es_ES), Emre Erkan @emre (tr_TR).
One thing came up more than once: AI output quality has improved a lot over the past year, es_ES and pt_PT both said so. The problem is volume and the wrong 10%, not quality across the board.
PAIN POINTS
Volume. 300 to 5,000 submissions per day in es_ES. In one day nl_NL received five or six projects with about 500 unusable strings A string is a translatable part of the software. A translation consists of a multitude of localized strings. each. (Luis, Peter)
PTE requests. Free-form blog posts that clog the P2 "p2" is the name of the theme that blogs at make.wordpress.org use (and o2 is the accompanying plugin). When asked to post something "on the p2" by a member of the Polyglots team, that usually means you're asked to post on the team blog https://make.wordpress.org/polyglots/.. One requester asking for many locales 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 once. Developers requesting PTE only to get their own AI output approved fast. Teams cannot promise a 2-day turnaround. (Akira, Luis, Toby)
Bulk reject. Works one page at a time; 600+ strings from one user means several pages. (Toby)
Translation memory. GTEs cannot edit or delete entries. Wrong TM suggestions keep ranking above the corrected ones. TM is translate.wordpress.org The platform for contributing to the translation of WordPress core, themes and plugins. (Meta 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.) code, not GlotPress GlotPress is the translation management software that powers Translate.WordPress.org. More information is available at glotpress.org.. (Emre, Toby, Pedro)
GlotPress data model. Translations cannot be deleted, only marked obsolete. Rejected spam accumulates and the database is already slow. The consistency tool returns only the first 500 matches. (Pedro, Peter)
Discoverability. The per-locale 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/ glossary and style guide list in the handbook is manual and incomplete, and someone applying for PTE will not go looking for it. Even the ja style guide is unknown to most ja contributors. (Gary, Toby, Akira)
Off-platform work. Translators work in Crowdin, Poedit or their own LLM and import the result. Imports get no glossary or style checks. (Emre, Luis)
Glossary matching. Plain string A string is a translatable part of the software. A translation consists of a multitude of localized strings. matching fails for compounding and agglutinative languages (sv, fi): valid translations get flagged. (Toby)
Locale rules. Formal vs informal Spanish is the single largest source of noise in es_ES. (Luis)
LLM tooling. Every provider handles prompts differently; prompts need constant tuning. (Peter)
IDEAS
PTE request process
Structured PTE requests. Replace blog-post requests with a form backed by a database. Checkboxes for: native speaker, read the style guide, applied the glossary. Trigger it inside GlotPress after someone submits strings, with a direct link to their pending strings. GTEs get a per-locale queue; the Polyglots leads can see which requests are stalled. (Akira, Peter, Toby)
Locale cap. Limit how many locales one person can request at once. (Akira)
Probation import. Limit a new contributor’s first import to about 100 strings and unlock the rest after review. (Peter) Pushback: for some locales 100 strings is too few to catch the once-in-40 errors, and level tracking adds administration. (Toby)
Flood control and cleanup
Bulk reject per user. One action to reject every unapproved string from user X in project Y, regardless of count or paging. (Toby) Caveat: rejected rows stay in the database, so this needs a retention policy, for example rejected and older than 2 years is deleted, spam is deleted after 30 days. (Peter, Pedro) History is worth keeping for real discussions, not for spam. (Pedro)
A role for developers shipping machine translations. Next to CLPTE 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.: their upload builds a language pack, never enters the translation memory, and cannot override a community translation. Gate it behind a 20-minute training. If they want to ruin their own plugin 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.’s UX UX is an acronym for User Experience - the way the user uses the UI. Think ‘what they are doing’ and less about how they do it., that is their call. (@elbogen via Toby)
TM maintenance. Give GTEs a way to prune and edit the translation memory. Open question for the Meta team.
AI-assisted review
AI first pass in GlotPress. Modeled on how the Plugin Review Team automated checks with Plugin Check. GTEs write a per-locale skill; the pass flags approve/reject with reasons; a human confirms. (Pedro, Peter)
Machine-readable guidelines. Publish glossaries and style guides in an MCP-reachable form so agents can use them. Per-locale skills as plain text files linked from GlotPress. A central best-practice page for contributors who do not speak the target language. (Toby, Emre, Pedro)
Glossary check at import time. With the compounding-language caveat above. (Emre)
Prompt findings from tr_TR. Filter 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. the glossary down to the terms that occur in the file and embed that in the prompt instead of calling tools. Fully embedded, the largest glossary (Malagasy) is about 53k tokens; filtered, it is small. Low reasoning effort translates better than high. Review time dropped from hours to minutes. (Emre)
A WordPress-specific translation model. Trained on translate.wordpress.org data, pre-populating new projects so reviewers only pick out the wrong ones. (Peter) Context: automatic propagation on 100% source matches was tried in the early days and dropped because short strings change meaning by context. (Toby)
Where to build it
Build as translate.wordpress.org plugins first and upstream to GlotPress later, since GlotPress changes can break other users. (Toby) Counterpoint: this belongs in GlotPress core Core is the set of software required to run WordPress. The Core Development Team builds WordPress.; it is an old fight. (Pedro)
Community
Recurring Polyglots video calls at alternating hours so both East Asia and Latin America can join. Virtual coffee breaks ran 4 or 5 years ago and faded out. (Toby, Luis)
DEMO: The Polyglots Tool
At the closing of the meeting @emre did a demo of the review tool he has been building. The tr_TR waiting queue of themes went from about 22,000 strings to about 4,000 with it.
It runs as a CLI Command Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress. and a TUI. It can translate, review a submitted PO file, fetch one or more projects from translate.wordpress.org, split large projects (6,000 to 8,000 strings) and produce statistics. A review produces a repaired PO with a comment per changed string (glossary term, meaning or fluency, locale-specific rules such as Turkish title case) and a ready-to-paste reply for the PTE request thread. It uses your local translation memory, syncs the locale glossary from translate.wordpress.org and calls the consistency tool when a term is ambiguous. Providers are pluggable via API 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. keys (DeepL, OpenAI, Antigravity and others); batch size 100 with a flash-class model on low reasoning effort gave the best results. Several projects can be reviewed in parallel, with 1.5 s delays between requests so it does not hammer translate.wordpress.org.
A configuration layer lets other locales define their own rules. Anyone who wants to try it on their locale can reach @emre on Slack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ or check it here.
ACTIONS AND NEXT STEPS
- Toby: compile the ideas; everyone keeps adding comments under the invitation post linked above. Revisit in about a month, then move to decision mode.
- Toby: talk to plugin developers to get their side; none were at this session.
- Toby: ask the Meta team (@ocean90, @timse201) about editing and pruning the translation memory.
- Akira: add a “read the style guide” checkbox to the ja PTE requirements.
- Emre: post the glossary token-size analysis: here it is.
- Emre: set up the Polyglots tool for interested locales; es_ES (Luis, Fernando) is first.
- Emre, Peter: a masterclass on using LLMs in Polyglots work: review automation, prompts, tooling. Date to be announced.
- All: try recurring Polyglots video calls at alternating hours.