Author:
    Creation:2026-04-20Last update:2026-05-18

    TanStack Start i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ - 2026 рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЛрд░реНрдЯ

    рдпрд╣ рдкреЗрдЬ TanStack Start рдкрд░ i18n рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИред

    рд╡рд┐рд╖рдп рд╕реВрдЪреА

    рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдмреЗрдВрдЪрдорд╛рд░реНрдХ

    рдбрд╛рдпрдирд╛рдорд┐рдХ JSON рд▓реЛрдбрд┐рдВрдЧ

    рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрд▓рд╕реНрдп рд╕реЗ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ

    рд╕реНрдХреЛрдкреНрдб JSON (рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ)

    рдкреНрд░рддрд┐-рдкреГрд╖реНрда рдЕрдиреБрд╡рд╛рдж рдиреЗрдорд╕реНрдкреЗрд╕

    I18n рдкреНрд░рджрд░реНрд╢рди рдмреЗрдВрдЪрдорд╛рд░реНрдХ

    рдпрд╣ рдореАрдЯреНрд░рд┐рдХ рдХреНрдпрд╛ рд╣реИ?

    рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдВрдбрд▓ рдХрд╛ рдХреБрд▓ gzip-рд╕рдВрдкреАрдбрд╝рд┐рдд рдЖрдХрд╛рд░ред рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдФрд░ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рдж рдкреНрд░рджрд╛рддрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

    рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ?

    рдПрдХ рдЫреЛрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдХрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЗрд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рддреЗрдЬрд╝ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╣реЛрддрд╛ рд╣реИред

    рджреЗрдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛

    рдкрд░рд┐рдгрд╛рдо рд╕рдВрджрд░реНрдн:

    рдкреВрд░реНрдг рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ

    рдкреВрд░рд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВред

    рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛

    рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд╕рдорд╛рдзрд╛рди React рдРрдк рдореЗрдВ рд╕рдмрд╕реЗ рднрд╛рд░реА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВред TanStack Start рдкрд░ рдореБрдЦреНрдп рдЬреЛрдЦрд┐рдо рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╢рд┐рдк рдХрд░рдирд╛ рд╣реИ: рдПрдХ рд╣реА рд░реВрдЯ рдХреЗ рдмрдВрдбрд▓ рдореЗрдВ рдЕрдиреНрдп рдкреЗрдЬреЛрдВ рдФрд░ рдЕрдиреНрдп рд▓реЛрдХреЗрд▓реНрд╕ рдХреЗ рдЕрдиреБрд╡рд╛рдж рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ред

    рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХрд╛ рдРрдк рдмрдврд╝рддрд╛ рд╣реИ, рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рдХреНрд▓рд╛рдЗрдпрдВрдЯ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдмрдврд╝рд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рдзреАрдорд╛ рдХрд░ рд╕рдХрддреА рд╣реИред

    рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХреГрдд рдкреЗрдЬ рдмрд┐рдирд╛ i18n рд╡рд╛рд▓реЗ рд╡рд░реНрдЬрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЧреБрдирд╛ рднрд╛рд░реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

    рджреВрд╕рд░рд╛ рдкреНрд░рднрд╛рд╡ рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрднрд╡ (DX) рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИ: рдЖрдк рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреИрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЯрд╛рдЗрдкреНрд╕, рдиреЗрдорд╕реНрдкреЗрд╕ рд╕рдВрдЧрдарди, рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ, рдФрд░ рд▓реЛрдХреЗрд▓ рдмрджрд▓рдиреЗ рдкрд░ рд░рд┐рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАред

    TL;DR

    • Intlayer: TanStack Start рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ (v8.7.12) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
    • react-i18next рдФрд░ use-intl: рдмрдбрд╝реЗ рдИрдХреЛрд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд▓реЗ рдкрд░рд┐рдкрдХреНрд╡ рд╡рд┐рдХрд▓реНрдк, рд▓реЗрдХрд┐рди рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рднрд╛рд░реА рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ред
    • Paraglide: рдЕрднрд┐рдирд╡ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рд╡рд┐рдЪрд╛рд░ рдЬреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред TanStack Start рдореЗрдВ рдЬрдЯрд┐рд▓ DX рдФрд░ рд░рд┐рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдУрд╡рд░рд╣реЗрдбред
    • рдмрдЪреЗрдВ: General Translation (GT) рдФрд░ Lingo.dev рдЧрдВрднреАрд░ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ, AI рдХреЛрдЯрд╛ рд╕реАрдорд╛рдУрдВ рдФрд░ рд╡реЗрдВрдбрд░ рд▓реЙрдХ-рдЗрди (vendor lock-in) рдХреЗ рдХрд╛рд░рдгред

    рдЕрдкрдиреЗ рдРрдк рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ

    i18n рд▓реАрдХреЗрдЬ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдкрд╣рдЪрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдореБрдлрд╝реНрдд рд╕реНрдХреИрдирд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИред

    рд╕рдорд╕реНрдпрд╛

    рдорд▓реНрдЯреАрд▓рд┐рдВрдЧреБрдЕрд▓ рдРрдк рдХреА рд▓рд╛рдЧрдд рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд▓реАрд╡рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ:

    • рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреЗрдЬ / рдиреЗрдорд╕реНрдкреЗрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЬрдм рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ рддреЛ рдкреВрд░реЗ рд╢рдмреНрджрдХреЛрд╢ рд▓реЛрдб рди рд╣реЛрдВред
    • рд╕рд╣реА рд▓реЛрдХреЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдбрд╛рдпрдиреЗрдорд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВред

    рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреА рддрдХрдиреАрдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛:

    рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ

    рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рд░реЗрдВрдбрд░ рд╕реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдХрдИ рд░реВрдЯреНрд╕ рдФрд░ рд▓реЛрдХреЗрд▓реНрд╕ рд╡рд╛рд▓реЗ рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдУрд╡рд░рд╣реЗрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИред

    рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде, рдЖрдк рдПрдХ рдЯреНрд░реЗрдб-рдСрдлрд╝ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ: рдХрдо рд╢реБрд░реБрдЖрддреА JS, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рднрд╛рд╖рд╛ рдмрджрд▓рддреЗ рд╕рдордп рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдзред

    рдХрдВрдЯреЗрдВрдЯ рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ (рд╕рд╛рдордЧреНрд░реА рд╡рд┐рднрд╛рдЬрди)

    const t = useTranslation() + t('a.b.c') рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдмрдиреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЕрдХреНрд╕рд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдмрдбрд╝реЗ JSON рдСрдмреНрдЬреЗрдХреНрдЯ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреА рд╣реИрдВред рд╡рд╣ рдореЙрдбрд▓ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдХреЛ рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рддрд┐-рдкреЗрдЬ рд╕реНрдкреНрд▓рд┐рдЯ рд░рдгрдиреАрддрд┐ рдкреНрд░рджрд╛рди рди рдХрд░реЗред

    рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА

    рдЗрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдХреА рд╣реИ:

    • Base App (рдХреЛрдИ i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд╣реАрдВ)
    • react-intlayer (v8.7.12)
    • react-i18next (v17.0.2)
    • use-intl (v4.9.1)
    • @lingui/core (v5.3.0)
    • @inlang/paraglide-js (v2.15.1)
    • @tolgee/react (v7.0.0)
    • react-intl (v10.1.1)
    • wuchale (v0.22.11)
    • gt-react (vlatest)
    • lingo.dev (v0.133.9)

    рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ 10 рдкреЗрдЬреЛрдВ рдФрд░ 10 рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдорд▓реНрдЯреАрд▓рд┐рдВрдЧреБрдЕрд▓ рдРрдк рдХреЗ рд╕рд╛рде TanStack Start рд╣реИред

    рд╣рдордиреЗ рдЪрд╛рд░ рд▓реЛрдбрд┐рдВрдЧ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА:

    рд░рдгрдиреАрддрд┐рдХреЛрдИ рдиреЗрдорд╕реНрдкреЗрд╕ рдирд╣реАрдВ (рдЧреНрд▓реЛрдмрд▓)рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде (рд╕реНрдХреЙрдкреНрдб)
    рд╕реНрдЯреЗрдЯрд┐рдХ рд▓реЛрдбрд┐рдВрдЧStatic: рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╕рдм рдХреБрдЫ рдореЗрдореЛрд░реА рдореЗрдВредScoped static: рдиреЗрдорд╕реНрдкреЗрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд; рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╕рдм рдХреБрдЫ рд▓реЛрдбред
    рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧDynamic: рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдСрди-рдбрд┐рдорд╛рдВрдб рд▓реЛрдбрд┐рдВрдЧредScoped dynamic: рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рд▓реЛрдХреЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рджрд╛рдиреЗрджрд╛рд░ рд▓реЛрдбрд┐рдВрдЧред

    рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢

    • Static: рд╕рд░рд▓; рд╢реБрд░реБрдЖрддреА рд▓реЛрдб рдХреЗ рдмрд╛рдж рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЗрдЯреЗрдВрд╕реА рдирд╣реАрдВред рдиреБрдХрд╕рд╛рди: рдмрдВрдбрд▓ рдХрд╛ рдмрдбрд╝рд╛ рдЖрдХрд╛рд░ред
    • Dynamic: рд╢реБрд░реБрдЖрддреА рд╡рдЬрд╝рди рдХрдо рдХрд░рддрд╛ рд╣реИ (рд▓реЗрдЬрд╝реА-рд▓реЛрдбрд┐рдВрдЧ)ред рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рд▓реЛрдХреЗрд▓реНрд╕ рд╣реЛрдВ рддреЛ рдЖрджрд░реНрд╢ рд╣реИред
    • Scoped static: рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд (рд▓реЙрдЬрд┐рдХрд▓ рд╕реЗрдкрд░реЗрд╢рди) рд░рдЦрддрд╛ рд╣реИред
    • Scoped dynamic: рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ рдФрд░ рдкрд░рдлреЙрд░рдореЗрдВрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рд╡рд░реНрддрдорд╛рди рд╡реНрдпреВ рдФрд░ рд╕рдХреНрд░рд┐рдп рд▓реЛрдХреЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред

    рдореИрдВрдиреЗ рдХреНрдпрд╛ рдорд╛рдкрд╛:

    рдореИрдВрдиреЗ рд╣рд░ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╣реА рдмрд╣реБрднрд╛рд╖реА рдРрдк рдЪрд▓рд╛рдпрд╛, рдлрд┐рд░ рд▓рд┐рдЦрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрд╛рд░ рдкрд░ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рдЪреАрдЬреЛрдВ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрд╛ред рдЖрдХрд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдм рдХрдВрдкреНрд░реЗрд╢рди рдХреЗ рдмрд╛рдж рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдЪреНрдЪреЗ рд╕реНрд░реЛрдд рдЧрдгрдирд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓реЛрдЧ рдЬреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдХрд░реАрдм рд╣реИред

    • Internationalization рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрдХрд╛рд░: bundling, tree-shaking рдФрд░ minification рдХреЗ рдмрд╛рдж, i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрдХрд╛рд░ providers (рдЬреИрд╕реЗ NextIntlClientProvider) + hooks (рдЬреИрд╕реЗ useTranslations) рдХреЛрдб рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ рдЦрд╛рд▓реА component рдореЗрдВ рд╣реИред рдЗрд╕рдореЗрдВ translation рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рд▓реЛрдбрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА content рдХреЗ picture рдореЗрдВ рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд┐рддрдиреА рдорд╣рдВрдЧреА рд╣реИред

    • рдкреНрд░рддрд┐ рдкреГрд╖реНрда JavaScript: рдкреНрд░рддреНрдпреЗрдХ benchmark route рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрд╕ visit рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА script рдЦреАрдВрдЪрддрд╛ рд╣реИ, suite рдХреЗ pages рдореЗрдВ averaged (рдФрд░ locales рдореЗрдВ рдЬрд╣рд╛рдВ report рдЙрдиреНрд╣реЗрдВ roll рдХрд░рддрд╛ рд╣реИ)ред рднрд╛рд░реА pages рдзреАрдореЗ pages рд╣реИрдВред

    • рдЕрдиреНрдп locales рд╕реЗ Leakage: рдпрд╣ рдПрдХ рд╣реА page рдХреА content рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ language рдореЗрдВ рдЬреЛ audited page рдореЗрдВ рдЧрд▓рддреА рд╕реЗ рд▓реЛрдб рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ content рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЗрд╕реЗ avoid рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП /fr/about page content /en/about page bundle рдореЗрдВ)

    • рдЕрдиреНрдп routes рд╕реЗ Leakage: рдЕрдиреНрдп screens рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИ: рдХреНрдпрд╛ рдЬрдм рдЖрдк рдХреЗрд╡рд▓ рдПрдХ page рдЦреЛрд▓рддреЗ рд╣реИрдВ рддреЛ рдЙрдирдХреА copy рд╕рд╛рде рдЪрд▓ рд░рд╣реА рд╣реИред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП /en/about page content /en/contact page bundle рдореЗрдВ)ред рдПрдХ high score рдХрдордЬреЛрд░ splitting рдпрд╛ over-broad bundles рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред

    • рдФрд╕рдд component bundle рдХрд╛ рдЖрдХрд╛рд░: Common UI pieces рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╡рд┐рд╢рд╛рд▓ app рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдВрджрд░ рдЫрд┐рдкрдиреЗ рдХреЗ рдмрдЬрд╛рдпред рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ internationalization quietly рд░реЛрдЬрд╝рдорд░реНрд░рд╛ рдХреЗ components рдХреЛ inflate рдХрд░рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХрд╛ component rerenders, рддреЛ рдпрд╣ memory рд╕реЗ рд╕рднреА data рдХреЛ load рдХрд░реЗрдЧрд╛ред рдХрд┐рд╕реА component рдХреЛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ JSON рдХреЛ attach рдХрд░рдирд╛ рдЕрдкреНрд░рдпреБрдХреНрдд data рдХреЗ рдПрдХ рдмрдбрд╝реЗ store рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдЬреИрд╕рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ components рдХреЗ performance рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛ред

    • Language switch responsiveness: рдореИрдВ рдРрдк рдХреЗ рдЕрдкрдиреЗ control рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ language рдХреЛ flip рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ time рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ page clearly switch рд╣реЛрдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ visitor рдХреЛ notice рд╣реЛрдЧрд╛, рдПрдХ lab micro-step рдирд╣реАрдВред

    • Language change рдХреЗ рдмрд╛рдж Rendering work: рдПрдХ narrower follow-up: interface рдХреЛ repaint рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ effort рд▓рдЧрд╛ рдирдИ language рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ switch flight рдореЗрдВ рд╣реИред рдЙрдкрдпреЛрдЧреА рдЬрдм "felt" time рдФрд░ framework cost diverge рд╣реЛрдВред

    • Initial page load time: Navigation рд╕реЗ browser рддрдХ рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдореИрдВрдиреЗ рдЬрд┐рди scenarios рдХреЛ test рдХрд┐рдпрд╛ рдЙрдирдХреЗ рд▓рд┐рдП page рдкреВрд░реА рддрд░рд╣ рд╕реЗ loaded рд╣реИред Cold starts рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред

    • Hydration time: рдЬрдм рдРрдк рдЗрд╕реЗ expose рдХрд░рддрд╛ рд╣реИ, рддреЛ client рдХрд┐рддрдирд╛ рд╕рдордп server HTML рдХреЛ рдРрд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдк actually рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Tables рдореЗрдВ рдПрдХ dash рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ implementation рдиреЗ рдЗрд╕ benchmark рдореЗрдВ рдПрдХ reliable hydration figure рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред

    GitHub рд╕рд┐рддрд╛рд░реЗ

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

    Star History Chart

    рдкрд░рд┐рдгрд╛рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ

    1 - рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди

    gt-react рдпрд╛ lingo.dev рдЬреИрд╕реЗ рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕реЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рджреВрд░ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рд╡реЗрдВрдбрд░ рд▓реЙрдХ-рдЗрди рдХреЛ рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░: рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдХрдИ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ TanStack Start рдкрд░ рдХрднреА рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рдирд╣реАрдВ рдкрд╛рдпрд╛ (Next.js рдкрд░ gt-next рдХреЗ рд╕рдорд╛рди) ред

    рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЗ:

    (General Translation) (gt-react@latest):

    • рд▓рдЧрднрдЧ 110kb рдХреЗ рдРрдк рдХреЗ рд▓рд┐рдП, gt-react 440kb рд╕реЗ рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ (рдЗрд╕реА рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ Next.js рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рджреЗрдЦрд╛ рдЧрдпрд╛ рдкрд░рд┐рдорд╛рдг)ред
    • рдЬрдирд░рд▓ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╣реА рдмрд┐рд▓реНрдб рдкрд░ Quota Exceeded, please upgrade your plan рд╕рдВрджреЗрд╢ред
    • рдЕрдиреБрд╡рд╛рдж рд░реЗрдВрдбрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ; рдореБрдЭреЗ рдПрд░рд░ рдорд┐рд▓рддрд╛ рд╣реИ Error: <T> used on the client-side outside of <GTProvider> , рдЬреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рдмрдЧ рд▓рдЧрддрд╛ рд╣реИред
    • gt-tanstack-start-react рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдЗрд╢реНрдпреВ рднреА рдорд┐рд▓рд╛: does not provide an export named 'printAST' - @formatjs/icu-messageformat-parser рдПрд░рд░, рдЬрд┐рд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рд░рд╣рд╛ рдерд╛ред рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрдВрдЯреЗрдирд░ рдиреЗ рдЗрд╕реЗ 24 рдШрдВрдЯреЛрдВ рдХреЗ рднреАрддрд░ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред
    • рдпреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ initializeGT() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдмрдВрдбрд▓ рдХреЛ рд╕рд╛рдлрд╝-рд╕реБрдерд░реЗ рдврдВрдЧ рд╕реЗ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛рддрд╛ рд╣реИред

    (Lingo.dev) (lingo.dev@0.133.9):

    • AI рдХреЛрдЯрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ (рдпрд╛ рд╕рд░реНрд╡рд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдирд╛), рдЬрд┐рд╕рд╕реЗ рднреБрдЧрддрд╛рди рдХреЗ рдмрд┐рдирд╛ рдмрд┐рд▓реНрдб / рдкреНрд░реЛрдбрдХреНрд╢рди рдЬреЛрдЦрд┐рдо рднрд░рд╛ рд╣реЛ рдЧрдпрд╛ред
    • рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рдЧрднрдЧ 40% рдХреЛ рдорд┐рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА .map рдХреЛ рдлреНрд▓реИрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдмреНрд▓реЙрдХреНрд╕ рдореЗрдВ рджреЛрдмрд╛рд░рд╛ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред
    • рдЙрдирдХрд╛ CLI рдХрд╛рдлреА рдмрдЧреНрд╕ рд╡рд╛рд▓рд╛ рд╣реИ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджреЗрддрд╛ рдерд╛ред
    • рдмрд┐рд▓реНрдб рдХреЗ рд╕рдордп, рдирдИ рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдЗрд╕рдиреЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП JSON рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдк рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рдХреАрдЬрд╝ рд╕реИрдХрдбрд╝реЛрдВ рдореМрдЬреВрджрд╛ рдХреАрдЬрд╝ рдХреЛ рдорд┐рдЯрд╛ рд░рд╣реА рд╣реИрдВред
    • рдореБрдЭреЗ TanStack Start рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд░рд┐рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛: рд▓реЛрдХреЗрд▓ рдмрджрд▓рдиреЗ рдкрд░ рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЗ рдлреЛрд░реНрд╕ рд░реА-рд░реЗрдВрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

    2 - рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рди

    (Wuchale) (wuchale@0.22.11):

    Wuchale рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд░рд┐рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ TanStack Start рдкрд░ рдРрдк рдХреЛ рдХрд╛рдо рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЗ рдлреЛрд░реНрд╕ рд░реА-рд░реЗрдВрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рднреА рдХрд╛рдлреА рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдСрдирдмреЛрд░реНрдбрд┐рдВрдЧ рдХрдард┐рди рд╣реЛ рдЬрд╛рддреА рд╣реИред

    3 - рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди

    (Paraglide) (@inlang/paraglide-js@2.15.1):

    Paraglide рдПрдХ рдЕрднрд┐рдирд╡, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдЗрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдЙрдирдХреА рдХрдВрдкрдиреА рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдореЗрд░реЗ Next.js рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╛ TanStack Start рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ред рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдФрд░ DX рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рд╣рд░ рдкреБрд╢ рд╕реЗ рдкрд╣рд▓реЗ JS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдБ, рдЬреЛ PR рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛рддрд╛рд░ рдорд░реНрдЬ рд╕рдВрдШрд░реНрд╖ рдХрд╛ рдЬреЛрдЦрд┐рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред

    paraglide рдкрд░ рдиреЛрдЯ: рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдХреЛрдб рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ 'lib size' рдореАрдЯреНрд░рд┐рдХ рд▓рдЧрднрдЧ 0 рд╣реИред рдХреЛрдб рдЬрдирд░реЗрд╢рди рдПрдХ рдЕрдЪреНрдЫреА рдЪреАрдЬрд╝ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд▓реЙрдЬрд┐рдХ (рд╣рд░ рдЬрдЧрд╣ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдмрдирд╛рдо рдХреЛрдИ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдирд╣реАрдВ, рдХреБрдХреА рдмрдирд╛рдо рд╕реНрдЯреЛрд░реЗрдЬ, рдЖрджрд┐) рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, Intlayer рдмрд┐рд▓реНрдб рдореЗрдВ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдмрдВрдбрд▓рд░ рдХреЛ рд▓реЙрдЬрд┐рдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЯреНрд░реА-рд╢реЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, paraglide рдФрд░ intlayer рдЕрдВрдд рдореЗрдВ i18next рдпрд╛ next-intl рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 6 рд╕реЗ 10 рдЧреБрдирд╛ рд╣рд▓реНрдХреЗ рд╕рдорд╛рдзрд╛рди рдмрди рдЬрд╛рддреЗ рд╣реИрдВред

    (Tolgee) (@tolgee/react@7.0.0):

    Tolgee рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдХрдИ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд╛рд▓реЗ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдард┐рди рд╣реИред рдпрд╣ рдЯрд╛рдЗрдк рд╕реЗрдлреНрдЯреА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрдВрдкрд╛рдЗрд▓ рд╕рдордп рдкрд░ рдЧрд╛рдпрдм рдХреАрдЬрд╝ рдХреЛ рдкрдХрдбрд╝рдирд╛ рднреА рдмрд╣реБрдд рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЧрд╛рдпрдм-рдХреА рдкрд╣рдЪрд╛рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ Tolgee рдХреА APIs рдХреЛ рдЕрдкрдиреА APIs рдХреЗ рд╕рд╛рде рд░реИрдк рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

    рдкреИрдХреЗрдЬ рдХрд╛рдлреА рднрд╛рд░реА рд╣реИ (~11.1kb, рдЬреЛ react-intlayer рд╕реЗ 2├Ч рдЕрдзрд┐рдХ рд╣реИ)ред

    TanStack Start рдкрд░ рдореБрдЭреЗ рд░рд┐рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рднреА рдереАрдВ: рд▓реЛрдХреЗрд▓ рдмрджрд▓рдиреЗ рдкрд░, рдореБрдЭреЗ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЛ рд░реА-рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рд▓реЛрдХреЗрд▓-рдЪреЗрдВрдЬ рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░рдирд╛ рдкрдбрд╝рд╛ рддрд╛рдХрд┐ рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗред

    (use-intl) (use-intl@4.9.1):

    use-intl рд╡рд░реНрддрдорд╛рди рдореЗрдВ React рдИрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рдмрд╕реЗ рдЯреНрд░реЗрдВрдбреА "intl" рдкреАрд╕ рд╣реИ ( next-intl рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рд╡рд╛рд░) рдФрд░ рдЗрд╕реЗ рдЕрдХреНрд╕рд░ AI рдПрдЬреЗрдВрдЯреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреБрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реА рджреГрд╖реНрдЯрд┐ рдореЗрдВ рдкрд░рдлреЙрд░рдореЗрдВрд╕-рдлрд╝рд░реНрд╕реНрдЯ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗред рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд▓реАрдХреЗрдЬ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдФрд░ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИред рдЗрд╕реА рдкреНрд░рдХрд╛рд░, рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ + рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ + TypeScript рдЯрд╛рдЗрдкреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдмрд╣реБрдд рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред

    TanStack Start рдкрд░ рдЖрдк Next.js-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЬрд╛рд▓ ( setRequestLocale, рд╕реНрдЯреЗрдЯрд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ) рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдореБрджреНрджрд╛ рд╡рд╣реА рд╣реИ: рд╕рдЦреНрдд рдЕрдиреБрд╢рд╛рд╕рди рдХреЗ рдмрд┐рдирд╛, рдмрдВрдбрд▓ рдЬрд▓реНрджреА рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдвреЛрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддрд┐-рд░реВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рд░рдЦрд░рдЦрд╛рд╡ рдХрд╖реНрдЯрджрд╛рдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

    (react-i18next) (react-i18next@17.0.2):

    react-i18next рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдРрдк i18n рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╢реБрд░реБрдЖрддреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ред рдЗрд╕рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдореНрдпреБрдирд┐рдЯреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реЗрдЯ рднреА рд╣реИред

    рдлрд┐рд░ рднреА, рдпрд╣ t('a.b.c') рдкрд░ рдмрдиреЗ рд╕реНрдЯреИрдХреНрд╕ рдЬреИрд╕реА рд╣реА рдкреНрд░рдореБрдЦ рдХрдорд┐рдпрд╛рдБ рд╕рд╛рдЭрд╛ рдХрд░рддрд╛ рд╣реИ: рдЕрдиреБрдХреВрд▓рди рд╕рдВрднрд╡ рд╣реИ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдФрд░ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЦрд░рд╛рдм рдкреНрд░рдерд╛рдУрдВ (рдиреЗрдорд╕реНрдкреЗрд╕ + рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ + рдЯрд╛рдЗрдкреНрд╕) рдореЗрдВ рдЧрд┐рд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реЛрддрд╛ рд╣реИред

    рдкреИрдХреЗрдЬ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднрд╛рд░реА рд╣реИ (~17.3kb, рдЬреЛ react-intlayer рдХрд╛ рд▓рдЧрднрдЧ 3.5├Ч рд╣реИ)ред

    рдореИрд╕реЗрдЬ рдлреЙрд░реНрдореЗрдЯреНрд╕ рднреА рднрд┐рдиреНрди рд╣реИрдВ: use-intl ICU MessageFormat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ i18next рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдлреЙрд░реНрдореЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ-рдЬреЛ рдЯреВрд▓реНрд╕ рдпрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВред

    (Lingui) (@lingui/core@5.3.0):

    Lingui рдХреА рдЕрдХреНрд╕рд░ рдкреНрд░рд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ lingui extract / lingui compile рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рдЧрд╛, рдЗрд╕ TanStack Start рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯ рд▓рд╛рдн рдХреЗ рдмрд┐рдирд╛ред рдореИрдВрдиреЗ рдЕрд╕рдВрдЧрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рднреА рджреЗрдЦреЗ рдЬреЛ AI рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛. t(), t'', i18n.t(), <Trans>) ред

    (react-intl) (react-intl@10.1.1):

    react-intl Format.js рдЯреАрдо рдХрд╛ рдПрдХ рдкрд░рдлреЙрд░рдореЗрдВрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред DX рд╡рд░реНрдмреЛрд╕ (verbose) рд░рд╣рддрд╛ рд╣реИ: const intl = useIntl() + intl.formatMessage({ id: "xx.xx" }) рдЬрдЯрд┐рд▓рддрд╛, рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рд░реНрдп рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЧреНрд▓реЛрдмрд▓ i18n рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ React рдЯреНрд░реА рдХреЗ рдХрдИ рдиреЛрдбреНрд╕ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред

    рдкреИрдХреЗрдЬ рднреА рднрд╛рд░реА рд╣реИ (~14.4kb, рдЬреЛ react-intlayer рдХрд╛ рд▓рдЧрднрдЧ 3├Ч рд╣реИ)ред

    4 - рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ

    рдЗрд╕ TanStack Start рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХрд╛ next-translate (Next.js рдкреНрд▓рдЧрдЗрди + getStaticProps) рдХреЗ рдмрд░рд╛рдмрд░ рдХреЛрдИ рд╕реАрдзрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЙрди рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд┐рдкрдХреНрд╡ рдИрдХреЛрд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд▓реА t() API рдЪрд╛рд╣рддреА рд╣реИрдВ, react-i18next рдФрд░ use-intl "рдЙрдЪрд┐рдд" рд╡рд┐рдХрд▓реНрдк рдмрдиреЗ рд╣реБрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓реАрдХреЗрдЬ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд░рд╣реЗрдВред

    (Intlayer) (react-intlayer@8.7.12):

    рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореЗрд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди react-intlayer рдкрд░ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рджреВрдБрдЧрд╛ред

    рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдп

    рдпрд╣ рд░рд╛рдп рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣реИ рдФрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдлрд┐рд░ рднреА, i18n рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдЕрдХреНрд╕рд░ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП const t = useTranslation('xx') + <>{t('xx.xx')}</> рдЬреИрд╕реЗ рдкреИрдЯрд░реНрди рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕рд╣рдорддрд┐ рджрд┐рдЦрддреА рд╣реИред

    React рдРрдкреНрд╕ рдореЗрдВ, рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ ReactNode рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдПрдХ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рд╣реИред рдпрд╣ рдЯрд╛рд▓реА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдУрд╡рд░рд╣реЗрдб (рднрд▓реЗ рд╣реА рд╡рд╣ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ) рдХреЛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред