ΠΠ»Ρ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π‘ΠΏΡΠΎΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ²ΠΎΠ΄ΠΊΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° AI
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΠ.
Π‘ΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΈΠ΄Π΅Ρ ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄, ΠΏΠΎΠ΄Π°Π² Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π° GitHub.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ GitHubΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Markdown Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° Π½Π° Next.js 15 Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ next-intl ΠΈ Intlayer | ΠΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ (i18n)
ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΡΠΎΠ²Π΅Π΄Π΅Ρ Π²Π°Ρ ΡΠ΅ΡΠ΅Π· Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ next-intl Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Next.js 15 (App Router) ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ, ΠΊΠ°ΠΊ Π½Π°Π»ΠΎΠΆΠΈΡΡ Intlayer ΡΠ²Π΅ΡΡ Ρ Π΄Π»Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ.
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π² next-i18next vs next-intl vs Intlayer.
- ΠΠ»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ : ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΠΌ ΡΠ°Π·Π΄Π΅Π»Π°ΠΌ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
- ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ: ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ payload ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ/ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ.
- ΠΠ»Ρ ΠΎΠΏΡΡΠ½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²: ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ, middleware, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ SEO ΠΈ Ρ ΡΠΊΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ.
Π§ΡΠΎ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ:
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
- ΠΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅, sitemap, robots Π΄Π»Ρ SEO
- Middleware Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΠΈ
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Intlayer ΡΠ²Π΅ΡΡ Ρ (CLI ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ)
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ next-intl
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ next-intl -
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
ΠΠ°Π³ΡΡΠΆΠ°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½Ρ Π²Π°ΡΠΈΠΌ ΠΌΠ°ΡΡΡΡΡΠ°ΠΌ, ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π»ΠΎΠΊΠ°Π»ΠΈ Π½Π° ΡΠ°Π½Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅. ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π΅ΡΠΆΠΈΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌΠΈ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠΉΡΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΡΡΠ΅ΡΡΠΈΠΊ.
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ (ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ; Π·Π°Π³ΡΡΠΆΠ°ΠΉΡΠ΅ ΠΈΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ next-intl ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ)
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "about" Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡΡ (Π²ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½Ρ Π²Π°ΡΠ΅ΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ).
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅
ΠΡΠΎΡ UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΡΠ΅Π½Π΄Π΅ΡΠ΅Π½ Π²Π½ΡΡΡΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° (ΡΡΡΠ°Π½ΠΈΡΠ° β ΠΊΠ»ΠΈΠ΅Π½Ρ β ΡΠ΅ΡΠ²Π΅Ρ). ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌ, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ:
- ΠΡΡΠΈΡΠ»ΡΠΉΡΠ΅
formattedCountΠ½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,const initialFormattedCount = format.number(0)). - ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
Middleware Π΄Π»Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ
ΠΠΎΠ±Π°Π²ΡΡΠ΅ middleware Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π»ΠΎΠΊΠ°Π»ΠΈ ΠΈ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ html Π°ΡΡΠΈΠ±ΡΡΡ
langΠΈdir: Πsrc/app/[locale]/layout.tsxΠ²ΡΡΠΈΡΠ»ΡΠΉΡΠ΅dirΡ ΠΏΠΎΠΌΠΎΡΡΡgetLocaleDirection(locale)ΠΈ Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅<html lang={locale} dir={dir}>. - Π Π°Π·Π΄Π΅Π»ΡΠΉΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠΎ namespace: ΠΡΠ³Π°Π½ΠΈΠ·ΡΠΉΡΠ΅ JSON ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΡΠΌ ΠΈ namespace (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
common.json,about.json). - ΠΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ: ΠΠ° ΡΡΡΠ°Π½ΠΈΡΠ°Ρ
ΠΎΡΠΏΡΠ°Π²Π»ΡΠΉΡΠ΅ Π²
NextIntlClientProviderΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,pick(messages, ['common', 'about'])). - ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ: ΠΠΊΡΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅
export const dynamic = 'force-static'ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠΉΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρlocales. - Π‘ΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ: ΠΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ (ΠΏΠ΅ΡΠ΅Π²Π΅Π΄ΡΠ½Π½ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ, ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΡΠ»Π°), Π° Π½Π΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Intlayer ΠΏΠΎΠ²Π΅ΡΡ next-intl
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ intlayer:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ intlayer:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π² package.json:
ΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ:
intlayer fill: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π°ΡΠ΅Π³ΠΎ AI-ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ.intlayer test: ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅/Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π² CI).
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ²; ΡΠΌΠΎΡΡΠΈΡΠ΅ Intlayer CLI.
