Angular i18n: Better Internationalization and Translation Guide (2026)
One warning about scope: full human translation and machine translation sit at opposite ends of that budget, and the middle path — machine-translate, then review — only works if the review is real. Machine output on ICU plurals is frequently wrong in exactly the languages that need the plural branches most, and the glossary that keeps your product’s nouns consistent does not exist until someone writes it. Whatever the pipeline, keep one canonical term list per locale inside the Angular i18n workflow, so “workspace” is the same word in the navigation, the settings page and the error message.
Angular i18n Overview
Message Extraction and XLF Files
Hello, {fullName}!
Translation Management Workflow
Run ng extract-i18n --configuration production to generate the base XLF file.
Send the XLF file to the translation service or team.
Receive translated XLF files and place them in the src/locale directory.
Build for each locale: ng build --configuration production --localize=fr, ng build --configuration production --localize=es, etc.
Deploy each locale to its URL prefix: /fr/, /es/, etc.
Verify hreflang annotations are present in each locale’s HTML.
ICU Plural and Gender Syntax
{count, plural, =1 {one item} other {{count} items}}
Quick answer: Angular i18n extracts strings to XLF at build time, builds per-locale bundles under language prefixes, and generates crawlable URLs with hreflang. Runtime switching requires Transloco or ngx-translate. ICU syntax handles plural and gender rules per language.