BlogSearch in blogLast PostsWhy ICU MessageFormat Is Not Made for JavaScriptICU MessageFormat was built for Java and C++. In the browser, full support ships about 10 KB of parser code. Where that cost comes from, and the alternatives.Aymeric PINEAUNext.js 16 i18n with Lingui: App Router Setup GuideSet up Lingui in the Next.js 16 App Router: Server Components, SWC macros, proxy routing, metadata, hreflang, sitemap and robots.txt, with benchmark data.Aymeric PINEAUTanStack Start i18n with use-intl: Complete 2026 Setup GuideTranslate your TanStack Start app with use-intl: locale routing, typed messages, SSR, hreflang, sitemap and robots.txt, plus real bundle-size benchmark data.Aymeric PINEAUTanStack Start i18n with Paraglide JS: 2026 Setup GuideTranslate your TanStack Start app with Paraglide JS: URL strategy, router rewrite, SSR middleware, hreflang, sitemap and robots.txt, plus real benchmark data.Aymeric PINEAURelated PostsMake an Existing Next.js App MultilingualAdd i18n to an existing Next.js app without rewriting it: extract hardcoded strings automatically, translate them with AI and set up localized routing.Aymeric PINEAUTanStack Start i18n with use-intl: Complete 2026 Setup GuideTranslate your TanStack Start app with use-intl: locale routing, typed messages, SSR, hreflang, sitemap and robots.txt, plus real bundle-size benchmark data.Aymeric PINEAUPer-Component vs Centralized i18n in ReactA deep dive into internationalization strategies in React, comparing centralized, per-key, and per-component approaches, and introducing Intlayer.Aymeric PINEAUTanStack Start i18n with Lingui: Complete 2026 Setup GuideTranslate your TanStack Start app with Lingui: macros, PO catalogs, SSR, locale routing, hreflang, sitemap and robots.txt, plus real bundle-size benchmark data.Aymeric PINEAUMake an Existing Vite + React App MultilingualAdd i18n to an existing Vite and React app without rewriting it: extract hardcoded strings automatically, translate them with AI and keep bundles small.Aymeric PINEAUBuilding a RAG Documentation AssistantHow we built an AI assistant for our docs: chunking markdown, generating embeddings, vector search and prompting, with the trade-offs we hit along the way.Aymeric PINEAUTanStack Start i18n with Paraglide JS: 2026 Setup GuideTranslate your TanStack Start app with Paraglide JS: URL strategy, router rewrite, SSR middleware, hreflang, sitemap and robots.txt, plus real benchmark data.Aymeric PINEAUIntlayer and next-i18nextIntegrate Intlayer with next-i18next for a comprehensive Next.js internationalization solutionAymeric PINEAUHow to pick the right React i18n library in 2026A decision guide for React i18n: the questions to answer before comparing react-i18next, react-intl, Lingui, use-intl, Paraglide and Intlayer.Aymeric PINEAUIs vue-i18n Outdated in 2026?vue-i18n has been the standard for Vue and Nuxt apps for a decade. But in our benchmarks, it proved to be the heaviest i18n runtime on the web. Here is why.Aymeric PINEAUnext-intl vs @intlayer/next-intl: Same API, Different BundleA Next.js app keeps its next-intl imports, served by the @intlayer/next-intl adapter. Bundle size, leakage, component size and hydration measured.Aymeric PINEAUHow to find missing translations before your users doMissing translations fail silently. Why fallback hides them, the four detection layers that actually work, and how to fail a build on an untranslated key.Aymeric PINEAU