Keys, placeholders, and plurals
Model messages so they remain understandable to translators and compatible with the application that renders them.
On this page
Use stable keys
A translation key is an identifier, not the translated sentence. Prefer a contextual name such as checkout_continue over a vague name such as text_17. Keep the identifier stable when wording changes so your application continues to find the message.
The key editor holds language values, notes and metadata, placeholder information, and variant content. Describe where a short message appears and what the reader is trying to do. Reusing a key only makes sense when its meaning is the same everywhere.
Keep placeholders compatible
Placeholders insert values such as a person name, date, or amount into translated text. Keep their names and types aligned with the application. Translate the surrounding sentence and let the target language change word order without renaming the arguments.
The file format determines how arguments are written. Flutter ARB, Android resources, iOS resources, and web engines have different conventions. Select the matching platform during import or export, then validate the result with that platform toolchain.
Model quantity-dependent messages
Use plural messages when a number changes the grammar. Languages do not all use the same plural categories. The structured message editor supports plural forms and checks selectors, including duplicate selectors and the required other form.
Test representative values such as zero, one, two, and larger quantities in each language. Keep the quantity variable consistent with the value passed by the application. Do not assemble a translated sentence by concatenating independent words.
Placeholders and plurals through the SDK
Follow a Flutter ARB plural through AI translation, server reconstruction, publication, and rendering. Recorded with Flutter SDK 1.1.0; use the current SDK guide for version-specific behavior.
Watch on YouTubeReview before publishing
- Check the meaning in context, including headings, short labels, and messages with limited space.
- Verify every placeholder and plural branch against the app format.
- Check Main and variant values in the intended languages.
- Run the exported files or SDK-delivered content in the application before a production publication.