Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
oguzhan18 avatar

Angular I18n

  • 188 installs
  • 6 repo stars
  • Updated April 4, 2026
  • oguzhan18/angular-ecosystem-skills

Adding locales, translating templates, managing ICU messages, runtime or build-time i18n, and RTL layouts for multi-market Angular applications.

About

Walks through Angular internationalization setup from marking translatable strings through locale builds, ICU formatting, and QA practices for multilingual SaaS and mobile web experiences.

  • $localize and extract/merge workflow
  • ICU plural and select messages
  • Locale-aware routing and dates
  • RTL and typography considerations
  • CI checks for missing translations

Angular I18n by the numbers

  • 188 all-time installs (skills.sh)
  • +2 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #875 of 2,245 Frontend Development skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/oguzhan18/angular-ecosystem-skills --skill angular-i18n

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs188
repo stars6
Last updatedApril 4, 2026
Repositoryoguzhan18/angular-ecosystem-skills

What it does

Adding locales, translating templates, managing ICU messages, runtime or build-time i18n, and RTL layouts for multi-market Angular applications.

Files

SKILL.mdMarkdownGitHub ↗

Angular i18n

Version: Angular 21 (2025) Tags: i18n, Internationalization, Localization, Translations

References: i18n GuideAngular Localize

API Changes

This section documents recent version-specific API changes.

  • NEW: @angular/localize — Built-in i18n support
  • NEW: $localize — Message extraction
  • NEW: Angular CLI i18n — Multiple language builds
  • NEW: Lazy-loaded translations — Runtime translation loading

Best Practices

  • Mark text for translation
@Component({
  template: `
    <h1 i18n="@@welcome">Welcome to our app!</h1>
    <p i18n="@@greeting">Hello, world!</p>
  `
})
export class HomeComponent {}
  • Use translations with placeholders
@Component({
  template: `
    <p i18n="@@userCount">
      There are { count, plural, =0 { no users } =1 { one user } other { {{ count }} users } } in the system.
    </p>
  `
})
export class UsersComponent {
  count = 5;
}
  • Use gender-specific translations
@Component({
  template: `
    <p i18n="@@message">
      { gender, select, male {He} female {She} other {They} } is attending.
    </p>
  `
})
export class MessageComponent {}
  • Extract messages
ng extract-i18n --output-path src/locale
  • Build for multiple locales
ng build --localize
  • Configure locales in angular.json
{
  "projects": {
    "my-app": {
      "i18n": {
        "locales": {
          "en": "src/locale/messages.en.xlf",
          "es": "src/locale/messages.es.xlf",
          "fr": "src/locale/messages.fr.xlf"
        }
      }
    }
  }
}
  • Use i18n attribute for elements
@Component({
  template: `
    <img i18n-title title="Logo" src="logo.png" />
    <a i18n-href href="/about" hreflang="es">About</a>
  `
})
export class HeaderComponent {}
  • Use @angular/localize for runtime translations
import { $localize } from '@angular/localize';

$localize`:@@greeting:Hello, ${name}:name:World!`;
  • Use ngx-translate for runtime translations
// Alternative: use @ngx-translate/core
import { TranslateModule } from '@ngx-translate/core';

@NgModule({
  imports: [TranslateModule.forRoot()]
})
export class AppModule {}
  • Lazy load translations
// Using @ngx-translate
this.translate.getTranslation('en').subscribe(translations => {
  // Load translations
});

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.