рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдХреЛ рдкреВрдЫреЗрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕ рдкреГрд╖реНрда рдФрд░ рдЖрдкрдХреЗ рдЪреБрдиреЗ рд╣реБрдП AI рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╕рдВрд╕реНрдХрд░рдг рдЗрддрд┐рд╣рд╛рд╕
- "рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг"v9.5.1026/9/2026
рдЗрд╕ рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдХ AI рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХреА рдЧрдИ рд╣реИред
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдореВрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВрдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ GitHub рдкрд░ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП GitHub рд▓рд┐рдВрдХрджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ Markdown рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
2026 рдореЗрдВ Lingui рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ TanStack Start рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ
рд╡рд┐рд╖рдп рд╕реВрдЪреА
Lingui рдХреНрдпрд╛ рд╣реИ?
Lingui рдПрдХ i18n рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ macros рдФрд░ message extraction рдХреЗ рдЗрд░реНрдж-рдЧрд┐рд░реНрдж рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдЖрдк рд╕реНрд░реЛрдд рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕реАрдзреЗ рдЕрдкрдиреЗ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ ( t`Hello` , <Trans>Hello</Trans>), lingui extract рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЛ рдХреИрдЯрд▓реЙрдЧ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ PO рдлрд╝рд╛рдЗрд▓реЗрдВ) рдореЗрдВ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреБрд╡рд╛рджрдХ рдЙрдиреНрд╣реЗрдВ рднрд░рддреЗ рд╣реИрдВ, рдФрд░ Vite рдкреНрд▓рдЧрдЗрди рдЙрдиреНрд╣реЗрдВ рдХреЙрдореНрдкреИрдХреНрдЯ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд (compile) рдХрд░рддрд╛ рд╣реИред рд╕рдВрджреЗрд╢ ICU MessageFormat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП plurals рдФрд░ selects рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред
TanStack Start рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд i18n рд▓реЗрдпрд░ рдирд╣реАрдВ рдЖрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЧрд╛рдЗрдб рд╢реБрд░реВ рд╕реЗ Lingui рдХреЛ рдЗрд╕рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рддреА рд╣реИ:
- Babel рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд Macros
@rolldown/plugin-babelрдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (@vitejs/plugin-reactv6 рдФрд░ Vite 8 рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ)ред - Locale routing рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ
{-$locale}рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде (/about,/fr/about)ред - рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ рдХреИрдЯрд▓реЙрдЧ, рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ (on demand), рдФрд░ рдкреНрд░рддрд┐ рд░реЗрдВрдбрд░ рдПрдХ
I18nрдЗрдВрд╕реНрдЯреЗрдВрд╕ рддрд╛рдХрд┐ рд╕рдорд╡рд░реНрддреА (concurrent) SSR рдЕрдиреБрд░реЛрдз рдХрднреА рднреА рд▓реЛрдХреЗрд▓ рд╕рд╛рдЭрд╛ рди рдХрд░реЗрдВред - рд╕рдВрдкреВрд░реНрдг рдмрд╣реБрднрд╛рд╖реА SEO: рдЕрдиреБрд╡рд╛рджрд┐рдд
<title>рдФрд░ рд╡рд┐рд╡рд░рдг, рдХреИрдиреЛрдирд┐рдХрд▓ URL,x-defaultрдХреЗ рд╕рд╛рдеhreflang, Open Graph рд▓реЛрдХреЗрд▓реНрд╕, JSON-LD, рд╕рд╛рдЗрдЯрдореИрдк,robots.txt, рдкреНрд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧ рдФрд░ рд╕реНрдерд╛рдиреАрдпрдХреГрдд 404 рдкреЗрдЬред
рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдЯреИрдХ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ? TanStack Start + use-intl рдЧрд╛рдЗрдб, TanStack Start + Paraglide рдЧрд╛рдЗрдб, рдпрд╛ TanStack Start + Intlayer рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВред
рдХреНрдпрд╛ рдЖрдк Next.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? Next.js + Lingui рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВред рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? Lingui рдмрдирд╛рдо Intlayer рдкрдврд╝реЗрдВред
TanStack Start рдкрд░ Lingui рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ
i18n рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣рд░ рдкреНрд░рдореБрдЦ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╛рди 10-рдкреЗрдЬ, 10-рд▓реЛрдХреЗрд▓ TanStack Start рдРрдк рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдкрддрд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рдбрд╛рдпрдирд╛рдорд┐рдХ JSON рд▓реЛрдбрд┐рдВрдЧ
рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрд▓рд╕реНрдп рд╕реЗ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
рд╕реНрдХреЛрдкреНрдб JSON (рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ)
рдкреНрд░рддрд┐-рдкреГрд╖реНрда рдЕрдиреБрд╡рд╛рдж рдиреЗрдорд╕реНрдкреЗрд╕
I18n рдкреНрд░рджрд░реНрд╢рди рдмреЗрдВрдЪрдорд╛рд░реНрдХ
рдпрд╣ рдореАрдЯреНрд░рд┐рдХ рдХреНрдпрд╛ рд╣реИ?
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдВрдбрд▓ рдХрд╛ рдХреБрд▓ gzip-рд╕рдВрдкреАрдбрд╝рд┐рдд рдЖрдХрд╛рд░ред рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдФрд░ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рдж рдкреНрд░рджрд╛рддрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ?
рдПрдХ рдЫреЛрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдХрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЗрд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рддреЗрдЬрд╝ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╣реЛрддрд╛ рд╣реИред
рджреЗрдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛
@lingui/core@6.6.0 рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрдВрдХрдбрд╝реЗ, 2026-09-26 рдХреЛ рдорд╛рдкреЗ рдЧрдП (gzip):
рд╕рднреА рдбреЗрдЯрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдореЛрдбрд▓ рдореЗрдВ рдЦреЛрд▓реЗрдВ
| рд╕реЗрдЯрдЕрдк | рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЖрдХрд╛рд░ | рдкреНрд░рддрд┐ рдкреЗрдЬ JS | рдЕрдиреНрдп рд▓реЛрдХреЗрд▓ рд▓реАрдХ | рдЕрдиреНрдп рдкреЗрдЬ рд▓реАрдХ |
|---|---|---|---|---|
| рдХреЛрдИ i18n рдирд╣реАрдВ (рдмреЗрд╕ рдРрдк) | - | 111.0 KB | 0% | 0% |
| Lingui (рдЗрд╕ рдЧрд╛рдЗрдб рдХрд╛ рд╕реЗрдЯрдЕрдк) | 56.7 KB | 115.2 KB | 9.3% | 0% |
@intlayer/lingui (рд╕рдВрдЧрддрддрд╛) | 9.8 KB | 136.7 KB | 9.9% | 0% |
react-intlayer (рдореВрд▓ Intlayer) | 4.5 KB | 126.8 KB | 0% | 0% |
рдореБрдЦреНрдп рдирд┐рд╖реНрдХрд░реНрд╖:
- рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдХреЗрд╡рд▓ рдПрдХ рдХреИрдЯрд▓реЙрдЧ рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд░реЗрдВред рдпрд╣ рдкреЗрдЬреЛрдВ рдХреЛ рдмреЗрд╕ рдРрдк рдЖрдХрд╛рд░ рдХреЗ рдХрд░реАрдм рд░рдЦрддрд╛ рд╣реИред
- рд░рдирдЯрд╛рдЗрдо рднрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ (~57 KB gzip)ред
@intlayer/linguiрд╕рдВрдЧрддрддрд╛ рдПрдбреЗрдкреНрдЯрд░ (рдЪрд░рдг 16) рдЖрдкрдХреЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдШрдЯрд╛рдХрд░ ~10 KB рдХрд░ рджреЗрддрд╛ рд╣реИред
рдкреВрд░рд╛ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ: TanStack Start рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЛрд░реНрдЯ, рдФрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАред
TanStack Start рдкрд░ рдлреАрдЪрд░ рддреБрд▓рдирд╛
TanStack Start рдкрд░ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде Lingui рдХреА рддреБрд▓рдирд╛:
рд╕рднреА рдбреЗрдЯрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдореЛрдбрд▓ рдореЗрдВ рдЦреЛрд▓реЗрдВ
| рдлреАрдЪрд░ | react-intlayer (Intlayer) | use-intl | Paraglide JS | Lingui |
|---|---|---|---|---|
| рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рдЕрдиреБрд╡рд╛рдж | тЬЕ рд╕рд╣-рд╕реНрдерд┐рдд (Co-located) | тЭМ рдХреЗрдВрджреНрд░реАрдХреГрдд JSON | тЭМ рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ JSON рдлрд╝рд╛рдЗрд▓ | тЪая╕П рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рд╕реНрд░реЛрдд рдЯреЗрдХреНрд╕реНрдЯ |
| TypeScript рдПрдХреАрдХрд░рдг | тЬЕ рд╕реНрд╡рддрдГ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ | тЬЕ AppConfig рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ | тЬЕ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕рдВрджреЗрд╢ рдлрд╝рдВрдХреНрд╢рди | тЪая╕П рдХреЗрд╡рд▓ Macros |
| рд▓рд╛рдкрддрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ | тЬЕ рдЯрд╛рдЗрдк рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдмрд┐рд▓реНрдб рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ | тЪая╕П рд░рдирдЯрд╛рдЗрдо рдлрд╝реЙрд▓рдмреИрдХ | тЪая╕П рдмреЗрд╕ рд▓реЛрдХреЗрд▓ рдкрд░ рдлрд╝реЙрд▓рдмреИрдХ рдХрд░рддрд╛ рд╣реИ | тЪая╕П рд╕реНрд░реЛрдд рдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рдлрд╝реЙрд▓рдмреИрдХ рдХрд░рддрд╛ рд╣реИ |
| рд░рд┐рдЪ рдХрдВрдЯреЗрдВрдЯ (JSX, Markdown) | тЬЕ рдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдорд░реНрдерди | тЪая╕П t.rich рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреИрдЧ | тЪая╕П рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ | тЬЕ <Trans> рдХреЗ рдЕрдВрджрд░ JSX |
| рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд░реВрдЯрд┐рдВрдЧ | тЬЕ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд | тЭМ рдореИрдиреНрдпреБрдЕрд▓ {-$locale} | тЬЕ urlPatterns + рд░рд╛рдЙрдЯрд░ рд░реАрд░рд╛рдЗрдЯ | тЭМ рдореИрдиреНрдпреБрдЕрд▓ {-$locale} |
| рд░реАрд▓реЛрдб рдХрд┐рдП рдмрд┐рдирд╛ рд▓реЛрдХреЗрд▓ рд╕реНрд╡рд┐рдЪ | тЬЕ рд╣рд╛рдБ | тЬЕ рд╣рд╛рдБ | тЭМ рдкреВрд░рд╛ рдкреЗрдЬ рд░реАрд▓реЛрдб | тЬЕ рд╣рд╛рдБ |
| рдмрд╣реБрд╡рдЪрди (Pluralization) | тЬЕ рдЧрдгрдирд╛ рдЖрдзрд╛рд░рд┐рдд | тЬЕ ICU | тЬЕ рд╡реЗрд░рд┐рдПрдВрдЯреНрд╕ | тЬЕ ICU |
| ICU MessageFormat | тЬЕ format: "icu" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ | тЬЕ рдиреЗрдЯрд┐рд╡ | тЪая╕П inlang рдкреНрд▓рдЧрдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ | тЬЕ рдиреЗрдЯрд┐рд╡ |
| рдХрдВрдЯреЗрдВрдЯ рдкреНрд░рд╛рд░реВрдк | тЬЕ .ts, .json, .md, .yaml... | тЪая╕П .json | тЪая╕П inlang JSON | тЬЕ PO, JSON, CSV |
| AI рдЕрдиреБрд╡рд╛рдж | тЬЕ рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдХреБрдВрдЬреА | тЭМ рдирд╣реАрдВ | тЭМ рдирд╣реАрдВ | тЭМ рдирд╣реАрдВ |
| рд╡рд┐рдЬреБрдЕрд▓ рдПрдбрд┐рдЯрд░ / CMS | тЬЕ рд╕реНрдерд╛рдиреАрдп рдПрдбрд┐рдЯрд░ + рд╡реИрдХрд▓реНрдкрд┐рдХ CMS | тЭМ рдмрд╛рд╣рд░реА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо | тЪая╕П inlang рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдРрдкреНрд╕ | тЭМ рдмрд╛рд╣рд░реА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо |
| SEO рд╕рд╣рд╛рдпрдХ (hreflang, sitemap) | тЬЕ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд | тЭМ рдореИрдиреНрдпреБрдЕрд▓ | тЪая╕П рд╕реНрдерд╛рдиреАрдпрдХреГрдд URLs, рдмрд╛рдХреА рдореИрдиреНрдпреБрдЕрд▓ | тЭМ рдореИрдиреНрдпреБрдЕрд▓ |
| рд░рдирдЯрд╛рдЗрдо рдЖрдХрд╛рд░ (gzip, benchmark) | 4.5 KB | 75.9 KB | 1.8 KB | 56.7 KB |
| рд▓реАрдХ, рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╕реЗрдЯрдЕрдк (рд▓реЛрдХреЗрд▓ / рдкреЗрдЬ) | 0% / 0% | 0% / 0% | 49.7% / 0% | 8.6% / 0% |
| CI рдореЗрдВ рд▓рд╛рдкрддрд╛ рдЕрдиреБрд╡рд╛рдж | тЬЕ npx intlayer test | тЪая╕П рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд╣реАрдВ | тЪая╕П рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд╣реАрдВ | тЬЕ lingui compile --strict |
рд░рдирдЯрд╛рдЗрдо рдЖрдХрд╛рд░ рдФрд░ рд▓реАрдХ рдХреЗ рдЖрдВрдХрдбрд╝реЗ TanStack Start рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реЗ рд▓рд┐рдП рдЧрдП рд╣реИрдВред рд▓реАрдХ рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рд╕реЗрдЯрдЕрдк рдкрд░ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдиреНрдп TanStack Start рдЧрд╛рдЗрдб: use-intl, Paraglide JS, рдФрд░ Intlayerред
рдЕрднреНрдпрд╛рд╕ рдЬрд┐рдирдХрд╛ рдЖрдкрдХреЛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
<html>рдкрд░langрдФрд░dirрд╕реЗрдЯ рдХрд░реЗрдВ рд░реВрдЯ рд▓реЛрдХреЗрд▓ рд╕реЗ, рддрд╛рдХрд┐ рд╡реЗ рд╕рд░реНрд╡рд░ HTML рдореЗрдВ рд╕рд╣реА рд╣реЛрдВред- рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ URL рд░рдЦреЗрдВ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде, рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрдХреНрд░рдорд┐рдд (indexable) рд╣реЛ рд╕рдХреЗред
- рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ
I18nрдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдПрдВ, SSR рдХреЗ рджреМрд░рд╛рди рдХрднреА рднреА рд╡реИрд╢реНрд╡рд┐рдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдореНрдпреВрдЯреЗрдЯ рди рдХрд░реЗрдВ: рджреЛ рд╕рдорд╡рд░реНрддреА рдЕрдиреБрд░реЛрдз рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд▓реЛрдХреЗрд▓ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдЯ рдХрд░ рджреЗрдВрдЧреЗред - рдХреЗрд╡рд▓ рд╕рдХреНрд░рд┐рдп рдХреИрдЯрд▓реЙрдЧ рд▓реЛрдб рдХрд░реЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдореЗрдВ рдЙрди рд╕рднреА рдХреЛ рдХрднреА рдЗрдореНрдкреЛрд░реНрдЯ рди рдХрд░реЗрдВред
- рдПрдХ рдореИрдХреНрд░реЛ рд╢реИрд▓реА рдЪреБрдиреЗрдВ (рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ
useLingui+t, рд▓реЗрдЬрд╝реА рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЗ рд▓рд┐рдПmsg) рдФрд░ рдЙрд╕реА рдкрд░ рдЯрд┐рдХреЗ рд░рд╣реЗрдВредt,i18n._,i18n.tрдФрд░<Trans>рдХреЛ рдорд┐рд▓рд╛рдиреЗ рд╕реЗ рдХреЛрдб рдХреЛ рдЗрдВрд╕рд╛рдиреЛрдВ рдФрд░ AI рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкрдврд╝рдирд╛ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред - CI рдореЗрдВ
lingui extractрдЪрд▓рд╛рдПрдВ рддрд╛рдХрд┐ рдХреЛрдИ рдирдпрд╛ рд╕рдВрджреЗрд╢ рдХрднреА рднреА рдмрд┐рдирд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рди рдЬрд╛рдПред - рдЕрдкрдиреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдкрд░
canonical,hreflangрдФрд░x-defaultрдШреЛрд╖рд┐рдд рдХрд░реЗрдВред - рдПрдХ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдЗрдЯрдореИрдк рдФрд░ robots.txt рдмрдирд╛рдПрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХреЛ рдкреНрд░реА-рд░реЗрдВрдбрд░ рдХрд░реЗрдВред
- рд▓реЛрдХреЗрд▓ рд╕реНрд╡рд┐рдЪрд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдХреНрд░реЙрд▓рд░реНрд╕ рд╣рд░ рднрд╛рд╖рд╛ рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХреЗрдВред
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдФрд░ SEO рдкрд░ рд╣рдорд╛рд░реА рдЧрд╛рдЗрдб рдФрд░ hreflang рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВред
TanStack Start рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ Lingui рд╕реЗрдЯ рдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЧрд╛рдЗрдб
рдпрд╣рд╛рдБ рд╡рд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдмрдирд╛рдПрдВрдЧреЗ:
рдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
bashрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
- @lingui/core / @lingui/react: рд░рдирдЯрд╛рдЗрдо,
I18nProviderрдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ (@lingui/core/macro,@lingui/react/macro)ред - @lingui/cli: рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
lingui extractред - @lingui/vite-plugin: рдЗрдореНрдкреЛрд░реНрдЯ рдкрд░
.poрдХреИрдЯрд▓реЙрдЧ рдХреЛ рдХрдВрдкрд╛рдЗрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдПlingui compileрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред - @lingui/babel-plugin-lingui-macro + @rolldown/plugin-babel: рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХрд░рддреЗ рд╣реИрдВред
- @lingui/core / @lingui/react: рд░рдирдЯрд╛рдЗрдо,
рдЕрдкрдиреЗ рд▓реЛрдХреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░реЗрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдмрд┐рдирд╛ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдХреЗ рд░рд╣рддрд╛ рд╣реИ (
/about), рдЕрдиреНрдп рд▓реЛрдХреЗрд▓реНрд╕ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (/fr/about)редsrc/i18n/config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
Lingui рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
Lingui рдХреЙрдиреНрдлрд╝рд┐рдЧ рдЙрд╕реА рд▓реЛрдХреЗрд▓ рд╕реВрдЪреА рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреИрдЯрд▓реЙрдЧ, рд░рд╛рдЙрдЯрд░ рдФрд░ рд╕рд╛рдЗрдЯрдореИрдк рдХрднреА рднреА рдЕрд╕рд╣рдордд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред
lingui.config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдирд┐рд╖реНрдХрд░реНрд╖рдг (extraction) рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реЗрдВ:
package.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
i18n:checkCI рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдРрд╕рд╛ рд╕рдВрджреЗрд╢ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдФрд░ рдХрдорд┐рдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛редVite рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
@vitejs/plugin-reactv6 рдХреЗ рд╕рд╛рде, Babel рдЕрдм рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд╣реАрдВ рд╣реИред@rolldown/plugin-babelLingui рдореИрдХреНрд░реЛ рдкреНрд▓рдЧрдЗрди рдЪрд▓рд╛рддрд╛ рд╣реИ, рдФрд░linguiTransformerBabelPresetрдХреЗрд╡рд▓ рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореИрдХреНрд░реЛ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИрдВ, рдЬреЛ рдмрд┐рд▓реНрдб рдХреЛ рддреЗрдЬрд╝ рд░рдЦрддрд╛ рд╣реИредvite.config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдХреИрдЯрд▓реЙрдЧ рд▓реЛрдб рдХрд░реЗрдВ
import()рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд┐рдЯрд░рд▓ Vite рдХреЛ рдкреНрд░рддрд┐ рдХреИрдЯрд▓реЙрдЧ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ (chunk) рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ Lingui рдкреНрд▓рдЧрдЗрди.poрдлрд╝рд╛рдЗрд▓ рдХреЛ рдЗрд╕рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдлреНрд░реЗрдВрдЪ рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдХреЗрд╡рд▓ рдлреНрд░реЗрдВрдЪ рдХреИрдЯрд▓реЙрдЧ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИредрд╕рдВрдХрд▓рд┐рдд рд╕рдВрджреЗрд╢ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд░реВрдЯ рд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, HTML рдореЗрдВ рдХреНрд░рдордмрджреНрдз (serialized) рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдкрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
src/i18n/lingui.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
TypeScript рдХреЗ рд▓рд┐рдП
.poрдЖрдпрд╛рдд рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдмрд╛рд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ:src/i18n/po.d.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд░реВрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдПрдВ
рд░реВрдЯ рд░реВрдЯ рд╕рд░реНрд╡рд░-рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП
<html>рдкрд░langрдФрд░dirрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд▓реЛрдХреЗрд▓ рдкреИрд░рдо рдХреЛ рдкрдврд╝рддрд╛ рд╣реИредsrc/routes/__root.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд▓реЛрдХреЗрд▓ рд▓реЗрдЖрдЙрдЯ рд░реВрдЯ рдмрдирд╛рдПрдВ
{-$locale}рдлрд╝реЛрд▓реНрдбрд░ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд╛рде рд╕реЗрдЧрдореЗрдВрдЯ рдмрдирд╛рддрд╛ рд╣реИ:/aboutрдФрд░/fr/aboutрджреЛрдиреЛрдВ/{-$locale}/aboutрд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рд▓реЗрдЖрдЙрдЯ рдЕрдЬреНрдЮрд╛рдд рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдХреЗ рдХреИрдЯрд▓реЙрдЧ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╕рдорд░реНрдкрд┐рддI18nрдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредsrc/routes/{-$locale}/route.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдкреЗрдЬреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рд╕реНрд░реЛрдд рдЯреЗрдХреНрд╕реНрдЯ рд▓рд┐рдЦреЗрдВред рдореИрдХреНрд░реЛрдЬрд╝ рдЗрд╕реЗ рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рдореИрд╕реЗрдЬ рдЖрдИрдбреА рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рдФрд░
lingui extractрдЗрд╕реЗ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред- JSX рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП
<Trans>, рдиреЗрд╕реНрдЯреЗрдб рддрддреНрд╡реЛрдВ рд╕рд╣рд┐рдд; - рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ (рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рдкреНрд░реЙрдкреНрд╕) рдХреЗ рд▓рд┐рдП
useLingui().t; - ICU рдмрд╣реБрд╡рдЪрдиреЛрдВ рдХреЗ рд▓рд┐рдП
<Plural>ред
src/routes/{-$locale}/about.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдХрд┐рд╕реА рдХреИрдЯрд▓реЙрдЧ рдХрд╛ рдбрд╛рдпрдиреЗрдорд┐рдХ
import()рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдИ рд▓реЛрдбрд░реЛрдВ рдореЗрдВloadI18nрдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХреИрдЯрд▓реЙрдЧ рджреЛ рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред- JSX рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП
рдЕрдкрдиреЗ рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ
рдирд┐рд╖реНрдХрд░реНрд╖рдг (extraction) рдЪрд▓рд╛рдПрдВред Lingui рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджреЗрд╢ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХреИрдЯрд▓реЙрдЧ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ:
bashрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ
msgstrрдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ:src/locales/fr/messages.poрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/locales/es/messages.poрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рдВрджреЗрд╢ рдЖрдИрдбреА рд╕реНрд░реЛрдд рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╣реИрд╢ рд╣реЛрддреЗ рд╣реИрдВ: рдЕрдВрдЧреНрд░реЗрдЬреА рдЯреЗрдХреНрд╕реНрдЯ рдмрджрд▓рдиреЗ рд╕реЗ рдПрдХ рдирдпрд╛ рд╕рдВрджреЗрд╢ рдмрдирддрд╛ рд╣реИред рдЙрди рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдЖрдИрдбреА (
<Trans id="about.title">About us</Trans>) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдЕрдХреНрд╕рд░ рдмрджрд▓рддреЗ рд╣реИрдВредрдПрдХ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд▓рд┐рдВрдХ рдШрдЯрдХ рдмрдирд╛рдПрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдкреНрд░рддреНрдпреЗрдХ рд░реВрдЯ
{-$locale}рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд░рд╣рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рд┐рдВрдХ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредsrc/components/LocalizedLink.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреА рднрд╛рд╖рд╛ рдмрджрд▓реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрд╕реНрд╡рд┐рдЪрд░ рдХреЛ рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдХреНрд░реЙрд▓рд░реНрд╕ рдХреЛ рд╣рд░ рднрд╛рд╖рд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓ рд╕рдХреЗред
to="."рд╡рд░реНрддрдорд╛рди рдкреЗрдЬ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ рдФрд░ рд▓реЛрдХреЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рд▓реЛрдХреЗрд▓ рд▓реЗрдЖрдЙрдЯ рдХрд╛ рд▓реЛрдбрд░ рдлрд┐рд░ рдирдпрд╛ рдХреИрдЯрд▓реЙрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИредsrc/components/LocaleSwitcher.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрдиреЗ рджрдо рдкрд░ рд░реИрдВрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд╢рд░реНрддреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдПрдХ рдЕрдиреБрд╡рд╛рджрд┐рдд
<title>рдФрд░ рд╡рд┐рд╡рд░рдг, рдПрдХ рд╕реНрд╡-рд╕рдВрджрд░реНрднрд┐рдд рдХреИрдиреЛрдирд┐рдХрд▓, рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХhreflangрдкреНрд▓рд╕x-default, Open Graph рд▓реЛрдХреЗрд▓реНрд╕ рдФрд░inLanguageрдХреЗ рд╕рд╛рде JSON-LD рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗред рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдбрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЪрд░рдг 8), рдФрд░ рдпрд╣ рд╣реЗрд▓реНрдкрд░ рдмрд╛рдХреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ:src/i18n/seo.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ рд╕рд╛рдЗрдЯрдореИрдк рдФрд░ robots.txt рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрд╕рд╛рдЗрдЯрдореИрдк рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ URL рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
xhtml:linkрдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рддреА рд╣реИредrobots.txtрд╣рд░ рднрд╛рд╖рд╛ рдореЗрдВ рдирд┐рдЬреА рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдЗрдЯрдореИрдк рдХреА рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдиреЗ рдПрдХ рдмрдирд╛рдпрд╛ рд╣реИ рддреЛpublic/robots.txtрдХреЛ рд╣рдЯрд╛ рджреЗрдВредsrc/routes/sitemap[.]xml.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/routes/robots[.]txt.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХреЛ рдкреНрд░реА-рд░реЗрдВрдбрд░ рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкрде рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ рддрд╛рдХрд┐ TanStack Start рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рд╕рднреА рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкреНрд░реА-рд░реЗрдВрдбрд░ рдХрд░ рд╕рдХреЗ:
vite.config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдкрд╣рд▓реА рдмрд╛рд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВ рдФрд░ 404 рдкреЗрдЬреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдПрдХ рдЕрдиреБрд░реЛрдз рдорд┐рдбрд▓рд╡реЗрдпрд░
/рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЖрдЧрдВрддреБрдХ рдХреЛ рдЙрдирдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ (рдкрд╣рд▓реЗ рдХреБрдХреА, рдлрд┐рд░Accept-Language)ред рдбреАрдк рд▓рд┐рдВрдХ рдХрднреА рднреА рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреНрд░реЙрд▓рд░реНрд╕ рдФрд░ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП URL рд╣рдореЗрд╢рд╛ рд╡рд╣ рдкреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдерд╛редsrc/i18n/negotiateLocale.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/start.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
404 рдкреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреИрдЪ-рдСрд▓ рд░реВрдЯ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд
notFoundComponentрдХреЛ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗnoindexрдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ: React 19<meta>рдХреЛ<head>рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИредsrc/components/NotFound.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/routes/{-$locale}/$.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдореИрдХреНрд░реЛрдЬрд╝ рд░рдЦреЗрдВ, Intlayer рдХреЗ рд╕рд╛рде рд░рдирдЯрд╛рдЗрдо рдХрдо рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХ@intlayer/linguiрд╕рдВрдЧрддрддрд╛ рдПрдбреЗрдкреНрдЯрд░ рдЖрдкрдХреЗ рд╕реНрд░реЛрдд рдХреЛ рдЕрдЫреВрддрд╛ рд░рдЦрддрд╛ рд╣реИ: рдореИрдХреНрд░реЛрдЬрд╝ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдВрдХрд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдкрд░рд┐рдгрд╛рдореАi18n._(),useLingui()рдФрд░<Trans>рдХреЙрд▓ рд╕рдВрдХрд▓рд┐рдд Intlayer рд╢рдмреНрджрдХреЛрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд░реЛрд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ, рд░рдирдЯрд╛рдЗрдо ~56.7 KB рд╕реЗ рдШрдЯрдХрд░ ~9.8 KB gzip рд╣реЛ рдЬрд╛рддрд╛ рд╣реИредbashрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдореИрдХреНрд░реЛ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХреЗ рдмрд╛рдж рдкреНрд▓рдЧрдЗрди рдЬреЛрдбрд╝реЗрдВ, рддрд╛рдХрд┐ рдпрд╣
@lingui/coreрдФрд░@lingui/reactрдХреЛ рдПрдбреЗрдкреНрдЯрд░ рдкрд░ рдЙрдкрдирд╛рдо (alias) рджреЗ рд╕рдХреЗ:vite.config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдХреИрдЯрд▓реЙрдЧ рдХреЛ sync JSON рдкреНрд▓рдЧрдЗрди (JSON рдХреИрдЯрд▓реЙрдЧ) рдпрд╛ sync PO рдкреНрд▓рдЧрдЗрди (PO рдХреИрдЯрд▓реЙрдЧ) рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд░рд╛ рд╕реЗрдЯрдЕрдк Lingui рд╕рдВрдЧрддрддрд╛ рдЧрд╛рдЗрдб рдореЗрдВ рджреЗрдЦреЗрдВ, рдФрд░ Lingui рдмрдирд╛рдо @intlayer/lingui рдореЗрдВ рдЖрдордиреЗ-рд╕рд╛рдордиреЗ рддреБрд▓рдирд╛ рджреЗрдЦреЗрдВред
Intlayer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХLingui рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджрд░реНрдЬрдиреЛрдВ рдХреИрдЯрд▓реЙрдЧ рдХреЛ рд╣рд╛рде рд╕реЗ рднрд░рдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдЬрд╛рддрд╛ рд╣реИред Intlayer рдореБрдлрд╝реНрдд рдФрд░ рдУрдкрди рд╕реЛрд░реНрд╕ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЯреВрд▓реНрд╕ Lingui рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ:
- AI рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА API рдХреБрдВрдЬреА рдФрд░ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред auto fill рдФрд░ CLI рджреЗрдЦреЗрдВред
- рдЕрдкрдиреА PO рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдП рд░рдЦреЗрдВ рд╕рддреНрдп рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ sync PO рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рдеред
- рд▓рд╛рдкрддрд╛ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ CI рдореЗрдВред рдЕрдкрдиреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рджреЗрдЦреЗрдВред
- рдЕрдкрдиреА рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд (deployed) рд╕рд╛рдЗрдЯ рдХрд╛ рдСрдбрд┐рдЯ рдХрд░реЗрдВ рд▓рд╛рдкрддрд╛
hreflang, рдЧрд▓рдд рдХреИрдиреЛрдирд┐рдХрд▓ рдФрд░ рд▓реЛрдХреЗрд▓ рд▓реАрдХ рдХреЗ рд▓рд┐рдП scan рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рдеред
рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди
рд╣рд╛рдБред Lingui рдХрд╛ рдХреЛрдИ рд╕рдорд░реНрдкрд┐рдд TanStack Start рдПрдХреАрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ Vite рдкреНрд▓рдЧрдЗрди рдФрд░ Babel рдореИрдХреНрд░реЛ рдкреНрд▓рдЧрдЗрди рдЬреНрдпреЛрдВ рдХреЗ рддреНрдпреЛрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдмрд┐рдВрджреБ рд╣реИрдВ @rolldown/plugin-babel рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдХреНрд░реЛрдЬрд╝ рдЪрд▓рд╛рдирд╛ (Vite 8 рдФрд░ @vitejs/plugin-react v6 рдореЗрдВ рдЕрдм Babel рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ), рдФрд░ SSR рдХреЗ рджреМрд░рд╛рди рд╡реИрд╢реНрд╡рд┐рдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ I18n рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдирд╛ред
рд╕рд░реНрд╡рд░ рдкрд░, рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рддреА рд╣реИред рдПрдХ рд╕рд╛рдЭрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ i18n.activate("fr") рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд░реЗрдВрдбрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреА рднрд╛рд╖рд╛ рдмрджрд▓ рдЬрд╛рдПрдЧреАред setupI18n рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ рдЕрд▓рдЧ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
рдирд╣реАрдВред @lingui/vite-plugin рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ .po рдХреИрдЯрд▓реЙрдЧ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рдХреЗрд╡рд▓ рдирдП рд╕рдВрджреЗрд╢ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lingui extract рдЪрд▓рд╛рддреЗ рд╣реИрдВред
рдЙрдиреНрд╣реЗрдВ msg рдореИрдХреНрд░реЛ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ, рдФрд░ рд░реВрдЯ рд▓реЛрдбрд░ рдореЗрдВ i18n._(msg`...`) рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВред рд▓реЛрдбрд░ рд╕рд╛рджреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП head() рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдорд╛рди рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреНрд░рдордмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВред рдЪрд░рдг 8 рдФрд░ рдЪрд░рдг 12 рдкреВрд░рд╛ рд╕реЗрдЯрдЕрдк рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред
рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП ~56.7 KB gzip рдорд╛рдкрддрд╛ рд╣реИред рдорд╛рдВрдЧ рдкрд░ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ рдХреИрдЯрд▓реЙрдЧ рдХреЗ рд╕рд╛рде, рдкреЗрдЬреЛрдВ рдХрд╛ рд╡рдЬрди рдмрд┐рдирд╛ i18n рдХреЗ 111 KB рдХреЗ рдореБрдХрд╛рдмрд▓реЗ ~115 KB рд╣реЛрддрд╛ рд╣реИред рд╣рд░ рдХреИрдЯрд▓реЙрдЧ рдХреЛ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдмрдврд╝рдХрд░ ~152 KB рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рдБред @intlayer/lingui рдПрдбреЗрдкреНрдЯрд░ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХреЛ рд╕реНрд╡реИрдк рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рдЖрдк рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ useIntlayer рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдЧрддрддрд╛ рдПрдбреЗрдкреНрдЯрд░ рджреЗрдЦреЗрдВред
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
рдЕрднреА рддрдХ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВред рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдмрдиреЗрдВред
