RadarTrek
Home/Courses/i18n for Builders
๐ŸŒIntermediate8 lessons ยท 3 free

i18n for Builders

Internationalisation is more than translation. This course teaches you to set up next-intl in Next.js App Router, handle locale routing, format dates and currencies by locale, manage plural forms, support RTL languages, and build a translation workflow that scales beyond your first two languages.

Next.js App Router knowledge required
Start free (3 free lessons)
$39one-time ยท lifetime access

What you'll learn

โœ“The difference between internationalisation (i18n) and localisation (l10n)
โœ“Setting up next-intl in Next.js App Router with locale routing
โœ“Managing translation files: JSON structure and namespace patterns
โœ“Formatting dates, numbers, and currencies correctly per locale
โœ“Plural forms, ordinals, and ICU message syntax for complex strings
โœ“RTL language support: CSS logical properties and layout mirroring
โœ“Building a translation workflow with Crowdin or Lokalise
โœ“SEO for multilingual sites: hreflang, canonical, and sitemap

Course outline

Full course โ€” $39 one-time

04

Locale Routing and the Switcher

Dynamic locale segments and building a language switcher

10 min
05

Formatting Dates, Numbers, and Currencies

The Intl API and next-intl's format helpers

9 min
06

Pluralisation and Gender Forms

ICU plural rules and gendered translations

9 min
07

RTL Support โ€” Arabic and Hebrew

dir attribute, CSS logical properties, and layout mirroring

11 min
08

Translation Workflows at Scale

Crowdin, Lokalise, and keeping translations in sync

10 min

Get the full course

All 8 lessons. Ship your app in multiple languages โ€” properly, not just translated strings.

โœ“ next-intlโœ“ Lifetime accessโœ“ Certificate
$39one-time

Written by the RadarTrek editorial team ยท Reviewed June 2026

About this course

Internationalisation โ€” abbreviated i18n because there are 18 letters between the i and the n โ€” is the process of preparing your application to support multiple languages and regional formats. The most visible layer is translation: replacing English strings with French, Arabic, or Japanese equivalents. But translation is the easy part. The harder parts are locale routing (each language at its own URL for SEO), date and number formatting (July 3 in the US vs 3. Juli in Germany vs ูฃ ูŠูˆู„ูŠูˆ in Arabic), plural forms (English has two, Arabic has six, Russian has three), right-to-left layout for Arabic and Hebrew, and managing the operational workflow of keeping translations in sync as your product evolves.

In the Next.js ecosystem, next-intl is the leading internationalisation library. It integrates with the App Router's file-based routing to create locale-prefixed URLs (/en/dashboard, /fr/dashboard, /ar/dashboard), provides typed message access with ICU syntax support, and includes format helpers for dates, numbers, and currencies. This course covers the complete next-intl setup: middleware for locale detection and routing, message organisation and namespaces, ICU plural and select syntax, the Intl API for formatting, RTL CSS layout considerations, and translation workflow tools like Crowdin that help you manage updates across languages as your product grows.

Frequently asked questions

What is next-intl and why is it the recommended choice for Next.js i18n?

next-intl is an internationalisation library built specifically for Next.js App Router. It handles locale-based routing through Next.js middleware, provides a typed useTranslations hook for accessing messages, supports ICU message format for complex pluralisation and interpolation, and includes number/date/currency formatters that respect the active locale. It works with both Server and Client Components and avoids the common pitfall of importing large translation files to the client. As of 2026, next-intl is the most widely used and actively maintained i18n solution for Next.js App Router projects.

How does locale routing work in Next.js with next-intl?

next-intl uses a Next.js middleware to detect the user's preferred locale from the Accept-Language header or a cookie, and then redirects or rewrites the URL to include the locale prefix (/en/dashboard, /fr/dashboard). Your app directory has a [locale] segment at the top level โ€” pages inside it use the locale parameter to load the correct messages. Each locale URL is treated as a separate page by search engines, enabling proper hreflang tags and locale-specific SEO.

What is ICU message format?

ICU (International Components for Unicode) is a standard syntax for expressing complex translation patterns that vary by variable values. The most common use case is pluralisation: in English, "1 item" vs "2 items" (two forms). In Arabic, there are six plural forms. ICU syntax lets you express all forms in a single message key: `{count, plural, one {# item} other {# items}}`. next-intl supports the full ICU spec including select for gender-aware translations (he/she/they variants) and number formatting within messages.

How do I handle RTL (right-to-left) languages like Arabic and Hebrew?

RTL support requires setting the HTML dir attribute to "rtl" for RTL locales, which flips the reading direction. The modern approach is to use CSS logical properties instead of directional properties: use margin-inline-start instead of margin-left, so the same CSS applies correctly in both LTR and RTL contexts. Some Tailwind v3+ utilities have logical property equivalents (ms- for margin-start). You also need to test your layout with Arabic text which is longer than English equivalents in many cases, and ensure icons with directional meaning (arrows, chevrons) are mirrored for RTL.

How do I manage translation updates as my product changes?

As your product evolves, you add new UI strings that need translating and sometimes change or remove existing ones. The process breaks down without tooling. Translation management platforms like Crowdin, Lokalise, and Phrase integrate with your repository โ€” you push English source strings, translators work in a web UI, and translations are merged back as pull requests. They also flag missing translations, track translation progress by language, and provide machine translation suggestions for initial drafts. For small teams, starting with JSON files in the repo and using Crowdin once you have more than two languages is a common approach.

RadarTrek Intel โ€” monthly score updates

We track 40+ tools so you don't have to. Score changes, new tools, and new guides โ€” once a month, no spam.