intlayer-angular
Intlayer Angular Usage
Core Philosophy
Intlayer promotes Component-Level Content Declaration. Instead of a massive global translation file, content is declared in *.content.ts files adjacent to the Angular components that use them.
Workflow
To create a translated component, you need two files:
- Declaration: A content file (e.g.,
my-component.content.ts) defining the dictionary. - Implementation: An Angular component (e.g.,
my-component.component.ts) using theuseIntlayersignal.
1. Declare Content
Create a content file using t() for translations.
File: src/app/my-component/my-component.content.ts
import { t, type Dictionary } from "intlayer";
const content = {
// The 'key' must be unique and matches what you pass to useIntlayer()
key: "my-component",
content: {
text: t({
en: "Welcome",
fr: "Bienvenue",
es: "Hola",
}),
},
} satisfies Dictionary;
export default content;
Setup
Intlayer Provider
To use Intlayer in your Angular application, you need to add the provideIntlayer provider to your application configuration.
import { ApplicationConfig } from "@angular/core";
import { provideIntlayer } from "angular-intlayer";
export const appConfig: ApplicationConfig = {
providers: [provideIntlayer()],
};
useIntlayer Hook
In Angular, useIntlayer returns a Signal. You must call it as a function to access the value.
import { Component } from "@angular/core";
import { useIntlayer } from "angular-intlayer";
@Component({
selector: "app-my-component",
standalone: true,
template: `
<div>
<h1>
{{ content().text }}
</h1>
<img [src]="content().text.value" [alt]="content().text.value" />
</div>
`,
})
export class MyComponent {
content = useIntlayer("my-component");
}
Change language
To change the language, use the setLocale function from the useLocale hook.
import { Component } from "@angular/core";
import { useLocale } from "angular-intlayer";
import { Locales } from "intlayer";
@Component({
selector: "app-locale-switcher",
standalone: true,
template: `
<button (click)="setLocale(Locales.FRENCH)">
Change Language to French
</button>
`,
})
export class LocaleSwitcherComponent {
Locales = Locales;
private localeCtx = useLocale();
setLocale = this.localeCtx.setLocale;
}
Localized Link component
Ensure your application's navigation respects the current locale by using a localized link. You can create a component or use a helper.
import { Component, Input } from "@angular/core";
import { RouterModule } from "@angular/router";
import { useLocale } from "angular-intlayer";
import { getLocalizedUrl } from "intlayer";
@Component({
selector: "app-link",
standalone: true,
imports: [RouterModule],
template: `
<a [routerLink]="localizedHref()" [replaceUrl]="false">
<ng-content></ng-content>
</a>
`,
})
export class LinkComponent {
@Input() href: string = "";
private localeCtx = useLocale();
locale = this.localeCtx.locale;
localizedHref() {
return this.href.startsWith("http")
? this.href
: getLocalizedUrl(this.href, this.locale());
}
}
References
More from aymericzip/intlayer-skills
intlayer-react
Integrates Intlayer internationalization with React component. Use when the user asks to "setup React i18n", create a new translated component, use the "useIntlayer" hook, or configure providers.
25intlayer-config
Configures Intlayer project settings and environment variables. Use when the user asks to "setup intlayer.config", "configure locales", or "customize Intlayer settings".
22intlayer-content
Define rich content structures using Intlayer content nodes. Use when the user asks to "create translations", "handle pluralization", "use markdown in content", or implement "conditional content".
22intlayer-usage
Provides general guidelines for using Intlayer in any project. Use when the user asks to "get started with Intlayer", "declare content files", or understand the "project structure" for internationalization.
19intlayer-cli
Manages Intlayer dictionaries and configuration via the Command Line Interface. Use when the user asks to "audit translations", "build dictionaries", "sync content", or run "intlayer" commands.
17intlayer-compiler
Intlayer Compiler setup and usage. Configures automatic content extraction for your components without the need to define .content files manually.
16