рдЕрдкрдиреЗ рдкреНрд░рд╢реНрди рдХреЛ рдкреВрдЫреЗрдВ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЗрд╕ рдкреГрд╖реНрда рдФрд░ рдЖрдкрдХреЗ рдЪреБрдиреЗ рд╣реБрдП AI рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╕рдВрд╕реНрдХрд░рдг рдЗрддрд┐рд╣рд╛рд╕
- "рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг"v9.5.1026/9/2026
рдЗрд╕ рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдХ AI рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХреА рдЧрдИ рд╣реИред
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдореВрд▓ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦреЗрдВрдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ GitHub рдкрд░ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рди рдХрд░реЗрдВред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП GitHub рд▓рд┐рдВрдХрджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ Markdown рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
2026 рдореЗрдВ use-intl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ TanStack Start рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ
рд╡рд┐рд╖рдп рд╕реВрдЪреА
use-intl рдХреНрдпрд╛ рд╣реИ?
use-intl next-intl рдХрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ-рдПрдЧреНрдиреЙрд╕реНрдЯрд┐рдХ рдХреЛрд░ рд╣реИред рдпрд╣ Next.js рдкрд░ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╛рди useTranslations, useFormatter рдФрд░ IntlProvider APIs, ICU MessageFormat рд╕рдорд░реНрдерди рдФрд░ рдордЬрдмреВрдд TypeScript рдПрдХреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕реЗ TanStack Start рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрдо рдЪреЙрдЗрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд╣реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬрд┐рд╕реЗ AI рдЕрд╕рд┐рд╕реНрдЯреЗрдВрдЯ рдЗрд╕ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╕реБрдЭрд╛рддреЗ рд╣реИрдВред
TanStack Start рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд i18n рд▓реЗрдпрд░ рдирд╣реАрдВ рдЖрддреА рд╣реИред рд░реВрдЯрд┐рдВрдЧ, рд▓реЛрдХреЗрд▓ рдбрд┐рдЯреЗрдХреНрд╢рди, SEO рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рд╕рд╛рдЗрдЯрдореИрдк рдЬрдирд░реЗрд╢рди рдЖрдкрдХреЗ рдКрдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЧрд╛рдЗрдб рдЗрд╕ рд╕рдм рдХреЛ рд╢реБрд░реВ рд╕реЗ рдЕрдВрдд рддрдХ рдХрд╡рд░ рдХрд░рддреА рд╣реИ:
- рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ
{-$locale}рд╕реЗрдЧрдореЗрдВрдЯ (/about,/fr/about) рдХреЗ рд╕рд╛рде рд▓реЛрдХреЗрд▓-рдЕрд╡реЗрдпрд░ рд░реВрдЯрд┐рдВрдЧред - рд░реВрдЯ-рд╡рд╛рд░ рдореИрд╕реЗрдЬ рд▓реЛрдбрд┐рдВрдЧ рддрд╛рдХрд┐ рдПрдХ рдкреЗрдЬ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рд▓реЛрдХреЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗ рдЬрд┐рд╕реЗ рд╡рд╣ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИред
- рдмрд┐рдирд╛ рдЯреЗрдХреНрд╕реНрдЯ рдорд┐рд╕рдореИрдЪ рдХреЗ рд╕рд░реНрд╡рд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рдиред
- рд╕рдВрдкреВрд░реНрдг рдмрд╣реБрднрд╛рд╖реА SEO: рдЕрдиреБрд╡рд╛рджрд┐рдд
<title>рдФрд░ рд╡рд┐рд╡рд░рдг, рдХреИрдиреЛрдирд┐рдХрд▓ URL,x-defaultрдХреЗ рд╕рд╛рдеhreflangрдСрд▓реНрдЯрд░рдиреЗрдЯреНрд╕, Open Graph рд▓реЛрдХреЗрд▓реНрд╕, JSON-LD,xhtml:linkрдСрд▓реНрдЯрд░рдиреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯрдореИрдк,robots.txtрдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХрд╛ рдкреНрд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧред
рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдЯреИрдХ рдХреА рддрд▓рд╛рд╢ рд╣реИ? TanStack Start + Paraglide рдЧрд╛рдЗрдб, TanStack Start + Lingui рдЧрд╛рдЗрдб, рдпрд╛ TanStack Start + Intlayer рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВред
рдХреНрдпрд╛ рдЖрдк Next.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? next-intl рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВред
TanStack Start рдкрд░ use-intl рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ
i18n рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╣рд░ рдкреНрд░рдореБрдЦ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╛рди 10-рдкреЗрдЬ, 10-рд▓реЛрдХреЗрд▓ TanStack Start рдРрдк рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рдкрддрд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рдбрд╛рдпрдирд╛рдорд┐рдХ JSON рд▓реЛрдбрд┐рдВрдЧ
рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЖрд▓рд╕реНрдп рд╕реЗ рдЕрдиреБрд╡рд╛рдж рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ
рд╕реНрдХреЛрдкреНрдб JSON (рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ)
рдкреНрд░рддрд┐-рдкреГрд╖реНрда рдЕрдиреБрд╡рд╛рдж рдиреЗрдорд╕реНрдкреЗрд╕
I18n рдкреНрд░рджрд░реНрд╢рди рдмреЗрдВрдЪрдорд╛рд░реНрдХ
рдпрд╣ рдореАрдЯреНрд░рд┐рдХ рдХреНрдпрд╛ рд╣реИ?
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдВрдбрд▓ рдХрд╛ рдХреБрд▓ gzip-рд╕рдВрдкреАрдбрд╝рд┐рдд рдЖрдХрд╛рд░ред рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЯреНрд░реА-рд╢реЗрдХрд┐рдВрдЧ рдФрд░ рдорд┐рдирд┐рдлрд┐рдХреЗрд╢рди рдХреЗ рдмрд╛рдж рдкреНрд░рджрд╛рддрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ?
рдПрдХ рдЫреЛрдЯрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдХрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреЗрд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рддреЗрдЬрд╝ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд╣реЛрддрд╛ рд╣реИред
рджреЗрдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛
use-intl@4.14.2 рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрдВрдХрдбрд╝реЗ, 2026-09-26 рдХреЛ рдорд╛рдкреЗ рдЧрдП (gzip):
рд╕рднреА рдбреЗрдЯрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдореЛрдбрд▓ рдореЗрдВ рдЦреЛрд▓реЗрдВ
| рд╕реЗрдЯрдЕрдк | рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рд╛рдЗрдЬрд╝ | рдкреНрд░рддрд┐ рдкреЗрдЬ JS | рдЕрдиреНрдп-рд▓реЛрдХреЗрд▓ рд▓реАрдХ | рдЕрдиреНрдп-рдкреЗрдЬ рд▓реАрдХ |
|---|---|---|---|---|
| рдХреЛрдИ i18n рдирд╣реАрдВ (рдмреЗрд╕ рдРрдк) | - | 111.0 KB | 0% | 0% |
use-intl (рдЗрд╕ рдЧрд╛рдЗрдб рдХрд╛ рд╕реЗрдЯрдЕрдк) | 75.9 KB | 128.7 KB | 0% | 0% |
@intlayer/use-intl (рдХрдореНрдкреИрдЯ) | 6.7 KB | 129.4 KB | 0% | 0% |
react-intlayer (рдореВрд▓ Intlayer) | 4.5 KB | 126.8 KB | 0% | 0% |
рдореБрдЦреНрдп рдирд┐рд╖реНрдХрд░реНрд╖:
- рдореИрд╕реЗрдЬреЗрд╕ рдХреЛ рдкреЗрдЬ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рд▓реЛрдб рдХрд░реЗрдВред рдпрд╣ рджреЛрдиреЛрдВ рд▓реАрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдЯреЗрдкреНрд╕ рдпрд╣реА рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
- рд░рдирдЯрд╛рдЗрдо рд╕реНрд╡рдпрдВ рднрд╛рд░реА рд░рд╣рддрд╛ рд╣реИ (~76 KB gzip), рдХреНрдпреЛрдВрдХрд┐ ICU рдкрд╛рд░реНрд╕рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
@intlayer/use-intlрдХрдореНрдкреИрдЯ рдПрдбреЗрдкреНрдЯрд░ (рд╕реНрдЯреЗрдк 17) ~7 KB рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди API рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред
рдкреВрд░рд╛ рдбреЗрдЯрд╛ рджреЗрдЦреЗрдВ: TanStack Start рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЛрд░реНрдЯ, рдФрд░ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реАред
TanStack Start рдкрд░ рдлреАрдЪрд░ рддреБрд▓рдирд╛
TanStack Start рдкрд░ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде use-intl рдХреА рддреБрд▓рдирд╛:
рд╕рднреА рдбреЗрдЯрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдореЛрдбрд▓ рдореЗрдВ рдЦреЛрд▓реЗрдВ
| рдлрд╝реАрдЪрд░ | react-intlayer (Intlayer) | use-intl | Paraglide JS | Lingui |
|---|---|---|---|---|
| рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рдкрд╛рд╕ рдЕрдиреБрд╡рд╛рдж | тЬЕ рд╕рд╣-рд╕реНрдерд┐рдд (Co-located) | тЭМ рдХреЗрдВрджреНрд░реАрдХреГрдд JSON | тЭМ рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ JSON рдлрд╝рд╛рдЗрд▓ | тЪая╕П рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рд╕реЛрд░реНрд╕ рдЯреЗрдХреНрд╕реНрдЯ |
| TypeScript рдПрдХреАрдХрд░рдг | тЬЕ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯреЗрдб рдкреНрд░рдХрд╛рд░ | тЬЕ AppConfig рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ | тЬЕ рдЯрд╛рдЗрдкреНрдб рдореИрд╕реЗрдЬ рдлрд╝рдВрдХреНрд╢рдВрд╕ | тЪая╕П рдХреЗрд╡рд▓ рдореИрдХреНрд░реЛрдЬрд╝ |
| рдЧрд╛рдпрдм рдЕрдиреБрд╡рд╛рдж рдбрд┐рдЯреЗрдХреНрд╢рди | тЬЕ рдЯрд╛рдЗрдк рдПрд░рд░ рдФрд░ рдмрд┐рд▓реНрдб рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ | тЪая╕П рд░рдирдЯрд╛рдЗрдо рдлрд╝реЙрд▓рдмреИрдХ | тЪая╕П рдмреЗрд╕ рд▓реЛрдХреЗрд▓ рдкрд░ рдлрд╝реЙрд▓рдмреИрдХ | тЪая╕П рд╕реЛрд░реНрд╕ рдЯреЗрдХреНрд╕реНрдЯ рдкрд░ рдлрд╝реЙрд▓рдмреИрдХ |
| рд░рд┐рдЪ рдХрдВрдЯреЗрдВрдЯ (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 рдЕрдиреБрд╡рд╛рдж | тЬЕ рдЖрдкрдХрд╛ рдЕрдкрдирд╛ рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдХреА (key) | тЭМ рдирд╣реАрдВ | тЭМ рдирд╣реАрдВ | тЭМ рдирд╣реАрдВ |
| рд╡рд┐рдЬреБрдЕрд▓ рдПрдбрд┐рдЯрд░ / CMS | тЬЕ рд╕реНрдерд╛рдиреАрдп рдПрдбрд┐рдЯрд░ + рд╡реИрдХрд▓реНрдкрд┐рдХ CMS | тЭМ рдмрд╛рд╣рд░реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо | тЪая╕П inlang рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдРрдкреНрд╕ | тЭМ рдмрд╛рд╣рд░реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо |
| SEO рд╣реЗрд▓реНрдкрд░реНрд╕ (hreflang, sitemap) | тЬЕ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд | тЭМ рдореИрдиреНрдпреБрдЕрд▓ | тЪая╕П рд╕реНрдерд╛рдиреАрдпрдХреГрдд URLs, рдмрд╛рдХреА рдореИрдиреНрдпреБрдЕрд▓ | тЭМ рдореИрдиреНрдпреБрдЕрд▓ |
| рд░рдирдЯрд╛рдЗрдо рд╕рд╛рдЗрдЬрд╝ (gzip, рдмреЗрдВрдЪрдорд╛рд░реНрдХ) | 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 рдЧрд╛рдЗрдбреНрд╕: Lingui, Paraglide JS, рдФрд░ Intlayerред
рд╡реЗ рдЕрднреНрдпрд╛рд╕ рдЬрд┐рдирдХрд╛ рдЖрдкрдХреЛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
- рдПрдХреНрд╕реЗрд╕рд┐рдмрд┐рд▓рд┐рдЯреА, рд╕реНрдХреНрд░реАрди рд░реАрдбрд░реНрд╕ рдФрд░ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП
<html>рдкрд░langрдФрд░dirрд╕реЗрдЯ рдХрд░реЗрдВред - рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ URL рд░рдЦреЗрдВред рдХреЗрд╡рд▓-рдХреБрдХреА рд╕реНрд╡рд┐рдЪ рдХреЗ рдмрдЬрд╛рдп рд▓реЛрдХреЗрд▓ рдкреНрд░реАрдлрд┐рдХреНрд╕ (
/fr/about) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд╡рд╛рджрд┐рдд рдкреЗрдЬ рдХреНрд░реЙрд▓ рдФрд░ рд╢реЗрдпрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛред - рдореИрд╕реЗрдЬреЗрд╕ рдХреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ (
common,home,about) рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддрд┐ рд░реВрдЯ рд▓реЛрдб рдХрд░реЗрдВред - рдХреЗрд╡рд▓ рд╕рдХреНрд░рд┐рдп рд▓реЛрдХреЗрд▓ рд▓реЛрдб рдХрд░реЗрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрднреА рднреА рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЖрдпрд╛рдд рди рдХрд░реЗрдВред
IntlProviderрдореЗрдВ рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдХреЛ рдлрд╝рд┐рдХреНрд╕ рдХрд░реЗрдВред рдЕрдиреНрдпрдерд╛ SSR рдХреЗ рджреМрд░рд╛рди рд╕рд░реНрд╡рд░ рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдореЗрдВ рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдкрд░ рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдореЗрдВ рддрд┐рдерд┐рдпрд╛рдВ рдлрд╝реЙрд░реНрдореЗрдЯ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдорд┐рд╕рдореИрдЪ рд╣реЛрддрд╛ рд╣реИред- рдЕрдкрдиреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдкрд░
canonical,hreflangрдФрд░x-defaultрдШреЛрд╖рд┐рдд рдХрд░реЗрдВред - рдПрдХ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдЗрдЯрдореИрдк рдФрд░ robots.txt рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХреЛ рдкреНрд░реА-рд░реЗрдВрдбрд░ рдХрд░реЗрдВред
- рд▓реЛрдХреЗрд▓ рд╕реНрд╡рд┐рдЪрд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рди рдХрд┐
<select>, рддрд╛рдХрд┐ рдХреНрд░реЙрд▓рд░реНрд╕ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рдХреЛ рдЦреЛрдЬ рд╕рдХреЗрдВред - рдЕрдкрдиреЗ рдореИрд╕реЗрдЬреЗрд╕ рдХреЛ рдЯрд╛рдЗрдк рдХрд░реЗрдВ рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдЧрд╛рдпрдм рдХреА (key) рдХрдВрдкрд╛рдЗрд▓ рд╕рдордп рдкрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПред
рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдФрд░ SEO рдкрд░ рд╣рдорд╛рд░реА рдЧрд╛рдЗрдб рдФрд░ hreflang рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВред
TanStack Start рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ use-intl рд╕реЗрдЯ рдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рдг-рджрд░-рдЪрд░рдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛
рдпрд╣рд╛рдБ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдмрдирд╛рдПрдВрдЧреЗ:
рдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ (Install Dependencies)
TanStack Start рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ, рдлрд┐рд░
use-intlрдЬреЛрдбрд╝реЗрдВ:bashрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
- use-intl:
IntlProvider,useTranslations,useFormatterрдФрд░createTranslator(React рдХреЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПhead()рдореЗрдВ) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- use-intl:
рдЕрдкрдиреЗ рд▓реЛрдХреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░реЗрдВ
рдЕрдкрдиреЗ рд▓реЛрдХреЗрд▓реНрд╕ рдФрд░ URL рд╣реЗрд▓реНрдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓ рд╕реЛрд░реНрд╕ рдСрдл рдЯреНрд░реБрде рдмрдирд╛рдПрдВред рд╣рд░ рджреВрд╕рд░реА рдлрд╝рд╛рдЗрд▓ (рд░реВрдЯреНрд╕, SEO, рд╕рд╛рдЗрдЯрдореИрдк, рдкреНрд░реА-рд░реЗрдВрдбрд░рд┐рдВрдЧ) рдпрд╣рд╛рдБ рд╕реЗ рдЖрдпрд╛рдд рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд▓реЛрдХреЗрд▓ рдЬреЛрдбрд╝рдирд╛ рдПрдХ-рд▓рд╛рдЗрди рдХрд╛ рдмрджрд▓рд╛рд╡ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдмрд┐рдирд╛ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЗ рд░рд╣рддрд╛ рд╣реИ (
/about), рдЕрдиреНрдп рд▓реЛрдХреЗрд▓реНрд╕ рдкреНрд░реАрдлрд┐рдХреНрд╕ рд╣реЛрддреЗ рд╣реИрдВ (/fr/about)ред рдпрд╣ "рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░" (as-needed) рд░рдгрдиреАрддрд┐ рд╣реИ: рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдкреНрд░рддрд┐ рдкреЗрдЬ рдПрдХ URL, рдФрд░ рдЖрдкрдХреЗ рдореБрдЦреНрдп рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ URLsредsrc/i18n/config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреА рдЕрдиреБрд╡рд╛рдж рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдВ
рдореИрд╕реЗрдЬреЗрд╕ рдХреЛ рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдФрд░ рдкреНрд░рддрд┐ рдиреЗрдорд╕реНрдкреЗрд╕ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВред
commonрдЙрди рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд░рдЦрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдиреЗрд╡рд┐рдЧреЗрд╢рди, рдлреВрдЯрд░), рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЛ рдЕрдкрдиреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕рд╣рд┐рдд рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИредuse-intl ICU MessageFormat рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрд╡рдЪрди, рдЪрдпрди рдФрд░ рд╕реНрд╡рд░реВрдкрд┐рдд рддрд░реНрдХ рд╕реНрд╡рдпрдВ рдореИрд╕реЗрдЬ рдХреЗ рдЕрдВрджрд░ рд░рд╣рддреЗ рд╣реИрдВред
messages/en/common.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
messages/en/about.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
messages/fr/common.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
messages/fr/about.jsonрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЙрд╕реА рддрд░рд╣
home.jsonрдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХmetadataрдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдкреЗрдЬ рдХрдВрдЯреЗрдВрдЯ рд╣реЛредрдиреЗрдорд╕реНрдкреЗрд╕ рдФрд░ рд▓реЛрдХреЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрджреЗрд╢ рд▓реЛрдб рдХрд░реЗрдВ
рдпрд╣ рд▓реЛрдбрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рд╣реИред
import.meta.globVite рдХреЛ рдкреНрд░рддрд┐ JSON рдлрд╝рд╛рдЗрд▓ рдПрдХ рдЪрдВрдХ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИред рдПрдХ рд░реВрдЯ рдЬреЛ рдлреНрд░реЗрдВрдЪ рдореЗрдВ["about"]рдорд╛рдВрдЧрддрд╛ рд╣реИ, рд╡рд╣messages/fr/about.jsonрдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ 0% рд▓реЛрдХреЗрд▓ рд▓реАрдХ рдФрд░ 0% рдкреЗрдЬ рд▓реАрдХ рддрдХ рдкрд╣реБрдБрдЪ рдЬрд╛рддрд╛ рд╣реИредsrc/i18n/messages.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЯрд╛рдЗрдк рдХрд░реЗрдВ (Type Your Messages)
рдореЙрдбреНрдпреВрд▓ рдСрдЧреНрдореЗрдВрдЯреЗрд╢рди рдЖрдкрдХреЛ
useTranslations("about")рдФрд░t("counter.label")рдкрд░ рдСрдЯреЛ-рдХрдВрдкрд▓реАрд╢рди рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рднреА рдЯрд╛рдЗрдкреЛ рдпрд╛ рд╣рдЯрд╛рдИ рдЧрдИ рдХреА рдкрд░ рдХрдВрдкрд╛рдЗрд▓ рдПрд░рд░ рджреЗрддрд╛ рд╣реИредsrc/i18n/use-intl.d.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ
tsconfig.jsonрдореЗрдВresolveJsonModuleрд╕рдХреНрд╖рдо рд╣реИредрд░реВрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдмрдирд╛рдПрдВ
рд░реВрдЯ рд░реВрдЯ
<html>рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣langрдФрд░dirрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рд▓реЛрдХреЗрд▓ рдкреИрд░рдо рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдХреЛрдИ рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕рд░реНрд╡рд░-рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП HTML рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╕рд╣реА рд╣реЛрдВредsrc/routes/__root.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд▓реЛрдХреЗрд▓ рд▓реЗрдЖрдЙрдЯ рд░реВрдЯ рдмрдирд╛рдПрдВ
{-$locale}рдлрд╝реЛрд▓реНрдбрд░ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд╛рде рд╕реЗрдЧрдореЗрдВрдЯ рдмрдирд╛рддрд╛ рд╣реИ:/aboutрдФрд░/fr/aboutрджреЛрдиреЛрдВ/{-$locale}/aboutрд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд▓реЗрдЖрдЙрдЯ:- рдЕрд╕рдорд░реНрдерд┐рдд рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ (
/xx/aboutтЖТ 404)ред - рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдХреЗ рд▓рд┐рдП
commonрдиреЗрдорд╕реНрдкреЗрд╕ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред IntlProviderрдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрд╕реЗрдЬреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд▓реЛрдбрд░ рдкрд░рд┐рдгрд╛рдо HTML рдореЗрдВ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣рд╛рдЗрдбреНрд░реЗрд╢рди рдкрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рджреВрд╕рд░реА рдмрд╛рд░
common.jsonрдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИредstaleTime: InfinityрдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдХреИрд╢реНрдб рд░рдЦрддрд╛ рд╣реИредsrc/routes/{-$locale}/route.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
IntlProviderрдкреИрд░реЗрдВрдЯ рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдХреЗ рдореИрд╕реЗрдЬреЗрд╕ рдХреЛ рдорд░реНрдЬ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рд╕реНрдЯреЗрдк рдПрдХ рдЫреЛрдЯрд╛ рдХрдВрдкреЛрдиреЗрдВрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬcommonрдХреЗ рдКрдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рдЬреЛрдбрд╝ рд╕рдХреЗред- рдЕрд╕рдорд░реНрдерд┐рдд рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ (
рдкреЗрдЬ рдореИрд╕реЗрдЬреЗрд╕ рдХреЛ рд╕реНрдХреЛрдк рдХрд░реЗрдВ (Scope Page Messages)
рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдЕрдкрдиреЗ рд▓реЛрдбрд░ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреЛ
ScopedMessagesрдХреЗ рд╕рд╛рде рд▓рдкреЗрдЯрддрд╛ рд╣реИ, рдЬреЛ рдкреЗрдЬ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреЛ рдкреИрд░реЗрдВрдЯ рдореИрд╕реЗрдЬреЗрд╕ рдХреЗ рд╕рд╛рде рдорд░реНрдЬ рдХрд░рддрд╛ рд╣реИредsrc/components/ScopedMessages.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдкреЗрдЬреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдкреЗрдЬ рд▓реЛрдбрд░ рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдХреЗ рд▓рд┐рдП
aboutрдиреЗрдорд╕реНрдкреЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ,head()рдЗрд╕рд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд, SEO-рдкреВрд░реНрдг рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдмрдирд╛рддрд╛ рд╣реИ (рд╕реНрдЯреЗрдк 13 рджреЗрдЦреЗрдВ), рдФрд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИредsrc/routes/{-$locale}/about.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдлреЙрд░реНрдореЗрдЯрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдкреНрд░реЛрд╡рд╛рдЗрдбрд░реНрд╕ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдХреЛрдИ рднреА рдХрдВрдкреЛрдиреЗрдВрдЯ
useTranslationsрдФрд░useFormatterрдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкреНрд▓реВрд░рд▓реНрд╕ ICU рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрдЦреНрдпрд╛рдПрдБ рд╕рдХреНрд░рд┐рдп рд▓реЛрдХреЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрд╡рд░реВрдкрд┐рдд рд╣реЛрддреА рд╣реИрдВредsrc/components/Counter.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдПрдХ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд▓рд┐рдВрдХ рдХрдВрдкреЛрдиреЗрдВрдЯ рдмрдирд╛рдПрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдкреНрд░рддреНрдпреЗрдХ рд░реВрдЯ
{-$locale}рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд░рд╣рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдХреЛ рд╡рд░реНрддрдорд╛рди рд▓реЛрдХреЗрд▓ рдкреИрд░рдо рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд░реИрдкрд░ TanStack Router рдХреЗ рдЯрд╛рдЗрдкреНрдбtoрдХреЛ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рд▓реЛрдХреЗрд▓ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИредsrc/components/LocalizedLink.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/components/Header.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреА рднрд╛рд╖рд╛ рдмрджрд▓реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрд╕реНрд╡рд┐рдЪрд░ рдХреЛ рд▓рд┐рдВрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рди рдХрд┐
<select>рдХреЗ рд░реВрдк рдореЗрдВред рд▓рд┐рдВрдХреНрд╕ рдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рд░реНрдЪ рдЗрдВрдЬрди рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдвреВрдВрдв рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрд┐рдирд╛ рднреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВредto="."рд╡рд░реНрддрдорд╛рди рдкреЗрдЬ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд▓реЛрдХреЗрд▓ рдкреИрд░рдо рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рдХреБрдХреА рд╕реНрдЯреЗрдк 16 рдХреЗ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдпрд╛рдж рд░рдЦрддреА рд╣реИредsrc/components/LocaleSwitcher.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдпрд╣реАрдВ рдкрд░ i18n рдХрд╛ рдлрд╛рдпрджрд╛ рдорд┐рд▓рддрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрдкрдиреЗ рджрдо рдкрд░ рд░реИрдВрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдПрдХ рдЕрдиреБрд╡рд╛рджрд┐рдд
<title>рдФрд░description; - рд╕реНрд╡рдпрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдХреИрдиреЛрдирд┐рдХрд▓ URL (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдХреА рдУрд░ рдирд╣реАрдВ);
- рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рдПрдХ
hreflangрдСрд▓реНрдЯрд░рдиреЗрдЯ, рд╕рд╛рде рд╣реА рдмреЗрдореЗрд▓ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдПx-default; - рд╕реЛрд╢рд▓ рдкреНрд░реАрд╡реНрдпреВрдЬрд╝ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ Open Graph
og:locale,og:locale:alternateрдФрд░og:url; inLanguageрдХреЗ рд╕рд╛рде JSON-LD, рдЬреЛ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдФрд░ AI рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЛ рдкреЗрдЬ рдХреА рднрд╛рд╖рд╛ рдХрд╛ рд╢реНрд░реЗрдп рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдПрдХрд▓ рд╣реЗрд▓реНрдкрд░ рдпрд╣ рд╕рдм рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреЗрдЬ рдХреЛрдб рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рд╣рддрд╛ рд╣реИ:
src/i18n/seo.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЗ
head()рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╕реНрдЯреЗрдк 9 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣реЛрдо рдкреЗрдЬ рдХреЗ рд▓рд┐рдП,path: "/"рдкрд╛рд╕ рдХрд░реЗрдВред- рдПрдХ рдЕрдиреБрд╡рд╛рджрд┐рдд
рдЕрдкрдиреЗ рд╕рд╛рдЗрдЯрдореИрдк рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдПрдХ рдмрд╣реБрднрд╛рд╖реА рд╕рд╛рдЗрдЯрдореИрдк рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ URL рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
xhtml:linkрдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕рднреА рдСрд▓реНрдЯрд░рдиреЗрдЯ рдШреЛрд╖рд┐рдд рдХрд░рддреА рд╣реИред Google рдЗрди рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдареАрдХ рдкреЗрдЬ рдХреЗhreflangрдЯреИрдЧ рдХреА рддрд░рд╣ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рддрдм рдПрдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмреИрдХрдЕрдк рдмрдирд╛рддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдкреЗрдЬ рдХреЛ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдХреНрд░реЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредTanStack Start рд╕рд░реНрд╡рд░ рд░реВрдЯреНрд╕ рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд░реВрдЯ рд╕реЗ рдкрд░реЛрд╕рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗрддреЗ рд╣реИрдВ:
src/routes/sitemap[.]xml.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЕрдкрдиреЗ robots.txt рдХрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдирд┐рдЬреА рд░реВрдЯреНрд╕ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
Disallowрдирд┐рдпрдореЛрдВ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЛ рдХрд╡рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдиреЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рд╣реИ рддреЛpublic/robots.txtрдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рд░реВрдЯ рд╕реЗ рдкрд░реЛрд╕реЗрдВ:src/routes/robots[.]txt.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдкрд╣рд▓реА рдмрд╛рд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЖрдЧрдВрддреБрдХреЛрдВ рдХреЛ рдЙрдирдХреА рднрд╛рд╖рд╛ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдПрдХ рдЕрдиреБрд░реЛрдз рдорд┐рдбрд▓рд╡реЗрдпрд░
/рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдХреЛ рдЙрд╕рдХреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рднреЗрдЬрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд▓реЛрдХреЗрд▓ рдХреБрдХреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдлрд┐рд░Accept-Languageрд╣реЗрдбрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рдХреЗрд╡рд▓/рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдбреАрдк рд▓рд┐рдВрдХреНрд╕ рдХреЛ рдХрднреА рдЫреБрдЖ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╢реЗрдпрд░ рдХрд┐рдП рдЧрдП URLs рдФрд░ рдХреНрд░реЙрд▓рд░реНрд╕ рдХреЛ рд╣рдореЗрд╢рд╛ рд╡рд╣реА рдкреЗрдЬ рдорд┐рд▓реЗ рдЬреЛ рдЙрдиреНрд╣реЛрдВрдиреЗ рдорд╛рдВрдЧрд╛ рдерд╛редsrc/i18n/negotiateLocale.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/start.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдПрдХ рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдЬреЛ рд╕реНрд╡рд┐рдЪрд░ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрдЧреНрд░реЗрдЬреА рдЪреБрдирддрд╛ рд╣реИ, рдЙрд╕реЗ рдХреБрдХреА рдореЗрдВ
locale=enрдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рдХрднреА рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдЯреЗрдЯрд┐рдХ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░ (рд╕реНрдЯреЗрдк 18),/рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реЛрд╕рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдирд╣реАрдВ рдЪрд▓рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдареАрдХ рд╣реИ: рдкреЗрдЬ рд╕реБрд▓рдн рд░рд╣рддрд╛ рд╣реИ рдФрд░ рд╕реНрд╡рд┐рдЪрд░ рдмрд╛рдХреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИредuse-intl API рдмрдирд╛рдП рд░рдЦреЗрдВ, Intlayer рдХреЗ рд╕рд╛рде рд░рдирдЯрд╛рдЗрдо рдШрдЯрд╛рдПрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрдмреЗрдВрдЪрдорд╛рд░реНрдХ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ use-intl рд╕реЗрдЯрдЕрдк рдХрд╛ рд╕рдмрд╕реЗ рднрд╛рд░реА рд╣рд┐рд╕реНрд╕рд╛ рд╕реНрд╡рдпрдВ рд░рдирдЯрд╛рдЗрдо рд╣реИ (~76 KB gzip)ред
@intlayer/use-intlрдХрдореНрдкреИрдЯ рдПрдбреЗрдкреНрдЯрд░ рд╕рдорд╛рди API (useTranslations,useFormatter,IntlProvider,createTranslator, ICU рдкреНрд▓реВрд░рд▓реНрд╕,t.rich) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрдВрдкрд╛рдЗрд▓ рдХрд┐рдП рдЧрдП Intlayer рдбрд┐рдХреНрд╢рдирд░реА рд╕реЗ рдкрд░реЛрд╕рддрд╛ рд╣реИ: ~75.9 KB рдХреЗ рдмрдЬрд╛рдп ~6.7 KB, 0% рд▓реЛрдХреЗрд▓ рд▓реАрдХ рдФрд░ 0% рдкреЗрдЬ рд▓реАрдХ, рдЖрдкрдХреЗ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗредbashрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
Vite рдкреНрд▓рдЧрдЗрди
use-intlрдХреЛ рдПрдбреЗрдкреНрдЯрд░ рдореЗрдВ рдЙрдкрдирд╛рдо (alias) рджреЗрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдореМрдЬреВрджрд╛ рдЖрдпрд╛рдд рдХрд╛рдо рдХрд░рддреЗ рд░рд╣реЗрдВ:vite.config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЖрдкрдХреА JSON рдлрд╝рд╛рдЗрд▓реЗрдВ sync JSON рдкреНрд▓рдЧрдЗрди рдХреА рдмрджреМрд▓рдд рд╕рд┐рдВрдЧрд▓ рд╕реЛрд░реНрд╕ рдСрдл рдЯреНрд░реБрде рдмрдиреА рд░рд╣рддреА рд╣реИрдВ:
intlayer.config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдпрд╣ рдПрдбреЗрдкреНрдЯрд░ рдПрдХ рдЖрд╕рд╛рди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдорд╛рд░реНрдЧ рднреА рд╣реИ: рдПрдХ рдмрд╛рд░ рдЬрдм рдпрд╣ рдЪрд▓рдиреЗ рд▓рдЧреЗ, рддреЛ рдЖрдк рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЛ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдореВрд▓
useIntlayerAPI рдореЗрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред Intlayer TanStack Start рдЧрд╛рдЗрдб рджреЗрдЦреЗрдВредрдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдХреЛ рдкреНрд░реА-рд░реЗрдВрдбрд░ рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрд╕реНрдЯреЗрдЯрд┐рдХ HTML рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдкреЗрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдкрд░реЛрд╕ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдкрд╛рде рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ рддрд╛рдХрд┐ TanStack Start рдмрд┐рд▓реНрдб рд╕рдордп рдкрд░ рд╕рднреА рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рдЗрдЯрдореИрдк рдФрд░ robots рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░реА-рд░реЗрдВрдбрд░ рдХрд░реЗ:
vite.config.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рдЪреВрдВрдХрд┐ рд▓реЛрдХреЗрд▓ рд╕реНрд╡рд┐рдЪрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд┐рдВрдХ рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ,
crawlLinks: trueрдЙрди рдкреЗрдЬреЛрдВ рдХреЛ рднреА рдЦреЛрдЬ рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рднреВрд▓ рдЧрдП рдереЗредрд╕реНрдерд╛рдиреАрдпрдХреГрдд 404 рдкреЗрдЬреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрд╕реНрдЯреЗрдк 7 рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЬреНрдЮрд╛рдд рд▓реЛрдХреЗрд▓ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП
notFound()рдереНрд░реЛ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдХреИрдЪ-рдСрд▓ рд░реВрдЯ рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рд▓реЛрдХреЗрд▓ рдХреЗ рдЕрдВрджрд░ рдЕрдЬреНрдЮрд╛рдд рдкрд╛рде рднреА рд╕реНрдерд╛рдиреАрдпрдХреГрдд 404 рд░реЗрдВрдбрд░ рдХрд░реЗрдВ, рдФрд░ рдЗрд╕реЗnoindexрдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ: React 19<meta>рдЯреИрдЧ рдХреЛ<head>рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИредsrc/components/NotFound.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
src/routes/{-$locale}/$.tsxрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рд▓реЛрдХреЗрд▓ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХрд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рд░реВрдЯ рдкреИрд░рдореНрд╕ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдпрд╛ рднрд╛рд╖рд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЛрдХреЗрд▓ рдХреБрдХреА рдкрдврд╝реЗрдВ, рдФрд░
Accept-Languageрд╣реЗрдбрд░ рдкрд░ рдлрд╝реЙрд▓рдмреИрдХ рдХрд░реЗрдВ:src/server/getServerLocale.tsрдХреЛрдб рдХреЙрдкреА рдХрд░реЗрдВрдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВ
рд╕рд░реНрд╡рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ
use-intlрд╕реЗloadMessagesрдФрд░createTranslatorрдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗрдВредIntlayer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░реЗрдВ
рд╡реИрдХрд▓реНрдкрд┐рдХuse-intl рдЕрдиреБрд╡рд╛рдж рд░реЗрдВрдбрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЙрддреНрдкрдиреНрди (produce) рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Intlayer рдирд┐рдГрд╢реБрд▓реНрдХ рдФрд░ рдУрдкрди рд╕реЛрд░реНрд╕ рд╣реИ, рдФрд░ рднрд▓реЗ рд╣реА рдЖрдк use-intl рдмрдирд╛рдП рд░рдЦреЗрдВ, рдпрд╣ рдЙрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░рддрд╛ рд╣реИ:
- CI рдпрд╛ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЧрд╛рдпрдм рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдЕрдкрдиреЗ рдЕрдиреБрд╡рд╛рджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рджреЗрдЦреЗрдВред
- рдЕрдкрдиреА рдЦреБрдж рдХреА API рдХреА рдФрд░ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ AI рдХреЗ рд╕рд╛рде рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВ:
npx intlayer fillрдЖрдкрдХреЗ рдРрдк рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдЧрд╛рдпрдм рдХреАрдЬрд╝ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдСрдЯреЛ рдлрд┐рд▓ рдФрд░ CLI рджреЗрдЦреЗрдВред - sync JSON рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдЕрдкрдиреА JSON рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд┐рдВрдЧрд▓ рд╕реЛрд░реНрд╕ рдСрдл рдЯреНрд░реБрде рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦреЗрдВред
- рд╡рд┐рдЬреБрдЕрд▓ рдПрдбрд┐рдЯрд░ рдФрд░ CMS рдХреЗ рд╕рд╛рде рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡рд┐рдЬреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдЧреИрд░-рдбреЗрд╡рд▓рдкрд░реНрд╕ рднреА рдЕрдиреБрд╡рд╛рдж рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХреЗрдВред
- MCP рд╕рд░реНрд╡рд░ рдФрд░ рдПрдЬреЗрдВрдЯ рд╕реНрдХрд┐рд▓реНрд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ AI рдПрдЬреЗрдВрдЯ рдХреЛ рд╕рдВрджрд░реНрдн рджреЗрдВред
- рд╕реНрдХреИрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЧрд╛рдпрдм
hreflang, рдЧрд▓рдд рдХреИрдиреЛрдирд┐рдХрд▓ рдФрд░ рд▓реЛрдХреЗрд▓ рд▓реАрдХ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рддреИрдирд╛рдд рд╕рд╛рдЗрдЯ рдХреЛ рд╕реНрдХреИрди рдХрд░реЗрдВред
рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, Intlayer рдХреНрдпреЛрдВ рдЪреБрдиреЗрдВ рджреЗрдЦреЗрдВред
рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрди
рд╣рд╛рдБ, рдпрджрд┐ рдЖрдк Next.js рдХреЗ рдмрд╛рд╣рд░ next-intl API рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ ICU рд╕рдВрджреЗрд╢, рдкреНрд░рд╛рд░реВрдкрдХ (formatters) рдФрд░ рдЕрдЪреНрдЫрд╛ TypeScript рд╕рдорд░реНрдерди рджреЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ Next.js-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд╛рдзрд╛рдУрдВ рдЬреИрд╕реЗ setRequestLocale рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╡рдЬрд╝рди рд╣реИ: рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП ~76 KB gzip рдорд╛рдкрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрдЕрдк рдкреНрд░рддреНрдпреЗрдХ рд▓реЛрдХреЗрд▓ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреЗрдЬ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рднреЗрдЬ рджреЗрддрд╛ рд╣реИред рд▓реАрдХ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЧрд╛рдЗрдб рдХреА рддрд░рд╣, рд░реВрдЯ рдФрд░ рд▓реЛрдХреЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдиреЗрдорд╕реНрдкреЗрд╕ рд▓реЛрдб рдХрд░реЗрдВред
use-intl, next-intl рдХрд╛ рдХреЛрд░ рд╣реИред next-intl рд╢реАрд░реНрд╖ рдкрд░ Next.js рдПрдХреАрдХрд░рдг рдЬреЛрдбрд╝рддрд╛ рд╣реИ: рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░, рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реЗрд▓реНрдкрд░реНрд╕, рд╕рд░реНрд╡рд░ рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП getTranslations рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред TanStack Start рдкрд░ рдЖрдк рд╕реАрдзреЗ use-intl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ TanStack Router рдХреЗ рд╕рд╛рде рд░реВрдЯрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
URL рдореЗрдВ рдкреНрд░реАрдлрд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рд╖рд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЕрдкрдирд╛ URL рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд░реНрдЪ рдЗрдВрдЬрди рдЗрдВрдбреЗрдХреНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢реЗрдпрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдХреА рдЕрднреА рднреА рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреЛ рдХрд┐ рд╕реНрдЯреЗрдк 16 рдХрд╛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд░рддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдореЗрдВ рддрд┐рдерд┐рдпреЛрдВ рдХреЛ рдлрд╝реЙрд░реНрдореЗрдЯ рдХрд░рддреЗ рд╣реИрдВред IntlProvider рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ timeZone рдкрд╛рд╕ рдХрд░реЗрдВ (рдпрд╛ рдХреБрдХреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд┐рдЬрд╝рд┐рдЯрд░ рдЯрд╛рдЗрдо рдЬрд╝реЛрди), рддрд╛рдХрд┐ рджреЛрдиреЛрдВ рдкрдХреНрд╖ рд╕рдорд╛рди рдЯреЗрдХреНрд╕реНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдиреЗрдорд╕реНрдкреЗрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ import.meta.glob рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐ рд░реВрдЯ рдФрд░ рдкреНрд░рддрд┐ рд▓реЛрдХреЗрд▓ рд▓реЛрдб рдХрд░реЗрдВ, рдЬреЛ рд▓реЛрдХреЗрд▓ рдФрд░ рдкреЗрдЬ рд▓реАрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░, рдпрджрд┐ рд░рдирдЯрд╛рдЗрдо рд╕рд╛рдЗрдЬрд╝ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рддреЛ @intlayer/use-intl рдПрдбреЗрдкреНрдЯрд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ: рд╕рдорд╛рди API, рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдореЗрдВ ~75.9 KB рдХреЗ рдмрдЬрд╛рдп ~6.7 KBред
рд░реВрдЯ рд▓реЛрдбрд░ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд░реВрдЯ head() рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ createTranslator рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдлрд┐рд░ title, description, рдХреИрдиреЛрдирд┐рдХрд▓ рдФрд░ hreflang рд▓рд┐рдВрдХ рд▓реМрдЯрд╛рдПрдВред рд╕реНрдЯреЗрдк 13 рдПрдХ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рд╣реЗрд▓реНрдкрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
рдЕрднреА рддрдХ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВред рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдмрдиреЗрдВред
