ICU and shared parameters
This guide applies to the branch selected in Current branch. Keys, values, languages, tags and file mappings are independent between branches. See branch navigation and branch permissions.
ICU lets a value contain named arguments and conditional/plural branches. Owner, Admin and Editor can configure it on an active key in an active project and workspace. Values in inactive languages cannot be changed until the language is reactivated.
Declare the key contract
Section titled “Declare the key contract”- Create a key or select its name to open inline Key details above the table.
- Set Text format to ICU.
- Select Add parameter, enter its name and choose Text or Number.
- Save the key definition, then enter values that use every declared parameter in the table.
Parameter names start with an ASCII letter or underscore and contain ASCII letters, digits or underscores. They are unique and limited to 100 characters; a key supports at most 32 parameters. The contract belongs to the key and is never inferred from a language value.
For a contract containing person: Text and count: Number, these are valid illustrative values:
{person}: {count, plural, one {# item} other {# items}}{person}: {count, plural, other {# öğe}}All filled values must contain exactly the declared parameter names. A plain {name} argument
can reference either declared type. select requires Text; plural and selectordinal
require Number. Plural branches may differ between languages. Every branching expression needs
an other branch. Missing values are allowed and are not required to contain parameters.
{audience, select, team {Welcome, team} other {Welcome}}{position, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}The initial subset supports named arguments, select, plural and selectordinal. Rich HTML/tag expressions and explicit date, time or number formatters are rejected. Validation limits are 10 nested expressions, 1,000 parsed AST nodes and 16 KiB UTF-8 per value. The editor validates and stores messages. Web and Flutter SDKs format the published supported message contract at runtime.
Change a contract without losing consistency
Section titled “Change a contract without losing consistency”- Open Key details, change the format or parameters.
- Open Values and atomic corrections. Use its pagination to inspect language values.
- Correct every incompatible filled value. Draft corrections remain while paging.
- Select Save key once to commit the definition and corrections together.
The server checks all filled values, including languages outside the displayed page. If any value fails, nothing changes. The error names the affected language and reason. Reactivate an inactive language before correcting it; its existing content is never silently cleared. Changing to Plain text requires an empty parameter contract and keeps value text as written.
If another user edits a corrected cell, its expected version no longer matches and the whole save returns a conflict. Compare the current content and keep or revise your draft explicitly. Malformed braces, omitted/undeclared parameters and incompatible parameter types are errors, not warnings. See content conflicts.
Translation assistance
Section titled “Translation assistance”Provider compatibility defines the ICU subset supported by each translation provider. Suggestions and manual proposal edits pass the same contract/size checks; validation does not guarantee linguistic accuracy.
Choose whether we remember appearance preferences and use Google Analytics on Localisync and its documentation. Optional storage stays off until you accept.
Read our cookie policy