Π‘ΠΏΡΠΎΡΠΈΡΠ΅ ΡΠ²ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ²ΠΎΠ΄ΠΊΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° AI
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΠ.
Π‘ΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΈΠ΄Π΅Ρ ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄, ΠΏΠΎΠ΄Π°Π² Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π° GitHub.
Π‘ΡΡΠ»ΠΊΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ GitHubΠΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Markdown Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
react-Intl ΠΠ ΠΠ’ΠΠ react-i18next ΠΠ ΠΠ’ΠΠ intlayer
ΠΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΡΠΈ ΡΡΡΠΎΡΠ²ΡΠΈΡ ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠ° i18n Π΄Π»Ρ React: react-intl (FormatJS), react-i18next (i18next) ΠΈ Intlayer. ΠΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌΡΡ Π½Π° ΠΏΡΠΎΡΡΡΡ React ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Vite, CRA, SPA). ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Next.js, ΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π°ΡΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Next.js.
ΠΡ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΠΌ:
- ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
- TypeScript ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ²
- ΠΠΎΠ³Π°ΡΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅
- ΠΠΏΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° (DX), ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅
- SEO/ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ (Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°)
ΠΡΠ°ΡΠΊΠΎ: ΠΡΠ΅ ΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΡΡΡΠΎΠ³Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ TypeScript, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ, Π΄Π΅ΡΠ΅Π²ΡΡ ΡΠΆΠ°ΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ (ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ/CMS + ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ AI-ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄), ΡΠΎ Intlayer - ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠ»Π½ΡΠΉ Π²ΡΠ±ΠΎΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ React-ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·.
ΠΠ±ΡΠ΅Π΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- react-intl - ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π½Π° ICU ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ (Π΄Π°ΡΡ/ΡΠΈΡΠ»Π°/ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ) Ρ Π·ΡΠ΅Π»ΡΠΌ API. ΠΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ; Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½Π° Π²Π°ΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅.
- react-i18next - ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ; ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½, Π΄Π΅ΡΠ΅ΠΊΡΠΎΡΡ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (ICU, Π±Π΅ΠΊΠ΅Π½Π΄Ρ). ΠΠΎΡΠ½ΡΠΉ, Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΡΠ°ΡΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
- Intlayer - ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ React, ΡΡΡΠΎΠ³Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ TS, ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ, tree-shaking, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ/CMS ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΠ. Π Π°Π±ΠΎΡΠ°Π΅Ρ Ρ React Router, Vite, CRA ΠΈ Π΄Ρ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΎΡΠΊΡΠ΄Π° Π²Π·ΡΠ»ΠΈΡΡ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΠΈΡΡΠΎΡΠΈΡ i18n Π² JavaScript.
ΠΠ°ΡΡΠΈΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ (ΡΠΎΠΊΡΡ Π½Π° React)
ΠΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
| ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ | react-intlayer (Intlayer) | react-i18next (i18next) | react-intl (FormatJS) |
|---|---|---|---|
| ΠΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ | β ΠΠ°, ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ | β ΠΠ΅Ρ | β ΠΠ΅Ρ |
| ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ TypeScript | β ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠ°Ρ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΡΠΎΠ³ΠΈΠ΅ ΡΠΈΠΏΡ | β οΈ ΠΠ°Π·ΠΎΠ²Π°Ρ; Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ | β Π₯ΠΎΡΠΎΡΠ°Ρ, Π½ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΡΡΡΠΎΠ³Π°Ρ |
| ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² | β ΠΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ TypeScript ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ/ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ | β οΈ Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΡΡΠΎΠΊΠΈ Π·Π°ΠΌΠ΅Π½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ | β οΈ Π‘ΡΡΠΎΠΊΠΈ Π·Π°ΠΌΠ΅Π½Ρ |
| Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ (JSX/Markdown/ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ) | β ΠΡΡΠΌΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° | β οΈ ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ / ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ | β οΈ Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ICU, Π½Π΅ Π½Π°ΡΡΠΎΡΡΠΈΠΉ JSX |
| ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΠ | β ΠΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² ΠΠ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ API-ΠΊΠ»ΡΡΠ°ΠΌΠΈ. Π£ΡΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° | β ΠΠ΅Ρ | β ΠΠ΅Ρ |
| ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ | β ΠΠ°, Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ + ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ CMS; ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ½Π΅ΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ; Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ | β ΠΠ΅Ρ / Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ΅ΡΠ΅Π· Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ | β ΠΠ΅Ρ / Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ΅ΡΠ΅Π· Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ |
| ΠΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ | β ΠΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΡΠΈ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ (ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Next.js ΠΈ Vite) | β οΈ ΠΠ΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, next-i18next) ΠΈΠ»ΠΈ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΡΡΠ΅ΡΠ° | β ΠΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠ½ΠΎΠΉ |
| ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΌΠ°ΡΡΡΡΡΠΎΠ² | β ΠΠ° | β οΈ ΠΠ»Π°Π³ΠΈΠ½/ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ»ΠΈ ΡΡΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° | β ΠΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ |
| ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ | β Π¨Π°Π±Π»ΠΎΠ½Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΉ | β ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ (ΠΏΠ»Π°Π³ΠΈΠ½Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ i18next-icu) | β (ICU) |
| Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π΄Π°ΡΡ, ΡΠΈΡΠ»Π°, Π²Π°Π»ΡΡΡ) | β ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡΠ΅ΡΡ (Intl ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ) | β οΈ Π§Π΅ΡΠ΅Π· ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΈΠ»ΠΈ ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Intl | β Π€ΠΎΡΠΌΠ°ΡΡΠ΅ΡΡ ICU |
| Π€ΠΎΡΠΌΠ°Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° | β .tsx, .ts, .js, .json, .md, .txt, (.yaml Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅) | β οΈ .json | β .json, .js |
| ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ICU | β οΈ Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ | β οΈ Π§Π΅ΡΠ΅Π· ΠΏΠ»Π°Π³ΠΈΠ½ (i18next-icu) | β ΠΠ° |
| SEO ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΈ (hreflang, sitemap) | β ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ: ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΈ Π΄Π»Ρ sitemap, robots.txt, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ | β οΈ ΠΠ»Π°Π³ΠΈΠ½Ρ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°/ΡΡΡΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ | β ΠΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΄ΡΠΎΠΌ |
| ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° / Π‘ΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ | β οΈ ΠΠ΅Π½ΡΡΠ΅, Π½ΠΎ Π±ΡΡΡΡΠΎ ΡΠ°ΡΡΠ΅Ρ ΠΈ Π°ΠΊΡΠΈΠ²Π½Π° | β Π‘Π°ΠΌΠ°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΈ Π·ΡΠ΅Π»Π°Ρ | β ΠΠΎΠ»ΡΡΠΎΠ΅ |
| Π‘Π΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ | β ΠΠ°, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ SSR / React Server Components | β οΈ ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΡΡΠ°Π½ΠΈΡΡ, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ t-ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π΄Π΅ΡΠ΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² | β ΠΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ t-ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π΄Π΅ΡΠ΅Π²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² |
| Tree-shaking (Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°) | β ΠΠ°, Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ»Π°Π³ΠΈΠ½Ρ Babel/SWC | β οΈ ΠΠ±ΡΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π²ΡΡ (ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΡΠ½/ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°) | β οΈ ΠΠ±ΡΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π²ΡΡ |
| ΠΡΠ»ΠΎΠΆΠ΅Π½Π½Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° | β ΠΠ°, ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΡΠΌ / ΠΏΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌ | β ΠΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΡΠΊΠ΅Π½Π΄Ρ/Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΡ ΠΏΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ) | β ΠΠ° (ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π»ΠΎΠΊΠ°Π»Π΅ΠΉ) |
| Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° | β ΠΠ°, ΠΏΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ | β ΠΠ΅Ρ, ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· ΡΡΡΠ½ΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠ°ΠΌ | β ΠΠ΅Ρ, Π²ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΠΏΠ°ΠΊΠ΅Ρ |
| Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΡΡΠΏΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌΠΈ | β ΠΠΎΠΎΡΡΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½-ΡΠΈΡΡΠ΅ΠΌ | β οΈ Π’ΡΠ΅Π±ΡΠ΅Ρ Ρ ΠΎΡΠΎΡΠ΅ΠΉ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ Π² ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ | β οΈ Π¦Π΅Π½ΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ |
ΠΠ»ΡΠ±ΠΎΠΊΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
1) ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ
- react-intl / react-i18next: ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ ΠΏΠΎ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠ°ΠΌ (i18next). Π₯ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°ΠΏΠ°Ρ , Π½ΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΠ±ΡΠ΅ΠΉ Π·ΠΎΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
- Intlayer: ΠΡΠΎΠ΄Π²ΠΈΠ³Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ), ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠΌ Ρ UI, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ. ΠΡΠΎ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΡΠ½ΠΎΡΡΡ Π²Π»Π°Π΄Π΅Π½ΠΈΡ, ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅/ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. ΠΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π»Π΅Π³ΡΠ΅ Π²ΡΡΠ²ΠΈΡΡ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ: ΠΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ UI. ΠΠΎΠ»ΡΡΠΈΠ΅ React-ΠΊΠΎΠ΄ΠΎΠ²ΡΠ΅ Π±Π°Π·Ρ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΈΡΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΠΆΠΈΠ²ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ.
2) TypeScript ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ
- react-intl: ΠΠ°Π΄Π΅ΠΆΠ½ΡΠ΅ ΡΠΈΠΏΡ, Π½ΠΎ Π½Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ; Π²Ρ ΡΠ°ΠΌΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
- react-i18next: Π‘ΠΈΠ»ΡΠ½Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ Ρ ΡΠΊΠΎΠ²; ΡΡΡΠΎΠ³Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈΠ»ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ².
- Intlayer: ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠ³ΠΈΠ΅ ΡΠΈΠΏΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°. ΠΠ²ΡΠΎΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² IDE ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π»ΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ»ΡΡΠΈ Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ: ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π²Π»Π΅Π²ΠΎ (Π½Π° ΡΡΠ°ΠΏ ΡΠ±ΠΎΡΠΊΠΈ/CI) ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ ΠΈ ΡΡΠΊΠΎΡΡΠ΅Ρ ΡΠΈΠΊΠ» ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
3) ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ²
- react-intl / react-i18next: ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π·Π°ΠΏΠ°ΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ). ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π»ΠΈΠ½ΡΠ΅ΡΡ/ΠΏΠ»Π°Π³ΠΈΠ½Ρ, Π½ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΠΉ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅Ρ.
- Intlayer: ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π»ΠΎΠΊΠ°Π»Π΅ΠΉ/ΠΊΠ»ΡΡΠ΅ΠΉ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ: Π‘Π±ΠΎΠΉ CI ΠΈΠ·-Π·Π° ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΡΠΎΠΊ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Β«Π·Π°Π³Π°Π΄ΠΎΡΠ½ΠΎΠ³ΠΎ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎΒ» Π² Π½Π΅Π°Π½Π³Π»ΠΎΡΠ·ΡΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ .
4) ΠΠΎΠ³Π°ΡΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
- react-intl: ΠΡΠ»ΠΈΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ICU Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, Π²ΡΠ±ΠΎΡΠΎΠ², Π΄Π°Ρ/ΡΠΈΡΠ΅Π» ΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ JSX, Π½ΠΎ ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
- react-i18next: ΠΠΈΠ±ΠΊΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ ΠΈ
<Trans>Π΄Π»Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²/ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²; ICU Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ΅ΡΠ΅Π· ΠΏΠ»Π°Π³ΠΈΠ½. - Intlayer: Π€Π°ΠΉΠ»Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΌΠΎΠ³ΡΡ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π±ΠΎΠ³Π°ΡΡΠ΅ ΡΠ·Π»Ρ (JSX/Markdown/ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ) ΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅. Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Intl ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ; ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΡΠ³ΠΎΠ½ΠΎΠΌΠΈΡΠ½Ρ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ: Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ UI (ΡΡΡΠ»ΠΊΠΈ, Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ) ΠΏΡΠΎΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΈΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ React-ΡΠ·Π»Ρ.
5) ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ
- react-intl / react-i18next: ΠΠ±ΡΡΠ½ΠΎ Π²Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² ΠΈ Π»Π΅Π½ΠΈΠ²ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ (ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΡΠ½/Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ). ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ.
- Intlayer: ΠΡΠΏΠΎΠ»Π½ΡΠ΅Ρ tree-shaking Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π»Π΅Π½ΠΈΠ²ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΏΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ: ΠΠ΅Π½ΡΡΠΈΠ΅ Π±Π°Π½Π΄Π»Ρ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΡΠΎΠΊ ΡΠ»ΡΡΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ.
ΠΡΠ°ΡΠΈΠΊ Π½ΠΈΠΆΠ΅ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΡΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π΄Π»Ρ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡ 1 Π΄ΠΎ 10 ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΠΎΡ 1 Π΄ΠΎ 10 ΡΠ·ΡΠΊΠΎΠ², ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΏΠΎ 30 ΠΠ ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΠΈ ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΎΡΡ ΡΠ·ΡΠΊΠΎΠ², ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΡΡΡΠΎΠΌ ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΎΡΡ ΡΡΡΠ°Π½ΠΈΡ, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΎΠ±ΡΡΠΌ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ.

Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠ° Π½Π° React (TanStack Start / Vite)
ΠΠ°Π½Π½ΡΠ΅ ΠΈΠ· Benchmark Bloom, ΠΈΠ·ΠΌΠ΅ΡΡΡΡΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ React Π½Π° TanStack Start:
ΠΠ΅ΡΡΠΈΠΊΠ°
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° JSON
ΠΠ΅Π½ΠΈΠ²Π°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ JSON (ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½)
ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ
Π§ΡΠΎ ΡΡΠΎ Π·Π° ΠΌΠ΅ΡΡΠΈΠΊΠ°?
ΠΠ±ΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΊΠ΅ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ gzip. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅Ρ ΠΈ Π»ΠΎΠ³ΠΈΠΊΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΏΠΎΡΠ»Π΅ tree-shaking ΠΈ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ?
ΠΠ΅Π½ΡΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ JavaScript, ΡΡΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅.
ΠΠΈΠ΄
ΠΡΠΊΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π² ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π΄Π»Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΅Ρ Π΄Π°Π½Π½ΡΡ
| Library | Strategy | Lib size (gz) | Page JS avg (gz) | Locale leak | Page leak | Component avg (gz) | E2E reactivity | Hydration |
|---|---|---|---|---|---|---|---|---|
| base (no i18n) | - | 0.0 KB | 111.0 KB | 0.0% | 0.0% | 0.7 KB | 8.1 ms | 21.6 ms |
react-i18next | dynamic | 18.4 KB | 136.4 KB | 23.1% | 89.8% | 24.8 KB | 123.1 ms | 32.9 ms |
intlayer | dynamic | 5.0 KB | 118.6 KB | 0.0% | 0.0% | 6.3 KB | 3.6 ms | 14.1 ms |
ΠΠΎΠ»Π½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π² ΠΎΡΡΡΡΠ΅ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠ° TanStack Start ΠΈ Π² ΠΎΠ±Π·ΠΎΡΠ΅ i18n-Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ².
6) DX, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅
- react-intl / react-i18next: Π¨ΠΈΡΠΎΠΊΠ°Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π°; Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°Π±ΠΎΡΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
- Intlayer: ΠΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΌ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠΌ ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ CMS (Ρ ΡΠ°Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π² Git ΠΈΠ»ΠΈ Π²ΡΠ½ΠΎΡΠΈΡΠ΅ Π΅Π³ΠΎ). Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ VSCode Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΠ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ: ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠΎΠΊΡΠ°ΡΠ°ΡΡ ΡΠΈΠΊΠ» Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΈ Π°Π²ΡΠΎΡΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° - ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΌΠ΅Π½ΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ².
ΠΠΎΠ³Π΄Π° ΡΡΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ?
- ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ react-intl, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ICU-ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΠΏΡΠΎΡΡΡΠΌ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ API, ΠΈ Π²Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π³ΠΎΡΠΎΠ²Π° Π²ΡΡΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
- ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ react-i18next, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΠΈΡΠΎΠΊΠ°Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° i18next (Π΄Π΅ΡΠ΅ΠΊΡΠΎΡΡ, Π±ΡΠΊΠ΅Π½Π΄Ρ, ΠΏΠ»Π°Π³ΠΈΠ½ ICU, ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ) ΠΈ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΊ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ°Π΄ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ.
- ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ Intlayer, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΡΡΡΠΎΠ³ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ TypeScript, Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, tree-shaking ΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ - ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ , ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ react-intl ΠΈ react-i18next
intlayer ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π°ΡΠΈΠΌΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°ΠΌΠΈ ΠΈΠΌΠ΅Π½ react-intl ΠΈ react-i18next.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ intlayer, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ Π²Π°ΡΠ΅ΠΉ Π»ΡΠ±ΠΈΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ i18n, ΠΈ intlayer Π±ΡΠ΄Π΅Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π² Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ Π²Π°ΠΌΠΈ ΠΌΠ΅ΡΡΠ΅ (ΠΏΡΠΈΠΌΠ΅Ρ: /messages/{{locale}}/{{namespace}}.json).
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΈ
ΠΡΡΡΡΡ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ²:
ΠΠ²ΡΠ·Π΄Ρ GitHub
ΠΠ²ΡΠ·Π΄Ρ Π½Π° GitHub ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΠ»ΡΠ½ΡΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΄ΠΎΠ²Π΅ΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΠΈ Π΅Π³ΠΎ Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΠΈ. Π₯ΠΎΡΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΡΠΌΠΎΠΉ ΠΌΠ΅ΡΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°, ΠΎΠ½ΠΈ ΠΎΡΡΠ°ΠΆΠ°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΡΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ, ΡΠ»Π΅Π΄ΡΡ Π·Π° Π΅Π³ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΠΈ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄ΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠ΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π·Π²ΡΠ·Π΄Ρ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΡΡΠ΅Π΄ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ² ΠΈ Π΄Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΡΡΠ΅ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²
ΠΠ²ΡΠ·Π΄Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ. ΠΠΎΠΌΠΌΠΈΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π±ΠΎΡΡ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Ρ Intlayer ΠΎΠΊΠΎΠ»ΠΎ 7 500 ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ²: Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌΡΡ
Π·Π΄Π΅ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π² 5 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Ρ next-intl ΠΈΠ»ΠΈ next-i18next.
- formatjs/formatjs
- i18next/react-i18next
- aymericzip/intlayer
ΠΠΎΠΌΠΌΠΈΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π²Π΅ΡΠΊΠ΅, ΠΈΡΡΠΎΡΠ½ΠΈΠΊ: GitHub API.
Intlayer ΡΡΠΎ ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΡΡΡ Π²Ρ ΠΎΠ΄ΡΡ Π²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ², CLI ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. Π‘ΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠΈΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, Π° Π½Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°.
ΠΠ°Π³ΡΡΠ·ΠΊΠΈ npm
- react-i18next
- react-intl
- react-intlayer
ΠΡΡΠΎΡΠ½ΠΈΠΊ: API Π·Π°Π³ΡΡΠ·ΠΎΠΊ ΡΠ΅Π΅ΡΡΡΠ° npm.
Π§ΠΈΡΠ»ΠΎ Π·Π°Π³ΡΡΠ·ΠΎΠΊ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π°Π΅Ρ ΡΠ°ΠΌΡΠ΅ ΡΡΠ°ΡΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π° Π½Π΅ Π»ΡΡΡΠΈΠ΅. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π²ΡΠΏΡΡΠ΅Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄, Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ±ΡΠ°Π» Π΅Ρ ΡΠΎΠ³Π΄Π°, ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°ΠΏΡΡΠΊ CI ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π·Π°Π²ΠΈΡΡΡΠΈΠΉ ΠΎΡ Π½Π΅Ρ ΠΏΠ°ΠΊΠ΅Ρ. ΠΡΠ° ΡΠΈΡΡΠ° ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ ΠΈΠ½Π΅ΡΡΠΈΡ, Π° Π½Π΅ ΠΎΡΠΎΠ·Π½Π°Π½Π½ΡΠΉ Π²ΡΠ±ΠΎΡ.
ΠΠ-Π°ΡΡΠΈΡΡΠ΅Π½ΡΡ ΡΡΠΈΠ»ΠΈΠ²Π°ΡΡ ΡΡΠΎΡ ΡΡΡΠ΅ΠΊΡ. next-intl, i18next ΠΈ vue-i18n ΠΏΠΎΠ²ΡΡΠ΄Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ΄Π΅, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠ°Π»ΠΈΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π°ΡΡΠΈΡΡΠ΅Π½ΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΈΡ
ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½Π΅ ΡΡΠ°Π²Π½ΠΈΠ²Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ. ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ. Π‘ΡΠ°Π²Π½ΠΈΠ²Π°ΠΉΡΠ΅ ΠΏΠΎ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΡ, Π° Π½Π΅ ΠΏΠΎ ΡΠΈΡΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΎΠΊ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ΅ ΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΡΡΡ React. ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ - ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌΡ:
- Π‘ Intlayer ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ, ΡΡΡΠΎΠ³Π°Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ TS, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ±ΠΎΡΠΊΠΈ, tree-shaking Π±Π°Π½Π΄Π»ΠΎΠ² ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ, Π° Π½Π΅ ΡΡΡΠΈΠ½ΠΎΠΉ.
- ΠΡΠ»ΠΈ Π²Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΡΡ , ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , Intlayer ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠ°ΠΌΡΠΉ ΠΏΠΎΠ»Π½ΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠΌ. Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ Β«ΠΠΎΡΠ΅ΠΌΡ Intlayer?Β».
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΠΎΠΊΠ° Π½Π΅Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². ΠΡΠ΄ΡΡΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌ, ΠΊΡΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΌΡΡΠ»ΡΠΌΠΈ.
