Localization workflow
Intl plural rules and visible decimals
Plural categories select a message branch for a number; they do not translate a sentence or prove grammatical correctness. Compare the same values under the options used by your application before reviewing the actual translations.
Content updated: · Maintained by Hung Chi-Hsueh · corrections
Cardinal and ordinal categories
Cardinal rules commonly choose a branch for counts, such as 1 item and 2 items. Ordinal rules can distinguish positions, such as 1st, 2nd and 3rd in English. The category names zero, one, two, few, many and other are labels: the same label does not imply the same words in every language, and not every locale uses every label.
For English ordinal rules, 2 selects two and 21 selects one. A category alone is not a formatted suffix. Test your application messages and language-specific grammar separately.
Why 1 and 1.0 can differ
JavaScript Number does not retain the written trailing zero: Number('1') and Number('1.0') represent the same numeric value. With the default Intl.PluralRules options both therefore use the same result. In English this is normally one for cardinal 1.
The tester's preserve mode first converts the input to Number, then sets both minimumFractionDigits and maximumFractionDigits to the number of visible decimal digits. For English 1.0, these options select other. This is a different rounding and formatting option model, not a correction to the default. Match the options and runtime used by the application you are testing.
Locale resolution and runtime differences
The tester accepts Unicode locale identifiers supported by the current browser, such as en, pl and zh-TW. It checks support before constructing the rules and displays the requested and resolved locale for both rule types. A regional request may resolve to a language fallback; identifiers are not checked against the IANA registry.
Browsers and application servers can use different Intl, ICU or CLDR data. A result from this browser is not proof of a server or translation framework result, and the browser does not expose a reliable CLDR version through this tool. Repeat important examples in the target application and runtime.
Boundaries and a release check
Use 1–4 locales and 1–12 signed decimals, one per line. Values require integer digits, must be within ±1,000,000,000, and use at most three fractional digits and 32 characters. Locale identifiers are limited to 128 characters and each field to 16,384 characters. Scientific notation, localized separators, unsupported identifiers and empty input are rejected. The original input spelling, including negative zero, is shown; calculations use JavaScript Number.
Inputs stay in browser memory and are not uploaded, saved, placed in the URL or sent to tool analytics. Copying or downloading exports the full report: review it before sharing. Then check translation keys and the actual ICU message separately; key parity alone does not verify plural coverage.
English cardinal: default 1 → one, default 1.0 → one
English cardinal: preserve 1.0 → other
English ordinal: 2 → two, 21 → oneData provenance