Problems developers face when localizing Angular apps—and how IntlPull helps.
Separate build for each locale. Build times multiply. Deployment complexity increases.
Can't switch locale without page reload. Each locale is a separate app.
XLIFF is verbose XML. Not developer-friendly for manual editing. Need proper tooling.
Why @angular/localize is a great choice for Angular localization.
Translations compiled into build. Zero runtime overhead. One build per locale.
vs runtime loading
Full ICU syntax support. Complex plurals, selects, and rich formatting.
vs basic interpolation
ng extract-i18n generates XLIFF/XMB. ng build with localize flag creates locale bundles.
vs manual extraction
i18n attribute on elements. i18n-title, i18n-placeholder for attribute translation.
vs text-only solutions
DatePipe, CurrencyPipe, DecimalPipe are locale-aware out of the box.
vs external formatters
XLIFF format support. Translation agency workflows. Auditable extraction.
vs casual i18n
Get @angular/localize running in your Angular project.
Install the Angular localize package.
ng add @angular/localizeUse i18n attribute on template elements.
<h1 i18n="@@welcomeHeader">Welcome to our application</h1>
<p i18n="@@welcomeDesc">This is the welcome page description.</p>
<!-- With meaning and description -->
<button i18n="submit button|Button to submit the form@@submitBtn">
Submit
</button>
<!-- ICU plural -->
<p i18n="@@itemCount">
{count, plural,
=0 {No items}
=1 {One item}
other {{{count}} items}
}
</p>Generate translation source file.
ng extract-i18n --output-path src/locale --format xlfSet up locale builds in angular.json.
{
"projects": {
"your-app": {
"i18n": {
"sourceLocale": "en",
"locales": {
"es": "src/locale/messages.es.xlf",
"fr": "src/locale/messages.fr.xlf"
}
},
"architect": {
"build": {
"options": {
"localize": true
}
}
}
}
}
}Generate builds for all locales.
ng build --localizeConnect IntlPull to manage translations professionally.
Add the CLI for translation management.
npm install -D @intlpull/cliUpload extracted XLIFF to IntlPull.
npx intlpull push --source ./src/locale/messages.xlf --format xliffDownload translated XLIFF files.
npx intlpull pull --format xliff --output ./src/localeAdd translation sync to your pipeline.
# .github/workflows/build.yml
jobs:
build:
steps:
- run: ng extract-i18n --output-path src/locale
- run: npx intlpull push --source ./src/locale/messages.xlf --format xliff
- run: npx intlpull pull --format xliff --output ./src/locale
- run: ng build --localizeComplete guide to React localization with react-i18next. Setup, lazy loading, namespaces, SSR, and IntlPull integration for production i18n.
Complete guide to Vue 3 localization with vue-i18n. Composition API, lazy loading, and IntlPull integration for production i18n.