BlogΠΠΎΠΈΡΠΊ Π² Π±Π»ΠΎΠ³Π΅ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠ£ΡΡΠ°ΡΠ΅Π» Π»ΠΈ next-intl Π² 2026 Π³ΠΎΠ΄Ρ?next-intl ΡΡΠ°Π» ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Next.js App Router. ΠΠΎ ΠΎΠ½ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ²Π΅ΡΡ Π΅Π΄ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌ Π±Π°Π½Π΄Π»Π΅ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ½ΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠΎΠ².Aymeric PINEAUΠ£ΡΡΠ°ΡΠ΅Π» Π»ΠΈ i18next Π² 2026 Π³ΠΎΠ΄Ρ?i18next ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°Ρ ΡΠ°ΠΉΡΠΎΠ², Π½ΠΎ Π΅Π³ΠΎ runtime-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° 2011 Π³ΠΎΠ΄Π° ΡΡΡΠ°ΡΠ΅Π²Π°Π΅Ρ. ΠΠ½Π°Π»ΠΈΠ· ΡΠ°Π·Π΄ΡΠ²Π°Π½ΠΈΡ Π±Π°Π½Π΄Π»Π°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ tree-shaking ΠΈ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΡ ΠΈΠ½Π½ΠΎΠ²Π°ΡΠΈΠΉ.Aymeric PINEAUΠ£ΡΡΠ°ΡΠ΅Π» Π»ΠΈ vue-i18n Π² 2026 Π³ΠΎΠ΄Ρ?vue-i18n Π±ΡΠ» ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π»Ρ Vue ΠΈ Nuxt ΡΠ΅Π»ΠΎΠ΅ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π² Π½Π°ΡΠΈΡ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠ°Ρ ΠΎΠ½ ΠΎΠΊΠ°Π·Π°Π»ΡΡ ΡΠ°ΠΌΡΠΌ ΡΡΠΆΠ΅Π»ΡΠΌ runtime i18n Π² Π²Π΅Π±Π΅. Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΏΡΠΈΡΠΈΠ½Ρ.Aymeric PINEAUNext.js i18n - what the App Router makes you buildThe App Router dropped built-in i18n routing. What you now write yourself, why Server and Client Components split the problem, and how libraries compare.Aymeric PINEAUΠΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΡΡΡΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (i18n) Π΄Π»Ρ Angular - ΠΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Best Angular i18n Libraries 2026 β Compared by DX & BundleΠΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±Π°Π½Π΄Π»Π°, SEO, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ & ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΠΈ. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ Angular ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΡΠΌ Π² 2026, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ LLM, Agent Skills & MCP.Aymeric PINEAUICU Message Format: Syntax, Plurals and SelectA practical reference to ICU MessageFormat - argument interpolation, plural and select branching, CLDR plural categories per language, and the usual mistakes.Aymeric PINEAUΠΠ°ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ JSON-ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ react-i18next Ρ ΠΏΠΎΠΌΠΎΡΡΡ IntlayerΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π²Π°ΡΠΈ JSON-ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Intlayer ΠΈ react-i18next Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .Aymeric PINEAUi18n Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΡΠΎΡΠΈΠ² ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ: Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ IntlayerΠΠ»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ³ΡΡΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² React, ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, ΠΏΠΎ-ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ², ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Intlayer.Aymeric PINEAUSolid i18n: why translations freeze on locale changeWhy Solid components capture translations as constants, how @solid-primitives/i18n works, lazy catalogs, SolidStart locale routing, and what Intlayer changes.Aymeric PINEAUΠ€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Ρ ΠΈ ΡΠΈΡΠ΅Π» ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΡΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ IntlΠΠ°ΠΌ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π½Π΅ Π½ΡΠΆΠ½Π° ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΊ Intl ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π΄Π°ΡΠ°ΠΌΠΈ, ΡΠΈΡΠ»Π°ΠΌΠΈ, Π²Π°Π»ΡΡΠ°ΠΌΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ, ΡΠ΅Π½Π° ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π±Π°Π³ Ρ ΡΠ°ΡΠΎΠ²ΡΠΌ ΠΏΠΎΡΡΠΎΠΌ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅.Aymeric PINEAUΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΎΡΠΈΠ² Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ i18nΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ Β«ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΎΠΉΒ» ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΡΠ²Π½ΡΠΌ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠ²Π½ΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ.Aymeric PINEAUΠΠ°ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ JSON-ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ react-intl Ρ ΠΏΠΎΠΌΠΎΡΡΡ IntlayerΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π²Π°ΡΠΈ JSON-ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Intlayer ΠΈ react-intl Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½Π½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² React-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .Aymeric PINEAUSvelteKit i18n: routing, SSR, and shared stateSvelteKit ships no i18n. How to wire locale routing with an optional param or the reroute hook, and why a module-level locale store leaks between SSR requests.Aymeric PINEAUΠ£ΡΡΠ°ΡΠ΅Π» Π»ΠΈ next-intl Π² 2026 Π³ΠΎΠ΄Ρ?next-intl ΡΡΠ°Π» ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Next.js App Router. ΠΠΎ ΠΎΠ½ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ²Π΅ΡΡ Π΅Π΄ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΌ Π±Π°Π½Π΄Π»Π΅ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ½ΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΉΠΌΡΠΏΠ΅ΠΉΡΠΎΠ².Aymeric PINEAUΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ L10nΠΠ°ΠΉΠ΄ΠΈΡΠ΅ Π»ΡΡΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ L10n-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π΄Π»Ρ Π²Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉAymeric PINEAUHreflang, ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΠΎΠΉ SEOΠ§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ hreflang, ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠΈΡΠΊΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΡΠ΅ΠΌΡ x-default ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ, ΠΈ ΠΊΠ°ΠΊ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈ Π² Next.js ΠΈ TanStack Start.Aymeric PINEAU