ICU рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рд░реВрдкрдХ рдФрд░ рд╕рдВрдкрд╛рджрдХ
рд▓рд╛рдЗрд╡ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди, 100+ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдмрд╣реБрднрд╛рд╖реА CLDR рдмрд╣реБрд╡рдЪрди рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде ICU MessageFormat рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдмрдирд╛рдПрдВ, рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВред
рдкрд░реАрдХреНрд╖рдг рдЪрд░ рдФрд░ рд▓рд╛рдЗрд╡ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди
CLDR рдмрд╣реБрд╡рдЪрди рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рднрд╛рд╖рд╛ рдмрджрд▓реЗрдВ
ICU MessageFormat Syntax Cheat Sheet
рддреНрд╡рд░рд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдпрдо рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдЯрд░реНрди Intlayer рдШреЛрд╖рдгрд╛рдУрдВ рдореЗрдВ рдХреИрд╕реЗ рдореИрдк рд╣реЛрддрд╛ рд╣реИ
| рд╕реБрд╡рд┐рдзрд╛ | рд╕рд┐рдВрдЯреИрдХреНрд╕ | рдЙрджрд╛рд╣рд░рдг | рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ | Intlayer рд╕рдордХрдХреНрд╖ |
|---|---|---|---|---|
| Simple Variable | {variableName} | Hello {name}! | Alphanumeric names, single brackets | {{name}} |
| Pluralization | {count, plural, one {...} other {...}} | {n, plural, one {# item} other {# items}} | Requires "other". # is replaced by count. | plural({ one: "1 item", other: "{{count}} items" }) |
| Exact Match Plural | =0 {...} =1 {...} | {n, plural, =0 {None} one {#} other {#}} | Takes precedence over CLDR keywords | enu({ 0: "None", 1: "1", fallback: "{{count}}" }) |
| Select (Context/Gender) | {key, select, choice1 {...} other {...}} | {gender, select, male {He} other {They}} | Case-sensitive exact string comparison | select({ male: "He", fallback: "They" }, "gender") |
| Selectordinal | {rank, selectordinal, one {#st} other {#th}} | {pos, selectordinal, one {#st} two {#nd} other {#th}} | Ordinal suffix rules per CLDR | enu({ 1: "1st", 2: "2nd", fallback: "{{pos}}th" }) |
| Number Formatting | {val, number, [style]} | {price, number, currency} | Supports percent, currency, integer styles | Intl.NumberFormat or type-safe formatting |
| Escaping | '{' and '' for apostrophes | Don''t '{'escape'}' | Single quotes escape literal blocks, '' escapes quote | Literal strings naturally supported |
рдЬрдЯрд┐рд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ
Intlayer рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдЯрд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдШрдЯрдХ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдФрд░ рд╕рд╣рдЬ CMS рдПрдХреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЛ рдПрдХ рд╕реБрдЦрдж рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред