рдЗрд╕ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрдкрд▓рдмреНрдз рд╣реИред
рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдХреЛ рдкреВрдЫреЗрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕ рдкреГрд╖реНрда рдФрд░ рдЖрдкрдХреЗ рдЪреБрдиреЗ рд╣реБрдП AI рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╕рдВрд╕реНрдХрд░рдг рдЗрддрд┐рд╣рд╛рд╕
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдгv7.0.61/11/2025
рдЗрд╕ рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдХ AI рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХреА рдЧрдИ рд╣реИред
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдореВрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВрдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ GitHub рдкрд░ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП GitHub рд▓рд┐рдВрдХрджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ Markdown рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
2025 рдореЗрдВ next-i18next рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ Next.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ
рд╕рд╛рдордЧреНрд░реА рд╕реВрдЪреА
next-i18next рдХреНрдпрд╛ рд╣реИ?
next-i18next Next.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг (i18n) рд╕рдорд╛рдзрд╛рди рд╣реИред рдЬрдмрдХрд┐ рдореВрд▓ next-i18next рдкреИрдХреЗрдЬ рдкреЗрдЬреЗрд╕ рд░рд╛рдЙрдЯрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдЧрд╛рдЗрдб рдЖрдкрдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдзреБрдирд┐рдХ App Router рдХреЗ рд╕рд╛рде i18next рдФрд░ react-i18next рдХрд╛ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ i18next рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ рдиреЗрдорд╕реНрдкреЗрд╕ (рдЬреИрд╕реЗ,
common.json,about.json) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреЗрд╣рддрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдПред - рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдХреБрд╢рд▓рддрд╛рдкреВрд░реНрд╡рдХ рд▓реЛрдб рдХрд░реЗрдВ рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдиреЗрдорд╕реНрдкреЗрд╕ рд▓реЛрдб рдХрд░рдХреЗ, рдЬрд┐рд╕рд╕реЗ рдмрдВрдбрд▓ рдЖрдХрд╛рд░ рдХрдо рд╣реЛрддрд╛ рд╣реИред
- рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ рдЙрдЪрд┐рдд SSR рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рдеред
- TypeScript рд╕рдорд░реНрдерди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдЯрд╛рдЗрдк-рд╕реЗрдл рд▓реЛрдХрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред
- SEO рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ рдЙрдЪрд┐рдд рдореЗрдЯрд╛рдбреЗрдЯрд╛, рд╕рд╛рдЗрдЯрдореИрдк, рдФрд░ robots.txt рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреЗ рд╕рд╛рдеред
рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк next-intl рдЧрд╛рдЗрдб рдХреЛ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╕реАрдзреЗ Intlayer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреБрд▓рдирд╛ рджреЗрдЦреЗрдВ next-i18next vs next-intl vs Intlayer рдореЗрдВред
рдпреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╣рд╛рдБ рд╕реЗ рдЖрдИрдВ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП JavaScript i18n рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдкрдврд╝реЗрдВред
Next.js рдкрд░ next-i18next рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ benchmark рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ
рд╕реЗрдЯрдЕрдк рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рдордЭрдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИ рдХрд┐ рдЖрдкрдХреА i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реА performance рдФрд░ bundle рдкрд░ рдХреНрдпрд╛ рдЕрд╕рд░ рдбрд╛рд▓рддреА рд╣реИред i18n benchmark рдПрдХ рд╣реА 10 рдкреЗрдЬ рдФрд░ 10 locale рд╡рд╛рд▓реЗ Next.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреНрд░рдореБрдЦ i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЕрд╕рд▓реА bundle рдЖрдХрд╛рд░, string leakage рдФрд░ hydration overhead рдХреЛ рдорд╛рдкрд╛ рдЬрд╛ рд╕рдХреЗред
рдореАрдЯреНрд░рд┐рдХ
рдбрд╛рдпрдирд╛рдорд┐рдХ JSON рд▓реЛрдбрд┐рдВрдЧ
рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрд▓рд╕реНрдп рд╕реЗ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
рд╕реНрдХреЛрдкреНрдб JSON (рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ)
рдкреНрд░рддрд┐-рдкреГрд╖реНрда рдЕрдиреБрд╡рд╛рдж рдиреЗрдорд╕реНрдкреЗрд╕
рдпрд╣ рдореАрдЯреНрд░рд┐рдХ рдХреНрдпрд╛ рд╣реИ?
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдВрдбрд▓ рдХрд╛ рдХреБрд▓ gzip-рд╕рдВрдкреАрдбрд╝рд┐рдд рдЖрдХрд╛рд░ред рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдФрд░ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рдж рдкреНрд░рджрд╛рддрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ?
рдПрдХ рдЫреЛрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдХрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЗрд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рддреЗрдЬрд╝ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╣реЛрддрд╛ рд╣реИред
рджреЗрдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛
Next.js рдкрд░ next-i18next рдХреЗ рдореБрдЦреНрдп рдЖрдВрдХрдбрд╝реЗ (gzip):
рд╕рднреА рдбреЗрдЯрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдореЛрдбрд▓ рдореЗрдВ рдЦреЛрд▓реЗрдВ
| рд╕реЗрдЯрдЕрдк | рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдХрд╛рд░ | рдФрд╕рдд рдкреЗрдЬ JS | рдЕрдиреНрдп locale leak | рдЕрдиреНрдп рдкреЗрдЬ leak |
|---|---|---|---|---|
| рдмреЗрд╕ (рдмрд┐рдирд╛ i18n) | - | 141.0 KB | 0.0% | 0.0% |
next-i18next | 19.7 KB | 169.5 KB | 50.0% | 89.8% |
@intlayer/next-i18next (compat) | 9.4 KB | 150.7 KB | 0.0% | 0.0% |
next-intlayer (native Intlayer) | 5.5 KB | 141.3 KB | 0.0% | 0.0% |
рдореБрдЦреНрдп рдирд┐рд╖реНрдХрд░реНрд╖:
- Namespace splitting рдЬрд╝рд░реВрд░реА рд╣реИ: рд╕рд╛рдзрд╛рд░рдг рд╕реЗрдЯрдЕрдк рдореЗрдВ,
next-i18nextрд╣рд░ namespace рдХреЛ рд╣рд░ рдкреЗрдЬ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ (~89.8% рдкреЗрдЬ leakage)ред Route рдХреЗ рдЕрдиреБрд╕рд╛рд░ namespaces рдмрд╛рдБрдЯрдХрд░ рдЙрдиреНрд╣реЗрдВ lazy load рдХрд░рдиреЗ рд╕реЗ рдкреЗрдЬ JS рдХрдо рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдореИрдиреНрдпреБрдЕрд▓ рд╡реНрдпрд╡рд╕реНрдерд╛ рдЪрд╛рд╣рд┐рдПред - Runtime рдХрд╛ рд╡рдЬрд╝рди:
i18nextрдХрд╛ client runtime рд╣рд░ рдкреЗрдЬ рдкрд░ ~19.7 KB gzip рд╣реЛрддрд╛ рд╣реИред рдореМрдЬреВрджрд╛ codebase рдХреЗ рд▓рд┐рдП,@intlayer/next-i18nextcompat adapter рд╡рд╣реАi18nextAPI рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП runtime рдХреЛ 9.4 KB рддрдХ рдШрдЯрд╛рддрд╛ рд╣реИ рдФрд░ leakage рдЦрддреНрдо рдХрд░рддрд╛ рд╣реИред Nativenext-intlayer5.5 KB рддрдХ рдЖ рдЬрд╛рддрд╛ рд╣реИред
рдкреВрд░рд╛ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ: Next.js benchmark рд░рд┐рдкреЛрд░реНрдЯ, рдФрд░ benchmark repositoryред
Next.js рдкрд░ рдлреАрдЪрд░ рддреБрд▓рдирд╛
рдПрдХ Next.js App Router рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЖрдо рддреМрд░ рдкрд░ рдЬрд┐рди рдлреАрдЪрд░реНрд╕ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рдЙрди рдкрд░ next-i18next рдХреА рддреБрд▓рдирд╛ next-intl рдФрд░ Intlayer рд╕реЗ:
рд╕рднреА рдбреЗрдЯрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдореЛрдбрд▓ рдореЗрдВ рдЦреЛрд▓реЗрдВ
| рдлреАрдЪрд░ | next-intlayer (Intlayer) | next-intl | next-i18next |
|---|---|---|---|
| рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдЕрдиреБрд╡рд╛рдж | тЬЕ рд╣рд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдВрдЯ | тЭМ рдХреЗрдВрджреНрд░реАрдХреГрдд JSON | тЭМ рдХреЗрдВрджреНрд░реАрдХреГрдд JSON |
| TypeScript рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди | тЬЕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдиреЗ strict types | тЬЕ рдЕрдЪреНрдЫрд╛, AppConfig augmentation рдХреЗ рдЬрд╝рд░рд┐рдП | тЪая╕П рдмреБрдирд┐рдпрд╛рджреА |
| рдЫреВрдЯреЗ рд╣реБрдП рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреА рдкрд╣рдЪрд╛рди | тЬЕ TypeScript errors рдФрд░ build-time warnings | тЪая╕П Runtime fallback | тЪая╕П Runtime fallback |
| рд░рд┐рдЪ рдХрдВрдЯреЗрдВрдЯ (JSX, Markdown) | тЬЕ рд╕реАрдзрд╛ рд╕рдкреЛрд░реНрдЯ | тЪая╕П t.rich рдХреЗ рдЬрд╝рд░рд┐рдП tags, Markdown рдирд╣реАрдВ | тЪая╕П <Trans> рдХреЗ рдЬрд╝рд░рд┐рдП tags |
| AI рдЕрдиреБрд╡рд╛рдж | тЬЕ рдЖрдкрдХрд╛ рдЕрдкрдирд╛ provider рдФрд░ API key, рдРрдк рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде | тЭМ рдирд╣реАрдВ | тЭМ рдирд╣реАрдВ |
| рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░ / CMS | тЬЕ рд▓реЛрдХрд▓ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░ + рд╡реИрдХрд▓реНрдкрд┐рдХ CMS | тЭМ рдмрд╛рд╣рд░реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдЬрд╝рд░рд┐рдП | тЭМ рдмрд╛рд╣рд░реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рдЬрд╝рд░рд┐рдП |
| рд▓реЛрдХрд▓рд╛рдЗрдЬрд╝реНрдб рд░реВрдЯрд┐рдВрдЧ | тЬЕ рдмрд┐рд▓реНрдЯ-рдЗрди (Next.js рдФрд░ Vite) | тЬЕ рдмрд┐рд▓реНрдЯ-рдЗрди [locale] segment | тЬЕ рдмрд┐рд▓реНрдЯ-рдЗрди |
| рдмрд╣реБрд╡рдЪрди (Pluralization) | тЬЕ Enumeration-рдЖрдзрд╛рд░рд┐рдд | тЬЕ ICU | тЬЕ Suffix-рдЖрдзрд╛рд░рд┐рдд (_one, _other) |
| рдлрд╝реЙрд░реНрдореЗрдЯрд┐рдВрдЧ (рддрд╛рд░реАрдЦ, рд╕рдВрдЦреНрдпрд╛, рдореБрджреНрд░рд╛) | тЬЕ Intl-рдЖрдзрд╛рд░рд┐рдд formatters | тЬЕ useFormatter | тЬЕ Intl-рдЖрдзрд╛рд░рд┐рдд |
| рдХрдВрдЯреЗрдВрдЯ рдлрд╝реЙрд░реНрдореЗрдЯ | тЬЕ .ts, .tsx, .js, .json, .md, .yaml | тЬЕ .json, .js, .ts | тЪая╕П .json |
| ICU MessageFormat | тЬЕ format: "icu" рдХреЗ рдЬрд╝рд░рд┐рдП | тЬЕ Native | тЪая╕П i18next-icu рдХреЗ рдЬрд╝рд░рд┐рдП |
| SEO helpers (hreflang, sitemap) | тЬЕ Metadata, sitemap рдФрд░ robots.txt helpers | тЬЕ рдЕрдЪреНрдЫрд╛ | тЬЕ рдЕрдЪреНрдЫрд╛ |
| Server Components | тЬЕ рдХрд┐рд╕реА рднреА Server Component рдореЗрдВ рд╕реАрдзрд╛ рдПрдХреНрд╕реЗрд╕ | тЪая╕П рд╣рд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ t рдпрд╛ await getTranslations() рдкрд╛рд╕ рдХрд░реЗрдВ | тЪая╕П рдХрдВрдкреЛрдиреЗрдВрдЯ рдЯреНрд░реА рдореЗрдВ рдиреАрдЪреЗ t рдкрд╛рд╕ рдХрд░реЗрдВ |
| рдкреНрд░рддрд┐-рдХрдВрдкреЛрдиреЗрдВрдЯ tree-shaking | тЬЕ Build time рдкрд░ (Babel / SWC) | тЪая╕П рдореИрдиреНрдпреБрдЕрд▓, рд╣рд░ route рдХреЗ рд▓рд┐рдП pick() рдХреЗ рд╕рд╛рде | тЪая╕П рдореИрдиреНрдпреБрдЕрд▓, рд╣рд░ route рдХреЗ рд▓рд┐рдП namespaces рдХреЗ рд╕рд╛рде |
| Lazy loading | тЬЕ рдкреНрд░рддрд┐ locale рдФрд░ рдкреНрд░рддрд┐ dictionary | тЬЕ рдкреНрд░рддрд┐ locale, namespaces рд╣рд╛рде рд╕реЗ рдореИрдиреЗрдЬ | тЬЕ рдкреНрд░рддрд┐ locale, namespaces рд╣рд╛рде рд╕реЗ рдореИрдиреЗрдЬ |
| Runtime рдЖрдХрд╛рд░ (gzip, benchmark) | 4.9 KB | 14.7 KB | 19.7 KB |
| CI рдореЗрдВ рдЫреВрдЯреЗ рд╣реБрдП рдЕрдиреБрд╡рд╛рдж | тЬЕ npx intlayer test | тЪая╕П рдмрд┐рд▓реНрдЯ-рдЗрди рдирд╣реАрдВ | тЪая╕П рдмрд┐рд▓реНрдЯ-рдЗрди рдирд╣реАрдВ, runtime рдкрд░ saveMissing |
| рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо / рдХрдореНрдпреБрдирд┐рдЯреА | тЪая╕П рдЫреЛрдЯрд╛, рддреЗрдЬрд╝реА рд╕реЗ рдмрдврд╝ рд░рд╣рд╛ | тЬЕ рдмрдбрд╝рд╛ | тЬЕ рдмрд╣реБрдд рдмрдбрд╝рд╛ |
Runtime рдЖрдХрд╛рд░ Next.js benchmark рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВред рд╡рд┐рд╕реНрддреГрдд рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП, next-i18next vs next-intl vs Intlayer рдкрдврд╝реЗрдВред
рдЖрдкрдХреЛ рдЬрд┐рди рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣рд╛рдВ рдХреБрдЫ рдкреНрд░рдерд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдкрдХреЛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- HTML рдХреЗ
langрдФрд░dirрдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ - рдЕрдкрдиреЗ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ,
dirрдХреА рдЧрдгрдирд╛getLocaleDirection(locale)рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░реЗрдВ рдФрд░ рдЙрдЪрд┐рдд рдкрд╣реБрдВрдЪ рдФрд░ SEO рдХреЗ рд▓рд┐рдП<html lang={locale} dir={dir}>рд╕реЗрдЯ рдХрд░реЗрдВред - рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ namespace рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ
JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ locale рдФрд░ namespace (рдЬреИрд╕реЗ,
common.json,about.json) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬрд╝реЗрдВ рд╣реА рд▓реЛрдб рд╣реЛрдВред - рдХреНрд▓рд╛рдЗрдВрдЯ рдкреЗрд▓реЛрдб рдХреЛ рдиреНрдпреВрдирддрдо рдХрд░реЗрдВ
рдкреГрд╖реНрдареЛрдВ рдкрд░, рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ namespaces рдХреЛ
NextIntlClientProviderрдХреЛ рднреЗрдЬреЗрдВ (рдЬреИрд╕реЗ,pick(messages, ['common', 'about']))ред - рд╕реНрдереИрддрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдФрд░ SEO рдХреЗ рд▓рд┐рдП рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕реНрдереИрддрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ I18n
рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕, рдЬреИрд╕реЗ рдкреГрд╖реНрда рдпрд╛ рд╕рднреА рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдЬреЛ
clientрдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд╕реНрдереИрддрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рдкреНрд░реА-рд░реЗрдВрдбрд░ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдЙрдиреНрд╣реЗрдВ props рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред - TypeScript рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ
- рдЖрдкрдХреЗ locales рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ type safety рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TypeScript types рд╕реЗрдЯ рдХрд░реЗрдВред
- рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА locale рдкрд╣рдЪрд╛рди рдФрд░ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрдЪрд┐рдд locale-рдкреНрд░рд┐рдлрд┐рдХреНрд╕реНрдб URL рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред
- рдЕрдкрдиреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛, рд╕рд╛рдЗрдЯрдореИрдк, robots.txt рдХрд╛ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг
Next.js рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП
generateMetadataрдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛, рд╕рд╛рдЗрдЯрдореИрдк, robots.txt рдХрд╛ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕рднреА locales рдореЗрдВ рд╕рд░реНрдЪ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рдмреЗрд╣рддрд░ рдЦреЛрдЬ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗред - рд▓рд┐рдВрдХ рдХреЛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд░реЗрдВ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрдЪрд┐рдд locale-рдкреНрд░рд┐рдлрд┐рдХреНрд╕реНрдб URL рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
LinkрдХрдВрдкреЛрдиреЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд░реЗрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкреГрд╖реНрда рд╕рднреА locales рдореЗрдВ рдЦреЛрдЬреЗ рдЬрд╛ рд╕рдХреЗрдВред - рдЯреЗрд╕реНрдЯ рдФрд░ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ рдЯреЗрд╕реНрдЯ рдФрд░ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЖрдкрдХреЗ рдмрд╣реБрднрд╛рд╖реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рд╕рдордп рдХреА рдмрдЪрдд рдХрд░рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдФрд░ SEO рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕реВрдЪреАрдмрджреНрдз рд╣реИ: next-intl рдХреЗ рд╕рд╛рде рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг (i18n)ред
Next.js рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ i18next рд╕реЗрдЯрдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛
GitHub рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рджреЗрдЦреЗрдВред
рдпрд╣рд╛рдБ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдмрдирд╛рдПрдВрдЧреЗ:
рдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
Dependencies рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
npm рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ:
bashрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
- i18next: рдореБрдЦреНрдп рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдлреНрд░реЗрдорд╡рд░реНрдХ рдЬреЛ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
- react-i18next: i18next рдХреЗ рд▓рд┐рдП React рдмрд╛рдЗрдВрдбрд┐рдВрдЧреНрд╕ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП
useTranslationрдЬреИрд╕реЗ рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред - i18next-resources-to-backend: рдПрдХ рдкреНрд▓рдЧрдЗрди рдЬреЛ рдЕрдиреБрд╡рд╛рдж рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ namespaces рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рд╕рдорд░реНрдерд┐рдд рд▓реЛрдХрд▓, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХрд▓, рдФрд░ URL рд▓реЛрдХрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдВред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдЖрдкрдХреЗ i18n рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╕рддреНрдп рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЯрд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИред
рдЕрдкрдиреЗ рд▓реЛрдХрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░рдиреЗ рд╕реЗ рдЕрд╕рдВрдЧрддрддрд╛рдУрдВ рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд▓реЛрдХрд▓ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рд╣рдЯрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╣рд╛рдпрдХ рдлрд╝рдВрдХреНрд╢рди SEO рдФрд░ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд╕рдВрдЧрдд URL рдЬрдирд░реЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
i18n.config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдиреБрд╡рд╛рдж рдиреЗрдорд╕реНрдкреЗрд╕реЗрд╕ рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕рдкреЛрдЬрд╝ рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ namespace рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЧрд▓ рд╕реЛрд░реНрд╕ рдСрдл рдЯреНрд░реВрде рдмрдирд╛рдПрдВред рдЗрд╕ рд╕реВрдЪреА рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рд╕рд░реНрд╡рд░, рдХреНрд▓рд╛рдЗрдВрдЯ, рдФрд░ рдЯреВрд▓рд┐рдВрдЧ рдХреЛрдб рдХреЛ рд╕рд┐рдВрдХ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рд╣реЗрд▓реНрдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред
src/i18n.namespaces.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
TypeScript рдХреЗ рд╕рд╛рде рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рди рдХреАрдЬрд╝ рдХреЛ рдордЬрдмреВрдд рдЯрд╛рдЗрдк рдХрд░реЗрдВ
i18nextрдХреЛ рдЕрдкрдиреЗ рдХреИрдиреЛрдирд┐рдХрд▓ рднрд╛рд╖рд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ (рдЖрдорддреМрд░ рдкрд░ рдЕрдВрдЧреНрд░реЗрдЬрд╝реА) рдХреА рдУрд░ рдмрдврд╝рд╛рдПрдВред TypeScript рддрдм рдкреНрд░рддреНрдпреЗрдХ namespace рдХреЗ рд▓рд┐рдП рд╡реИрдз рдХреАрдЬрд╝ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдПt()рдХреЙрд▓реНрд╕ рдХреЛ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредsrc/types/i18next.d.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд╕реБрдЭрд╛рд╡: рдЗрд╕ рдШреЛрд╖рдгрд╛ рдХреЛ
src/typesрдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ (рдпрджрд┐ рдлрд╝реЛрд▓реНрдбрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рдмрдирд╛рдПрдВ)ред Next.js рдкрд╣рд▓реЗ рд╕реЗ рд╣реАtsconfig.jsonрдореЗрдВsrcрдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдСрдЧрдореЗрдВрдЯреЗрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрдХрдбрд╝ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЕрдкрдиреЗtsconfig.jsonрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ:tsconfig.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдк рдСрдЯреЛрдХрдВрдкреНрд▓реАрдЯ рдФрд░ рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдЪреЗрдХреНрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб i18n рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗрдЯ рдХрд░реЗрдВ
рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб i18n рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ рдЬреЛ рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ i18next рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВред
рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ i18next рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рд╕реЗ рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдкреНрд░реАрд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдирд╣реАрдВ рд╣реБрдП рдХрдВрдЯреЗрдВрдЯ рдХрд╛ рдлреНрд▓реИрд╢ рд░реЛрдХрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ SEO рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрдВрдЯреЗрдВрдЯ рджреЗрдЦ рдкрд╛рддреЗ рд╣реИрдВред
src/app/i18n/server.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб i18n рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдмрдирд╛рдПрдВ
рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдмрдирд╛рдПрдВ рдЬреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ i18next рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рд╕рд░реНрд╡рд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХреА рдЧрдИ рдЕрдиреБрд╡рд╛рдж рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рдлреНрд▓реИрд╢ (FOUC) рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдлреЗрдЪрд┐рдВрдЧ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред
рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ i18next рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдХреЗ, рд╣рдо рдирд┐рд░реНрдмрд╛рдз рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдлреНрд▓реИрд╢рд┐рдВрдЧ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВред рдпрд╣ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рд╕реНрдерд╛рдиреАрдп рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рднреА рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред
src/components/I18nProvider.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдбрд╛рдпрдирд╛рдорд┐рдХ рд▓реЛрдХрд▓ рд░реВрдЯреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдРрдк рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
[locale]рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрдирд╛рдХрд░ рд▓реЛрдХрд▓ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдЯрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕рд╕реЗ Next.js рд▓реЛрдХрд▓-рдЖрдзрд╛рд░рд┐рдд рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХрд▓ URL рд╕реЗрдЧрдореЗрдВрдЯ рдмрди рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕реЗ,/en/about,/fr/about)редрдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ Next.js рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рд╕рднреА рд▓реЛрдХрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрдереИрддрд┐рдХ рдкреЗрдЬ рдЬреЗрдирд░реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдФрд░ SEO рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдЖрдЙрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ HTML рдХреЗ
langрдФрд░dirрдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреЛ рд▓реЛрдХрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкрд╣реБрдВрдЪ рдФрд░ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдХреА рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИредsrc/app/[locale]/layout.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреА рдЕрдиреБрд╡рд╛рдж рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВ
рдкреНрд░рддреНрдпреЗрдХ locale рдФрд░ namespace рдХреЗ рд▓рд┐рдП JSON рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВред рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдЖрдкрдХреЛ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рдирд╛рдорд╕реНрдерд╛рди (namespace) рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ (рдЬреИрд╕реЗ,
common.json,about.json) рдХреЛрдб рд╕реНрдкреНрд▓рд┐рдЯрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдмрдВрдбрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдХрдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдХреЗрд╡рд▓ рдЙрди рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИредsrc/locales/en/common.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/locales/fr/common.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/locales/en/home.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/locales/fr/home.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/locales/en/about.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/locales/fr/about.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдПрдХ рдкреЗрдЬ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ i18next рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рдХреЙрдореНрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд╡рд╛рдж рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЛрдб рд╣реЛ рдЬрд╛рдПрдВ рдФрд░ рдХрдВрдЯреЗрдВрдЯ рдлреНрд▓реИрд╢рд┐рдВрдЧ рд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗред
рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдкреЗрдЬ рдХреЗ рд░реЗрдВрдбрд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ SEO рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ FOUC (рдлреНрд▓реИрд╢ рдСрдл рдЕрдирд╕реНрдЯрд╛рдЗрд▓реНрдб рдХрдВрдЯреЗрдВрдЯ) рд╕реЗ рдмрдЪрд╛рд╡ рд╣реЛрддрд╛ рд╣реИред рдкреНрд░реАрд▓реЛрдбреЗрдб рд░рд┐рд╕реЛрд░реНрд╕реЗрдЬ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ, рд╣рдо рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдлреЗрдЪрд┐рдВрдЧ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдореВрде рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
src/app/[locale]/about/index.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдЕрдиреБрд╡рд╛рджреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП
useTranslationрд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣реБрдХ рдЕрдиреБрд╡рд╛рдж рдлрд╝рдВрдХреНрд╢рди рдФрд░ i18n рдЗрдВрд╕реНрдЯреЗрдВрд╕ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓реЛрдХрд▓ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рдЕрдиреБрд╡рд╛рджреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП React рд╣реБрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
useTranslationрд╣реБрдХ i18next рдХреЗ рд╕рд╛рде рд╕рд╣рдЬрддрд╛ рд╕реЗ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЬрдм рд▓реЛрдХрд▓ рдмрджрд▓рддрд╛ рд╣реИ рддреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЕрдкрдбреЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредрд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкреЗрдЬ/рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдореЗрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ namespaces рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ (рдЬреИрд╕реЗ,
about)ред
рдпрджрд┐ рдЖрдк React < 19 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рднрд╛рд░реА рдлреЙрд░реНрдореЗрдЯрд░реНрд╕ рдЬреИрд╕реЗIntl.NumberFormatрдХреЛ рдореЗрдореЛрдЬрд╝ рдХрд░реЗрдВредsrc/components/ClientComponent.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ React hooks рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдЕрдкрдиреЗ рдкреИрд░реЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рд╕реЗ props рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддрд░реАрдХрд╛ рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ synchronous рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рдЕрдВрджрд░ рдиреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдмрд╛рдЙрдВрдбреНрд░реАрдЬрд╝ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдиреЗрд╕реНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ synchronous рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдиреБрд╡рд╛рджрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ locale рдЬрд╛рдирдХрд╛рд░реА рдХреЛ props рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдХреЗ, рд╣рдо async рдСрдкрд░реЗрд╢рдВрд╕ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣реА рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
src/components/ServerComponent.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреА рднрд╛рд╖рд╛ рдмрджрд▓реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХNext.js рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреА рднрд╛рд╖рд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рд╣реИ locale-рдкреВрд░реНрд╡рд╕рд░реНрдЧ рд╡рд╛рд▓реЗ URL рдФрд░ Next.js рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рд╡рд░реНрддрдорд╛рди locale рдХреЛ route рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ, pathname рд╕реЗ рдЗрд╕реЗ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдкрд▓рдмреНрдз рдкреНрд░рддреНрдпреЗрдХ locale рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИред
src/components/LocaleSwitcher.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдПрдХ рд╕реНрдерд╛рдиреАрдпрдХреГрдд Link рдХреЙрдореНрдкреЛрдиреЗрдВрдЯ рдмрдирд╛рдПрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдЕрдкрдиреЗ рдРрдк рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд URLs рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЛ рд╕реБрд╕рдВрдЧрдд рдФрд░ SEO-рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред
next/linkрдХреЛ рдПрдХ рдЫреЛрдЯреЗ рд╣реЗрд▓реНрдкрд░ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдЯреНрд╕ рдХреЗ рд╕рд╛рдордиреЗ рд╕рдХреНрд░рд┐рдп locale рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдмрд╛рд╣рд░реА URLs рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝рддрд╛ рд╣реИредsrc/components/LocalizedLink.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд╕реБрдЭрд╛рд╡: рдХреНрдпреЛрдВрдХрд┐
LocalizedLinkрдПрдХ рдбреНрд░реЙрдк-рдЗрди рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдпрд╛рддреЛрдВ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрджрд▓рдХрд░ рдФрд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ locale-рд╡рд┐рд╢рд┐рд╖реНрдЯ URLs рд╕рдВрднрд╛рд▓рдиреЗ рджреЗрдВ, рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВредрд╕рд░реНрд╡рд░ рдПрдХреНрд╢рдиреНрд╕ рдХреЗ рдЕрдВрджрд░ рд╕рдХреНрд░рд┐рдп locale рддрдХ рдкрд╣реБрдБрдЪреЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрд╕рд░реНрд╡рд░ рдПрдХреНрд╢рдиреНрд╕ рдХреЛ рдЕрдХреНрд╕рд░ рдИрдореЗрд▓, рд▓реЙрдЧрд┐рдВрдЧ, рдпрд╛ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди locale рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдкрдиреЗ рдкреНрд░реЙрдХреНрд╕реА рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП locale рдХреБрдХреА рдХреЛ
Accept-Languageрд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдлреЙрд▓рдмреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВредsrc/app/actions/get-current-locale.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣реЗрд▓реНрдкрд░ Next.js рдХреБрдХреАрдЬрд╝ рдФрд░ рд╣реЗрдбрд░реНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ Route Handlers, Server Actions, рдФрд░ рдЕрдиреНрдп рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░-рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдкрдиреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рджреГрд╢реНрдпрдиреАрдп рдмрдирд╛рдирд╛ рд╣реИред I18n рдЖрдкрдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреА рджреГрд╢реНрдпрддрд╛ рдХреЛ рдЙрдЪрд┐рдд SEO рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрднреБрдд рд╕рд╛рдзрди рд╣реИред
рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХреГрдд рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЦреЛрдЬ рдЗрдВрдЬрди рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХреМрди-рдХреМрди рд╕реА рднрд╛рд╖рд╛рдПрдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЗрд╕рдореЗрдВ hreflang рдореЗрдЯрд╛ рдЯреИрдЧ рд╕реЗрдЯ рдХрд░рдирд╛, рд╢реАрд░реНрд╖рдХ рдФрд░ рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХрд▓ рдХреЗ рд▓рд┐рдП рдХреИрдиреЛрдирд┐рдХрд▓ URL рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдпрд╣рд╛рдБ рдмрд╣реБрднрд╛рд╖реА SEO рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреА рдкреНрд░рдерд╛рдУрдВ рдХреА рд╕реВрдЪреА рд╣реИ:
<head>рдЯреИрдЧ рдореЗрдВ hreflang рдореЗрдЯрд╛ рдЯреИрдЧ рд╕реЗрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╕рд░реНрдЪ рдЗрдВрдЬрди рд╕рдордЭ рд╕рдХреЗрдВ рдХрд┐ рдкреЗрдЬ рдкрд░ рдХреМрди-рдХреМрди рд╕реА рднрд╛рд╖рд╛рдПрдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ- sitemap.xml рдореЗрдВ рд╕рднреА рдкреЗрдЬ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ
http://www.w3.org/1999/xhtmlXML рд╕реНрдХреАрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ - robots.txt рд╕реЗ рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╡рд╛рд▓реЗ рдкреЗрдЬреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рди рднреВрд▓реЗрдВ (рдЬреИрд╕реЗ,
/dashboard,/fr/dashboard,/es/dashboard) - рд╕рдмрд╕реЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкреЗрдЬ рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо Link рдХрдВрдкреЛрдиреЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЬреИрд╕реЗ, рдлреНрд░реЗрдВрдЪ рдореЗрдВ
<a href="/fr/about">├А propos</a>)
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рдкреЗрдЬреЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд▓реЛрдХрд▓реНрд╕ рдореЗрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ:
src/app/[locale]/about/layout.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ рд╕рд╛рдЗрдЯрдореИрдк рдХреЛ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХреГрдд рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдПрдХ рд╕рд╛рдЗрдЯрдореИрдк рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рднреА рд▓реЛрдХрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред рдпрд╣ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдХреЛ рдЖрдкрдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рднреА рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХреГрдд рд╕рд╛рдЗрдЯрдореИрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдЖрдкрдХреЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рднреА рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЦреЛрдЬ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░ рд╕рдХреЗред рдЗрд╕рд╕реЗ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рджреГрд╢реНрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред
src/app/sitemap.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ robots.txt рдХреЛ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдпрдХреГрдд рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдЕрдкрдиреЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рд░реВрдЯреНрд╕ рдХреЗ рд╕рднреА рд▓реЛрдХрд▓ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ robots.txt рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдПрдбрдорд┐рди рдпрд╛ рдбреИрд╢рдмреЛрд░реНрдб рдкреЗрдЬреЛрдВ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рди рдХрд░реЗрдВред
рд╕рднреА рд▓реЛрдХрд▓ рдХреЗ рд▓рд┐рдП robots.txt рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рд╕реЗ рд╕рд░реНрдЪ рдЗрдВрдЬрди рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдпрд╣ рд╕реБрд░рдХреНрд╖рд╛ рдФрд░ рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
src/app/robots.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд▓реЛрдХрд▓ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдПрдВ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреБрдХреНрдд рд▓реЛрдХрд▓-рдкреНрд░рд┐рдлрд┐рдХреНрд╕реНрдб URL рдкрд░ рдкреБрдирдГ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдордЧреНрд░реА рдЙрдирдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЬрд╛рддреА рд╣реИред
рдорд┐рдбрд▓рд╡реЗрдпрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдкрдХреА рд╕рд╛рдЗрдЯ рдкрд░ рдЖрддреЗ рд╣реИрдВ рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдкреБрдирдГ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреА рдпрд╛рддреНрд░рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рдХреЛ рдХреБрдХреА рдореЗрдВ рднреА рд╕рд╣реЗрдЬрддрд╛ рд╣реИред
src/proxy.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
Intlayer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХIntlayer рдПрдХ рдореБрдлреНрдд рдФрд░ рдУрдкрди-рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИред рдЬрдмрдХрд┐ i18next рдЕрдиреБрд╡рд╛рдж рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ, Intlayer рдЕрдиреБрд╡рд╛рдж рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдирд╛ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдФрд░ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред Intlayer рдЕрдиреБрд╡рд╛рдж рдкрд░реАрдХреНрд╖рдг, рдирд┐рд░реНрдорд╛рдг, рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХрд╛ рд╕рдордп рдмрдЪрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдерд┐рд░рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддреА рд╣реИред
Intlayer рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
рдЕрдкрдиреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдЬрд╣рд╛рдБ рдЪрд╛рд╣реЗрдВ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ Intlayer рдЖрдкрдХреЛ
.content.{ts|js|json}рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдЕрдкрдиреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдЬрд╣рд╛рдБ рдЪрд╛рд╣реЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмреЗрд╣рддрд░ рд╕рдВрдЧрдарди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЗ рдХреЛрдбрдмреЗрд╕ рдХреА рдкрдардиреАрдпрддрд╛ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛редрд▓рд╛рдкрддрд╛ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ Intlayer рдкрд░реАрдХреНрд╖рдг рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдЕрдкрдиреА CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдпрд╛ рдЕрдкрдиреА рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ testing your translationsред
рдЕрдкрдиреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ, Intlayer рдЖрдкрдХреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ CLI рдФрд░ VSCode рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдЖрдкрдХреЗ CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВред рдЖрдк рдЕрдкрдиреА рдЕрдкрдиреА API рдХреБрдВрдЬреА рдФрд░ рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ AI рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдВрджрд░реНрдн-рд╕рдЪреЗрдд рдЕрдиреБрд╡рд╛рдж рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рджреЗрдЦреЗрдВ рд╕рд╛рдордЧреНрд░реА рднрд░реЗрдВред
рдмрд╛рд╣рд░реА рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
Intlayer рдЖрдкрдХреЛ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдПрдХ рдмрд╛рд╣рд░реА рдХрдВрдЯреЗрдВрдЯ рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо (CMS) рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рдПрдХ рдЕрдиреБрдХреВрд▓рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреА JSON рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдмрд╛рд╣рд░реА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВредрд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░
Intlayer рдПрдХ рдореБрдлреНрдд рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдПрдбрд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВред
рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред Intlayer рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ Intlayer рдХреЗ рдорд╣рддреНрд╡ рдХреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреЗрдЦреЗрдВред
рд╡рд┐рд╕реНрддреГрдд performance benchmarks рдФрд░ рддреБрд▓рдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ:
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
рдЕрднреА рддрдХ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВред рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдмрдиреЗрдВред
