рдореБрдлрд╝реНрдд рдЙрдкрдХрд░рдг

    ICU рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рд░реВрдкрдХ рдФрд░ рд╕рдВрдкрд╛рджрдХ

    рд▓рд╛рдЗрд╡ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди, 100+ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдмрд╣реБрднрд╛рд╖реА CLDR рдмрд╣реБрд╡рдЪрди рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде ICU MessageFormat рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдмрдирд╛рдПрдВ, рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВред

    рдЯреЗрдореНрдкреНрд▓реЗрдЯ50
    ICU рд╕рдВрдкрд╛рджрдХ
    рдорд╛рдиреНрдп рд╕рд┐рдВрдЯреИрдХреНрд╕
    14 рд╡рд░реНрдг1 рдкрдВрдХреНрддрд┐рдпрд╛рдБ

    рдкрд░реАрдХреНрд╖рдг рдЪрд░ рдФрд░ рд▓рд╛рдЗрд╡ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди

    CLDR рдмрд╣реБрд╡рдЪрди рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рднрд╛рд╖рд╛ рдмрджрд▓реЗрдВ

    рднрд╛рд╖рд╛:
    рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдЙрдЯрдкреБрдЯ (en):
    Hello, Alex!
    Intlayer рдЯрд╛рдЗрдк-рд╕реБрд░рдХреНрд╖рд┐рдд рдШреЛрд╖рдгрд╛ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ
    import { type Dictionary } from 'intlayer';const convertedMessageContent = {  key: 'converted-message',  content: 'Hello, {{name}}!',} satisfies Dictionary;export default convertedMessageContent;
    Intlayer рдкреВрд░реНрдг TypeScript рд╕реНрд╡рддрдГ рдкреВрд░реНрдгрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИред

    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 keywordsenu({ 0: "None", 1: "1", fallback: "{{count}}" })
    Select (Context/Gender){key, select, choice1 {...} other {...}}{gender, select, male {He} other {They}}Case-sensitive exact string comparisonselect({ male: "He", fallback: "They" }, "gender")
    Selectordinal{rank, selectordinal, one {#st} other {#th}}{pos, selectordinal, one {#st} two {#nd} other {#th}}Ordinal suffix rules per CLDRenu({ 1: "1st", 2: "2nd", fallback: "{{pos}}th" })
    Number Formatting{val, number, [style]}{price, number, currency}Supports percent, currency, integer stylesIntl.NumberFormat or type-safe formatting
    Escaping'{' and '' for apostrophesDon''t '{'escape'}'Single quotes escape literal blocks, '' escapes quoteLiteral strings naturally supported
    Intlayer рдХреА рдХрдВрдкрд╛рдЗрд▓рд░-рдЪрд╛рд▓рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЬрдЯрд┐рд▓ рд░рдирдЯрд╛рдЗрдо рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдЯрд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрддреА рд╣реИред
    Intlayer рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░

    рдЬрдЯрд┐рд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрднреА рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ

    Intlayer рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдЯрд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдШрдЯрдХ рдирд┐рд╖реНрдХрд░реНрд╖рдг рдФрд░ рд╕рд╣рдЬ CMS рдПрдХреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЛ рдПрдХ рд╕реБрдЦрдж рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред