ICU MessageFormat: Translate with Confidence
By Edouard · April 15, 2026
If your app uses ICU MessageFormat for plurals, gender, or number formatting, you know how fragile these strings can be. A single misplaced brace or a translated keyword can break your UI at runtime — and these bugs are notoriously hard to catch before they reach users.
Two updates shipping today change that. First, the validation system catches ICU errors before they go live, and the machine translation system produces correct ICU translations from the start when using AI (Mistral or Gemini translators).
Catch mistakes instantly
Translation Validator now understands ICU MessageFormat syntax. When a translator submits a string like:
{count, pluriel, un {# article} autre {# articles}}
…the validator spots that pluriel, un, and autre are French translations of ICU keywords that must stay in English — and fixes them automatically:
{count, plural, one {# article} other {# articles}}
This autocorrect works across 12 languages, covering one of the most common ICU translation mistakes.
Beyond keyword translation, the validator catches missing arguments, syntax errors, type mismatches, and missing # references. If something is structurally wrong with an ICU string, you’ll know immediately.
Get the right plural forms for every language
English has two plural forms. Polish has four. Arabic has six. Getting this wrong means broken sentences for millions of users — and it’s nearly impossible to catch manually across dozens of locales.
Our validation system now checks that every translation includes exactly the plural categories its language requires. Missing few in Polish? You’ll see a clear warning. Unnecessary zero in English? Flagged.
When plural forms are missing, the issue is sent to your AI translation handler with full context so the gaps can be filled automatically.
Machine translation that gets ICU right
Machine translations using AI (Mistral or Gemini) brings the same ICU awareness to Gemini and Mistral translations. When you machine-translate an English source with two plural forms into Polish, the translator automatically expands it to four:
English source:
{count, plural, one {# message} other {# messages}}
Polish translation:
{count, plural, one {# wiadomość} few {# wiadomości} many {# wiadomości} other {# wiadomości}}
Nested patterns — like gender selection containing plurals — are handled correctly too. Variable names, keywords, and brace structure stay intact; only the human-readable text gets translated.
This works out of the box for Gemini and Mistral translators. No configuration needed.
The full picture
These two updates work together. The update to the machine translator produces structurally correct ICU translations, and the translation validator verifies them, giving you a safety net whether translations come from machines, human translators, or a mix of both.
Both updates are available now.
Read more in the Machine Translation documentation » or in the Translation Validations documentation »


















