рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдХреЛ рдкреВрдЫреЗрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕ рдкреГрд╖реНрда рдФрд░ рдЖрдкрдХреЗ рдЪреБрдиреЗ рд╣реБрдП AI рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╕рдВрд╕реНрдХрд░рдг рдЗрддрд┐рд╣рд╛рд╕
- "GitHub рд╕реНрдЯрд╛рд░ рддреБрд▓рдирд╛ рдЬреЛрдбрд╝реЗрдВ"v8.9.818/5/2026
- "рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди"v8.7.56/1/2026
рдЗрд╕ рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдХ AI рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХреА рдЧрдИ рд╣реИред
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдореВрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВрдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ GitHub рдкрд░ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП GitHub рд▓рд┐рдВрдХрджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ Markdown рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
Next.js i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ - 2026 рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЛрд░реНрдЯ
рдпрд╣ рдкреЗрдЬ Next.js рдкрд░ i18n рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИред
рд╡рд┐рд╖рдп рд╕реВрдЪреА
рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдмреЗрдВрдЪрдорд╛рд░реНрдХ
рдбрд╛рдпрдирд╛рдорд┐рдХ JSON рд▓реЛрдбрд┐рдВрдЧ
рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрд▓рд╕реНрдп рд╕реЗ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
рд╕реНрдХреЛрдкреНрдб JSON (рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ)
рдкреНрд░рддрд┐-рдкреГрд╖реНрда рдЕрдиреБрд╡рд╛рдж рдиреЗрдорд╕реНрдкреЗрд╕
I18n рдкреНрд░рджрд░реНрд╢рди рдмреЗрдВрдЪрдорд╛рд░реНрдХ
рдпрд╣ рдореАрдЯреНрд░рд┐рдХ рдХреНрдпрд╛ рд╣реИ?
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдВрдбрд▓ рдХрд╛ рдХреБрд▓ gzip-рд╕рдВрдкреАрдбрд╝рд┐рдд рдЖрдХрд╛рд░ред рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдФрд░ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рдж рдкреНрд░рджрд╛рддрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ?
рдПрдХ рдЫреЛрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдХрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЗрд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рддреЗрдЬрд╝ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╣реЛрддрд╛ рд╣реИред
рджреЗрдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛
рдкрд░рд┐рдгрд╛рдо рд╕рдВрджрд░реНрдн:
рдкреВрд░реНрдг рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ
рдкреВрд░рд╛ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВред
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдЧрд╣рд░рд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред рдореБрдЦреНрдп рдЬреЛрдЦрд┐рдо рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдПрдХ рдкреЗрдЬ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рд░ рдкреЗрдЬ рдФрд░ рд╣рд░ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рд▓реЛрдб рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдЖрдкрдХрд╛ рдРрдк рдмрдврд╝рддрд╛ рд╣реИ, рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ рддреЗрдЬреА рд╕реЗ рдмрдврд╝ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдкрд░рдлреЙрд░рдореЗрдВрд╕ рдХреЛ рдХрд╛рдлреА рдиреБрдХрд╕рд╛рди рдкрд╣реБрдБрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░, рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЗ рдмрд╛рдж рдЖрдкрдХрд╛ рдкреЗрдЬ рд▓рдЧрднрдЧ 4 рдЧреБрдирд╛ рдмрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХрд╛ рдПрдХ рдЕрдиреНрдп рдкреНрд░рднрд╛рд╡ рдзреАрдорд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИред рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдмрджрд▓рдирд╛ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рдо рд╣реИред
рдЪреВрдВрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрдард┐рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди рдореМрдЬреВрдж рд╣реИрдВ-рдХреБрдЫ DX (рдбреЗрд╡рд▓рдкрд░ рдЕрдиреБрднрд╡) рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВ, рдЕрдиреНрдп рдкрд░рдлреЙрд░рдореЗрдВрд╕ рдпрд╛ рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА рдкрд░, рдФрд░ рдЗрд╕реА рддрд░рд╣ред
Intlayer рдЗрди рд╕рднреА рдЖрдпрд╛рдореЛрдВ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
TL;DR
- Intlayer рдФрд░ next-translate: Next.js рдкрд░рдлреЙрд░рдореЗрдВрд╕ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡реЛрддреНрддрдо рд╡рд┐рдХрд▓реНрдк, рдЬреЛ рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдлреБрдЯрдкреНрд░рд┐рдВрдЯ рдФрд░ рдмреЗрд╣рддрд░реАрди рд╕реНрдЯреЗрдЯрд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рдкреЛрд░реНрдЯ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
- next-intl: рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдмрд╕реЗ рдЯреНрд░реЗрдВрдбреА рд╡рд┐рдХрд▓реНрдк, рд▓реЗрдХрд┐рди рдмрдбрд╝реЗрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ рднрд╛рд░реА рдФрд░ рдЬрдЯрд┐рд▓ рд╣реИред
- next-i18next: рд▓реЛрдХрдкреНрд░рд┐рдп рдФрд░ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕реЗ рднрд░рдкреВрд░, рд▓реЗрдХрд┐рди рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реИ (~3 рдЧреБрдирд╛ Intlayer)ред
- рдЗрдирд╕реЗ рдмрдЪреЗрдВ: рдЧрдВрднреАрд░ рдкрд░рдлреЙрд░рдореЗрдВрд╕ рд╕рдорд╕реНрдпрд╛рдУрдВ, рд╡реЗрдВрдбрд░ рд▓реЙрдХ-рдЗрди рдФрд░ рдмрд┐рд▓реНрдб рдХреЛ рд░реЛрдХрдиреЗ рд╡рд╛рд▓реЗ рдмрдЧреНрд╕ рдХреЗ рдХрд╛рд░рдг gt-next рдФрд░ lingo.dev рд╕реЗ рдмрдЪреЗрдВред
рдЕрдкрдиреЗ рдРрдк рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рдореБрдлрд╝реНрдд рд╕реНрдХреИрдирд░ рдмрдирд╛рдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдпрд╣рд╛рдБ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдорд╕реНрдпрд╛
рдорд▓реНрдЯреАрд▓рд┐рдВрдЧреБрдЕрд▓ рдРрдк рдХреЗ рдмрдВрдбрд▓ рдкрд░ рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рдореБрдЦреНрдп рддрд░реАрдХреЗ рд╣реИрдВ:
- рдЕрдкрдиреЗ JSON (рдпрд╛ рд╕рд╛рдордЧреНрд░реА) рдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ / рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ / рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдмрдВрдбрд▓рд░ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рдЕрдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЯреНрд░реА-рд╢реЗрдХ (tree-shake) рдХрд░ рд╕рдХреЗред
- рдЕрдкрдиреЗ рдкреЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднрд╛рд╖рд╛ рдореЗрдВ рдбрд╛рдпрдиреЗрдорд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВред
рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреА рддрдХрдиреАрдХреА рд╕реАрдорд╛рдПрдВ:
рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ
рднрд▓реЗ рд╣реА рдЖрдк Webpack рдпрд╛ Turbopack рдХреЗ рд╕рд╛рде [locale]/page.tsx рдЬреИрд╕реЗ рд░реВрдЯ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рднрд▓реЗ рд╣реА generateStaticParams рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ, рдмрдВрдбрд▓рд░ locale рдХреЛ рдПрдХ рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпрд╣ рд╣рд░ рдкреЗрдЬ рдореЗрдВ рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдЦреАрдВрдЪ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рддрд░реАрдХрд╛ рдбрд╛рдпрдиреЗрдорд┐рдХ рдЗрдореНрдкреЛрд░реНрдЯ (рдЙрджрд╛. import('./locales/${locale}.json')) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдордЧреНрд░реА рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред
рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рдЬреЛ рд╣реЛрддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ Next.js рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ JS рдмрдВрдбрд▓ (рдЙрджрд╛. ./locales_fr_12345.js) рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдЗрдЯ рдХреНрд▓рд╛рдЗрдпрдВрдЯ рдХреЛ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЬрдм рдкреЗрдЬ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрд╡рд╢реНрдпрдХ JS рдлрд╝рд╛рдЗрд▓ (рдЙрджрд╛. ./locales_fr_12345.js) рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд HTTP рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдиреНрдп рддрд░реАрдХрд╛ JSON рдХреЛ рдбрд╛рдпрдиреЗрдорд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПfetch()рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЬрдм JSON/publicрдХреЗ рдЕрдВрддрд░реНрдЧрдд рд░рд╣рддрд╛ рд╣реИ, рддреЛTolgeeрдЗрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╛next-translate, рдЬреЛ рд╕рд╛рдордЧреНрд░реА рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПgetStaticPropsрдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╡рд╛рд╣ рд╕рдорд╛рди рд╣реИ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрд╕реЗрдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд HTTP рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
рдХрдВрдЯреЗрдВрдЯ рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ (рд╕рд╛рдордЧреНрд░реА рд╡рд┐рднрд╛рдЬрди)
рдпрджрд┐ рдЖрдк const t = useTranslation() + t('my-object.my-sub-object.my-key') рдЬреИрд╕реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рдкреВрд░рд╛ JSON рдмрдВрдбрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЙрд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХреЗ рдФрд░ рдХреА (key) рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХреЗред рдЙрд╕ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдмрд╣реБрдд рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рддрдм рднреА рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдкреЗрдЬ рдкрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдЖрдкрд╕реЗ рдкреНрд░рддрд┐ рдкреЗрдЬ рдиреЗрдорд╕реНрдкреЗрд╕ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ-рдЙрджрд╛. next-i18next, next-intl, lingui, next-translate, next-international ред
рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, Paraglide рдмрд┐рд▓реНрдб рд╕реЗ рдкрд╣рд▓реЗ JSON рдХреЛ const en_my_var = () => 'my value' рдЬреИрд╕реЗ рдлреНрд▓реИрдЯ рд╕рд┐рдореНрдмрд▓реНрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░рдг рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдпрд╣ рдкреЗрдЬ рдкрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдЕрднреА рднреА рдЕрдкрдиреЗ рдЯреНрд░реЗрдб-рдСрдлрд╝ рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ, Intlayer рдПрдХ рдмрд┐рд▓реНрдб-рдЯрд╛рдЗрдо рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ useIntlayer('my-key') рдХреЛ рд╕реАрдзреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПред
рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА
рдЗрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдХреА рд╣реИ:
Base App(рдХреЛрдИ i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдирд╣реАрдВ)next-intlayer(v8.7.12)next-i18next(v16.0.5)next-intl(v4.9.1)@lingui/core(v5.3.0)next-translate(v3.1.2)next-international(v1.3.1)@inlang/paraglide-js(v2.15.1)@tolgee/react(v7.0.0)@lingo.dev/compiler(v0.4.0)wuchale(v0.22.11)gt-next(v6.16.5)
рдореИрдВрдиреЗ рдПрдкреНрд░ рд░рд╛рдЙрдЯрд░ рдХреЗ рд╕рд╛рде Next.js рд╡рд░реНрдЬрди 16.2.4 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ 10 рдкреЗрдЬреЛрдВ рдФрд░ 10 рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрднрд╛рд╖реА рдРрдк рдмрдирд╛рдпрд╛ред
рдореИрдВрдиреЗ рдЪрд╛рд░ рд▓реЛрдбрд┐рдВрдЧ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА:
рд╕рднреА рдбреЗрдЯрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдореЛрдбрд▓ рдореЗрдВ рдЦреЛрд▓реЗрдВ
| рд░рдгрдиреАрддрд┐ | рдХреЛрдИ рдиреЗрдорд╕реНрдкреЗрд╕ рдирд╣реАрдВ (рдЧреНрд▓реЛрдмрд▓) | рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рд╕рд╛рде (рд╕реНрдХреЙрдкреНрдб) |
|---|---|---|
| рд╕реНрдЯреЗрдЯрд┐рдХ рд▓реЛрдбрд┐рдВрдЧ | Static: рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╕рдм рдХреБрдЫ рдореЗрдореЛрд░реА рдореЗрдВред | Scoped static: рдиреЗрдорд╕реНрдкреЗрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд; рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рд╕рдм рдХреБрдЫ рд▓реЛрдбред |
| рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ | Dynamic: рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдСрди-рдбрд┐рдорд╛рдВрдб рд▓реЛрдбрд┐рдВрдЧред | Scoped dynamic: рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рд▓реЛрдХреЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рджрд╛рдиреЗрджрд╛рд░ рд▓реЛрдбрд┐рдВрдЧред |
рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢
- Static: рд╕рд░рд▓; рд╢реБрд░реБрдЖрддреА рд▓реЛрдб рдХреЗ рдмрд╛рдж рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЗрдЯреЗрдВрд╕реА рдирд╣реАрдВред рдиреБрдХрд╕рд╛рди: рдмрдВрдбрд▓ рдХрд╛ рдмрдбрд╝рд╛ рдЖрдХрд╛рд░ред
- Dynamic: рд╢реБрд░реБрдЖрддреА рд╡рдЬрд╝рди рдХрдо рдХрд░рддрд╛ рд╣реИ (рд▓реЗрдЬрд╝реА-рд▓реЛрдбрд┐рдВрдЧ)ред рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рд▓реЛрдХреЗрд▓реНрд╕ рд╣реЛрдВ рддреЛ рдЖрджрд░реНрд╢ рд╣реИред
- Scoped static: рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд (рд▓реЙрдЬрд┐рдХрд▓ рд╕реЗрдкрд░реЗрд╢рди) рд░рдЦрддрд╛ рд╣реИред
- Scoped dynamic: рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ рдФрд░ рдкрд░рдлреЙрд░рдореЗрдВрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдгред рд╡рд░реНрддрдорд╛рди рд╡реНрдпреВ рдФрд░ рд╕рдХреНрд░рд┐рдп рд▓реЛрдХреЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡рд╛рд▓реА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХреНрдпрд╛ рдорд╛рдкрд╛:
рдореИрдВрдиреЗ рд╣рд░ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╣реА рдмрд╣реБрднрд╛рд╖реА рдРрдк рдЪрд▓рд╛рдпрд╛, рдлрд┐рд░ рд▓рд┐рдЦрд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХреНрдпрд╛ рдЖрдпрд╛ рдФрд░ рдЪреАрдЬрд╝реЛрдВ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрд╛ред рдЖрдХрд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдм рдХрдореНрдкреНрд░реЗрд╢рди рдХреЗ рдмрд╛рдж рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬрд╝реЛрдВ рдХреЗ рдХрдЪреНрдЪреЗ рд╕реЛрд░реНрд╕ рдХрд╛рдЙрдВрдЯреНрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдХрд░реАрдм рд╣реИред
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдХрд╛рд░: рдмрдВрдбрд▓рд┐рдВрдЧ, рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдФрд░ рдорд┐рдиреАрдлрд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рдж, i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ рдЦрд╛рд▓реА рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реНрд╕ (рдЙрджрд╛.
NextIntlClientProvider) + рд╣реБрдХреНрд╕ (рдЙрджрд╛.useTranslations) рдХреЛрдб рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред рдЗрд╕рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд▓реЛрдбрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╕рд╛рдордЧреНрд░реА рдЖрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд┐рддрдиреА "рдорд╣рдВрдЧреА" рд╣реИредрдкреНрд░рддрд┐ рдкреЗрдЬ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ: рдкреНрд░рддреНрдпреЗрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░реВрдЯ рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрд╕ рд╡рд┐рдЬрд┐рдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕реБрдЗрдЯ рдХреЗ рдкреЗрдЬреЛрдВ (рдФрд░ рд▓реЛрдХреЗрд▓реНрд╕ рдХреЗ рдкрд╛рд░ рдЬрд╣рд╛рдБ рд░рд┐рдкреЛрд░реНрдЯ рдЙрдиреНрд╣реЗрдВ рд░реЛрд▓ рдХрд░рддреА рд╣реИ) рдХреЗ рдФрд╕рдд рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдкрд╛ рдЧрдпрд╛ рд╣реИред рднрд╛рд░реА рдкреЗрдЬ рдзреАрдореЗ рдкреЗрдЬ рд╣реЛрддреЗ рд╣реИрдВред
рдЕрдиреНрдп рд▓реЛрдХреЗрд▓реНрд╕ рд╕реЗ рд▓реАрдХреЗрдЬ: рдпрд╣ рдЙрд╕реА рдкреЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА рд╣реИ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдЬреЛ рдСрдбрд┐рдЯ рдХрд┐рдП рдЧрдП рдкреЗрдЬ рдореЗрдВ рдЧрд▓рддреА рд╕реЗ рд▓реЛрдб рд╣реЛ рдЬрд╛рддреА рд╣реИред рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдмрдЪрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛.
/en/aboutрдкреЗрдЬ рдмрдВрдбрд▓ рдореЗрдВ/fr/aboutрдкреЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА)редрдЕрдиреНрдп рд░реВрдЯреНрд╕ рд╕реЗ рд▓реАрдХреЗрдЬ: рдРрдк рдореЗрдВ рдЕрдиреНрдп рд╕реНрдХреНрд░реАрдиреНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд╣реА рд╡рд┐рдЪрд╛рд░: рдХреНрдпрд╛ рдЙрдирдХреА рдХреЙрдкреА рддрдм рднреА рд╕рд╛рде рдЖ рд░рд╣реА рд╣реИ рдЬрдм рдЖрдкрдиреЗ рдХреЗрд╡рд▓ рдПрдХ рдкреЗрдЬ рдЦреЛрд▓рд╛ рд╣реИ (рдЙрджрд╛.
/en/contactрдкреЗрдЬ рдмрдВрдбрд▓ рдореЗрдВ/en/aboutрдкреЗрдЬ рдХреА рд╕рд╛рдордЧреНрд░реА)ред рдЙрдЪреНрдЪ рд╕реНрдХреЛрд░ рдЦрд░рд╛рдм рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рдмрдВрдбрд▓реНрд╕ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИредрдФрд╕рдд рдХрдВрдкреЛрдиреЗрдВрдЯ рдмрдВрдбрд▓ рдЖрдХрд╛рд░: рд╕рд╛рдорд╛рдиреНрдп рдпреВрдЖрдИ (UI) рдкреАрд╕ рдХреЛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдРрдк рдирдВрдмрд░ рдХреЗ рдЕрдВрджрд░ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдЪреБрдкрдЪрд╛рдк рд░реЛрдЬрд╝рдорд░реНрд░рд╛ рдХреЗ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рдлреБрд▓рд╛ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдкрдХрд╛ рдХрдВрдкреЛрдиреЗрдВрдЯ рд░реА-рд░реЗрдВрдбрд░ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдореЗрдореЛрд░реА рд╕реЗ рдЙрд╕ рдкреВрд░реЗ рдбреЗрдЯрд╛ рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рдХрд┐рд╕реА рднреА рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд╛рд▓ JSON рдЬреЛрдбрд╝рдирд╛, рдЕрдкреНрд░рдпреБрдХреНрдд рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рдмрдбрд╝реЗ рд╕реНрдЯреЛрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдЬреИрд╕рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рдкрд░рдлреЙрд░рдореЗрдВрд╕ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛ред
рднрд╛рд╖рд╛ рд╕реНрд╡рд┐рдЪ рд░рд┐рд╕реНрдкреЙрдиреНрд╕рд┐рд╡рдиреЗрд╕: рдореИрдВрдиреЗ рдРрдк рдХреЗ рдЕрдкрдиреЗ рдХрдВрдЯреНрд░реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд╛рд╖рд╛ рдмрджрд▓ рджреА рдФрд░ рд╕рдордп рдорд╛рдкрд╛ рдХрд┐ рдЬрдм рддрдХ рдкреЗрдЬ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рд╣реЛ рдЧрдпрд╛-рдЬреЛ рдПрдХ рд╡рд┐рдЬрд┐рдЯрд░ рдиреЛрдЯрд┐рд╕ рдХрд░реЗрдЧрд╛, рди рдХрд┐ рдПрдХ рд▓реИрдм рдорд╛рдЗрдХреНрд░реЛ-рд╕реНрдЯреЗрдкред
рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рдж рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛рд░реНрдп: рдПрдХ рд╕рдВрдХреАрд░реНрдг рдЕрдиреБрд╡рд░реНрддреА: рд╕реНрд╡рд┐рдЪ рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирдИ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкреЗрдВрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рдкреНрд░рдпрд╛рд╕ рд▓рдЧрд╛ред рдЙрдкрдпреЛрдЧреА рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм "рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛" рд╕рдордп рдФрд░ рдлрд╝реНрд░реЗрдорд╡рд░реНрдХ рд▓рд╛рдЧрдд рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреЗрдЬ рд▓реЛрдб рд╕рдордп: рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕реЗ рд▓реЗрдХрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреЗрдЬ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдорд╛рдиреЗ рдЬрд╛рдиреЗ рддрдХ рдХрд╛ рд╕рдордпред рдХреЛрд▓реНрдб рд╕реНрдЯрд╛рд░реНрдЯреНрд╕ (cold starts) рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред
рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рд╕рдордп: рдЬрдм рдРрдк рдЗрд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреНрд▓рд╛рдЗрдпрдВрдЯ рд╕рд░реНрд╡рд░ HTML рдХреЛ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХреЗрдВред рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдПрдХ рдбреИрд╢ (-) рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рдЗрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдЖрдВрдХрдбрд╝рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред
GitHub рд╕рд┐рддрд╛рд░реЗ
GitHub рд╕рд┐рддрд╛рд░реЗ рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛, рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдФрд░ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдХрд╛ рдПрдХ рдордЬрдмреВрдд рд╕рдВрдХреЗрддрдХ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рддрдХрдиреАрдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ рдорд╛рдк рдирд╣реАрдВ рд╣реИ, рд╡реЗ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЙрдкрдпреЛрдЧреА рдкрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдкреНрд░рдЧрддрд┐ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдЕрдкрдирд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд░рдЦрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд┐рддрд╛рд░реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмреАрдЪ рдХрд░реНрд╖рдг рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ
1 - рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди
gt-next рдпрд╛ lingo.dev рдЬреИрд╕реЗ рдХреБрдЫ рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд╡реЗ рд╡реЗрдВрдбрд░ рд▓реЙрдХ-рдЗрди (vendor lock-in) рдХреЛ рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдХрдИ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдХрднреА рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП рдирд╣реАрдВ рдкрд╛рдпрд╛-рди рддреЛ TanStack Start рдкрд░ рдФрд░ рди рд╣реА Next.js рдкрд░ред
рд╕рд╛рдордирд╛ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЗ:
(General Translation) (gt-next@6.16.5):
- 110kb рдРрдк рдХреЗ рд▓рд┐рдП,
gt-next440kb рд╕реЗ рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред - рдЬрдирд░рд▓ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╣реА рдмрд┐рд▓реНрдб рдкрд░
Quota Exceeded, please upgrade your planрд╕рдВрджреЗрд╢ред - рдЕрдиреБрд╡рд╛рдж рд░реЗрдВрдбрд░ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ; рдореБрдЭреЗ рдПрд░рд░ рдорд┐рд▓рддрд╛ рд╣реИ
Error: <T> used on the client-side outside of <GTProvider>, рдЬреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рдмрдЧ рд▓рдЧрддрд╛ рд╣реИред - gt-next рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдЗрд╢реНрдпреВ рднреА рдорд┐рд▓рд╛:
does not provide an export named 'printAST' - @formatjs/icu-messageformat-parserрдПрд░рд░, рдЬрд┐рд╕рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рд╣реЛ рд░рд╣рд╛ рдерд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрдВрдЯреЗрдирд░ рдиреЗ рдЗрд╕реЗ 24 рдШрдВрдЯреЛрдВ рдХреЗ рднреАрддрд░ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред - рд▓рд╛рдЗрдмреНрд░реЗрд░реА Next.js рдкреЗрдЬреЛрдВ рдХреЗ рд╕реНрдЯреЗрдЯрд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рддреА рд╣реИред
(Lingo.dev) (@lingo.dev/compiler@0.4.0):
- AI рдХреЛрдЯрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдмрд┐рд▓реНрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЧрдпрд╛-рдЗрд╕рд▓рд┐рдП рдЖрдк рднреБрдЧрддрд╛рди рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░реЛрдбрдХреНрд╢рди рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗред
- рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рдЧрднрдЧ 40% рдХреЛ рдорд┐рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА
.mapрдХреЛ рдлреНрд▓реИрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдмреНрд▓реЙрдХреНрд╕ рдореЗрдВ рджреЛрдмрд╛рд░рд╛ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛ред - рдЙрдирдХрд╛ CLI рдХрд╛рдлреА рдмрдЧреНрд╕ рд╡рд╛рд▓рд╛ рд╣реИ рдФрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░ рджреЗрддрд╛ рдерд╛ред
- рдмрд┐рд▓реНрдб рдХреЗ рд╕рдордп, рдирдИ рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдЗрд╕рдиреЗ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП JSON рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд┐рдЯрд╛ рджрд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреБрдЫ рдХреАрдЬрд╝ (keys) 300 рд╕реЗ рдЕрдзрд┐рдХ рдореМрдЬреВрджрд╛ рдХреАрдЬрд╝ рдХреЛ рдорд┐рдЯрд╛ рд╕рдХрддреА рдереАрдВред
2 - рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд╛рдзрд╛рди
(Wuchale) (wuchale@0.22.11):
Wuchale рдХреЗ рдкреАрдЫреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд░рд┐рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЗ рдореБрджреНрджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдРрдк рдХреЛ рдХрд╛рдо рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЗ рдлреЛрд░реНрд╕ рд░реА-рд░реЗрдВрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рднреА рдХрд╛рдлреА рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдСрдирдмреЛрд░реНрдбрд┐рдВрдЧ рдХрдард┐рди рд╣реЛ рдЬрд╛рддреА рд╣реИред
(Paraglide) (@inlang/paraglide-js@2.15.1):
Paraglide рдПрдХ рдЕрднрд┐рдирд╡, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдЗрд╕ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдореЗрд░реЗ Next.js рдпрд╛ TanStack Start рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ред рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдФрд░ DX рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд╣рд░ рдкреБрд╢ рд╕реЗ рдкрд╣рд▓реЗ JS рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдЬреЛ PR рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдорд░реНрдЬ рд╕рдВрдШрд░реНрд╖ рдХрд╛ рдЬреЛрдЦрд┐рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЯреВрд▓ Next.js рдХреА рддреБрд▓рдирд╛ рдореЗрдВ Vite рдкрд░ рдЕрдзрд┐рдХ рдХреЗрдВрджреНрд░рд┐рдд рд▓рдЧрддрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, Paraglide рд╕рд╛рдордЧреНрд░реА рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ (рдЙрджрд╛. React context) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП, рдпрд╣ localStorage / рдХреБрдХреА рдЖрджрд┐ рд╕реЗ рд▓реЛрдХреЗрд▓ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рддрд░реНрдХ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдВрдкреЛрдиреЗрдВрдЯ рд░рд┐рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред
Paraglide рдкрд░ рдиреЛрдЯ: рдпрд╣ рд╕рдорд╛рдзрд╛рди рдЗрдореНрдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдХреЛрдб рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ 'рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдХрд╛рд░' рдореАрдЯреНрд░рд┐рдХ рд▓рдЧрднрдЧ 0 рд╣реИред рдХреЛрдб рдЬреЗрдирд░реЗрд╢рди рдПрдХ рдЕрдЪреНрдЫреА рдЪреАрдЬрд╝ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдлрдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рд▓реЙрдЬрд┐рдХ (рд╕рднреА рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдмрдирд╛рдо рдХреЛрдИ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдирд╣реАрдВ, рдХреБрдХреАрдЬрд╝ рдмрдирд╛рдо рд╕реНрдЯреЛрд░реЗрдЬ, рдЖрджрд┐) рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, Intlayer рдмрд┐рд▓реНрдб рдореЗрдВ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдмрдВрдбрд▓рд░ рдХреЛ рд▓реЙрдЬрд┐рдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЯреНрд░реА-рд╢реЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, paraglide рдФрд░ intlayer рдЕрдВрдд рдореЗрдВ i18next рдпрд╛ next-intl рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 6 рд╕реЗ 10 рдЧреБрдирд╛ рд╣рд▓реНрдХреЗ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдмрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
3 - рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди
(Tolgee) (@tolgee/react@7.0.0):
Tolgee рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдХрдИ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдЕрдкрдирд╛рдирд╛ рд╕рдорд╛рди рдЙрдкрдХрд░рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдард┐рди рд╣реИред рдпрд╣ рдЯрд╛рдЗрдк рд╕реЗрдлреНрдЯреА (type safety) рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрдВрдкрд╛рдЗрд▓ рд╕рдордп рдкрд░ рдЧрд╛рдпрдм рдХреАрдЬрд╝ рдХреЛ рдкрдХрдбрд╝рдирд╛ рднреА рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЧрд╛рдпрдм-рдХреА рдкрд╣рдЪрд╛рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ Tolgee рдХреЗ рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЛ рдЕрдкрдиреЗ рдлрдВрдХреНрд╢рдиреНрд╕ рдХреЗ рд╕рд╛рде рд░реИрдк рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
(Next Intl) (next-intl@4.9.1):
next-intl рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдмрд╕реЗ рдЯреНрд░реЗрдВрдбреА рд╡рд┐рдХрд▓реНрдк рд╣реИ рдФрд░ рдЬрд┐рд╕реЗ AI рдПрдЬреЗрдВрдЯ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреБрд╢ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рджреГрд╖реНрдЯрд┐ рдореЗрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗред рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд▓реАрдХреЗрдЬ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдЬрдЯрд┐рд▓ рд╣реИред рдбрд╛рдпрдиреЗрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ + рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ + TypeScript рдЯрд╛рдЗрдкреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдмрд╣реБрдд рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рдкреИрдХреЗрдЬ рднреА рдХрд╛рдлреА рднрд╛рд░реА рд╣реИ ( NextIntlClientProvider + useTranslations рдХреЗ рд▓рд┐рдП ~13kb, рдЬреЛ next-intlayer рдХреЗ 2 рдЧреБрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ)ред next-intl рдкрд╣рд▓реЗ Next.js рдкреЗрдЬреЛрдВ рдХреЗ рд╕реНрдЯреЗрдЯрд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рддрд╛ рдерд╛ред рдпрд╣ setRequestLocale() рдирд╛рдо рдХрд╛ рдПрдХ рд╣реЗрд▓реНрдкрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред en.json / fr.json рдЬреИрд╕реА рдХреЗрдВрджреНрд░рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдордЧреНрд░реА рдХреЗ en/shared.json / fr/shared.json / es/shared.json рдЬреИрд╕реЗ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╕реНрдЯреЗрдЯрд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЕрднреА рднреА рдЯреВрдЯ рдЬрд╛рддреА рд╣реИред
(Next I18next) (next-i18next@16.0.5):
next-i18next рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдк рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдРрдкреНрд╕ i18n рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдХрдИ рдХрдореНрдпреБрдирд┐рдЯреА рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВред рдЗрд╕рдореЗрдВ next-intl рдЬреИрд╕реА рд╣реА рдкреНрд░рдореБрдЦ рдХрдорд┐рдпрд╛рдБ рд╣реИрдВред рдкреИрдХреЗрдЬ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рднрд╛рд░реА рд╣реИ ( I18nProvider + useTranslation рдХреЗ рд▓рд┐рдП ~18kb, next-intlayer рдХреЗ рд▓рдЧрднрдЧ 3 рдЧреБрдирд╛)ред
рдореИрд╕реЗрдЬ рдлреЙрд░реНрдореЗрдЯреНрд╕ рднреА рднрд┐рдиреНрди рд╣реИрдВ: next-intl ICU MessageFormat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ i18next рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдлреЙрд░реНрдореЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
(Next International) (next-international@1.3.1):
next-international рднреА рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди next-intl рдпрд╛ next-i18next рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдореЗрдВ рдиреЗрдорд╕реНрдкреЗрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдП scopedT() рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдкрд░ рд▓рдЧрднрдЧ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред
(Lingui) (@lingui/core@5.3.0):
Lingui рдХреА рдЕрдХреНрд╕рд░ рдкреНрд░рд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ lingui extract / lingui compile рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рдЧрд╛, рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯ рд▓рд╛рдн рдХреЗред рдореИрдВрдиреЗ рдЕрд╕рдВрдЧрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рднреА рджреЗрдЦреЗ рдЬреЛ AI рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛. t(), t'', i18n.t(), <Trans>) ред
4 - рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ
(Next Translate) (next-translate@3.1.2):
рдпрджрд┐ рдЖрдк t() рд╕реНрдЯрд╛рдЗрд▓ рдХреА API рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ next-translate рдореЗрд░реА рдореБрдЦреНрдп рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╣реИред рдпрд╣ next-translate-plugin рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрдВрджрд░ рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ Webpack / Turbopack рд▓реЛрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ getStaticProps рдореЗрдВ рдиреЗрдорд╕реНрдкреЗрд╕ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рд╣рд▓реНрдХрд╛ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ (~2.5kb)ред рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ рдХреЗ рдкрд╛рд░, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдкреНрд░рддрд┐ рдкреЗрдЬ рдпрд╛ рд░реВрдЯ рдиреЗрдорд╕реНрдкреЗрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ next-intl рдпрд╛ next-i18next рдЬреИрд╕реЗ рдореБрдЦреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред рд╡рд░реНрдЬрди 3.1.2 рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕реНрдЯреЗрдЯрд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рдереА; Next.js рдбрд╛рдпрдиреЗрдорд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд░ рд╡рд╛рдкрд╕ рдЪрд▓рд╛ рдЧрдпрд╛ред
(Intlayer) (next-intlayer@8.7.12):
рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореЗрд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди next-intlayer рдкрд░ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рджреВрдБрдЧрд╛ред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдп
рдпрд╣ рд░рд╛рдп рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣реИ рдФрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред i18n рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдЕрдХреНрд╕рд░ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП const t = useTranslation('xx') + <>{t('xx.xx')}</> рдЬреИрд╕реЗ рдкреИрдЯрд░реНрди рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕рд╣рдорддрд┐ рджрд┐рдЦрддреА рд╣реИред
React рдРрдкреНрд╕ рдореЗрдВ, рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ ReactNode рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдПрдХ рдПрдВрдЯреА-рдкреИрдЯрд░реНрди рд╣реИред рдпрд╣ рдЯрд╛рд▓реА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдУрд╡рд░рд╣реЗрдб (рднрд▓реЗ рд╣реА рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ) рдХреЛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред
