---
createdAt: 2025-04-18
updatedAt: 2026-05-06
title: Angular i18n - Как перевести приложение Angular 19 (Webpack)
description: Узнайте, как сделать ваш Angular-сайт многоязычным. Следуйте документации для интернационализации (i18n) и перевода.
keywords:
- Интернационализация
- Документация
- Intlayer
- Angular
- JavaScript
slugs:
- doc
- environment
- angular
- 19
applicationTemplate: https://github.com/aymericzip/intlayer-angular-19-template
applicationShowcase: https://intlayer-angular-19-template.vercel.app
history:
- version: 8.9.0
date: 2026-05-04
changes: "Обновление использования API useIntlayer в Solid для прямого доступа к свойствам"
- version: 8.0.0
date: 2025-12-30
changes: "Добавить команду init"
- version: 5.5.10
date: 2025-06-29
changes: "Инициализация истории"
---
# Переведите ваш Angular 19 (Webpack)-сайт с помощью Intlayer | Интернационализация (i18n)
## Содержание
## Что такое Intlayer?
**Intlayer**, это инновационная библиотека интернационализации (i18n) с открытым исходным кодом, разработанная для упрощения многоязычной поддержки в современных веб-приложениях.
С Intlayer вы можете:
- **Легко управлять переводами**, используя декларативные словари на уровне компонентов.
- **Динамически локализовать метаданные**, маршруты и контент.
- **Обеспечить поддержку TypeScript** с помощью автогенерыруемых типов, улучшая автодополнение и обнаружение ошибок.
- **Пользоваться расширенными функциями**, такими как динамическое определение и переключение локали.
---
## Пошаговое руководство по настройке Intlayer в приложении Angular
См. [Шаблон приложения](https://github.com/aymericzip/intlayer-angular-19-template) на GitHub.
### Шаг 1: Установка зависимостей
Установите необходимые пакеты с помощью npm:
```bash packageManager="npm"
npm install intlayer angular-intlayer
npm install @angular-builders/custom-webpack --save-dev
npx intlayer init
```
```bash packageManager="pnpm"
pnpm add intlayer angular-intlayer
pnpm add @angular-builders/custom-webpack --save-dev
pnpm intlayer init
```
```bash packageManager="yarn"
yarn add intlayer angular-intlayer
yarn add @angular-builders/custom-webpack --save-dev
yarn intlayer init
```
```bash packageManager="bun"
bun add intlayer angular-intlayer
bun add @angular-builders/custom-webpack --dev
bun x intlayer init
```
- **intlayer**
Основной пакет, предоставляющий инструменты интернационализации для управления конфигурацией, перевода, [декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md), транспиляции и [команд CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/cli/index.md).
- **angular-intlayer**
Пакет для интеграции Intlayer с приложением Angular. Он предоставляет провайдеры контекста и хуки для интернационализации Angular.
- **@angular-builders/custom-webpack**
Требуется для настройки конфигурации Webpack в Angular CLI.
### Шаг 2: Конфигурация вашего проекта
Создайте файл конфигурации для настройки языков вашего приложения:
```typescript fileName="intlayer.config.ts" codeFormat={["typescript", "esm", "commonjs"]}
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [
Locales.ENGLISH,
Locales.FRENCH,
Locales.SPANISH,
// Ваши другие локали
],
defaultLocale: Locales.ENGLISH,
},
};
export default config;
```
> Через этот файл конфигурации вы можете настроить локализованные URL, перенаправление middleware, имена файлов cookie, местоположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Полный список доступных параметров см. в [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/configuration.md).
### Шаг 3: Интеграция Intlayer в конфигурацию Angular
Чтобы интегрировать Intlayer с Angular CLI, вам необходимо использовать пользовательский билдер. Это руководство предполагает, что вы используете Webpack (стандарт для многих проектов Angular).
Сначала измените ваш `angular.json`, чтобы использовать пользовательский билдер Webpack. Обновите конфигурации `build` и `serve`:
```json5 fileName="angular.json"
{
"projects": {
"your-app-name": {
"architect": {
"build": {
"builder": "@angular-builders/custom-webpack:browser", // replace "@angular-devkit/build-angular:application",
"options": {
"customWebpackConfig": {
"path": "./webpack.config.ts",
"mergeStrategies": { "module.rules": "prepend" },
},
"main": "src/main.ts", // replace "browser": "src/main.ts",
// ...
},
},
"serve": {
"builder": "@angular-builders/custom-webpack:dev-server",
},
},
},
},
}
```
> Обязательно замените `your-app-name` на фактическое имя вашего проекта в `angular.json`.
Затем создайте файл `webpack.config.ts` в корне вашего проекта:
```typescript fileName="webpack.config.ts"
import { mergeConfig } from "angular-intlayer/webpack";
export default mergeConfig({});
```
> Функция `mergeConfig` настраивает Webpack с использованием Intlayer. Она внедряет `IntlayerPlugin` (для обработки файлов декларации контента) и настраивает псевдонимы для оптимальной производительности.
### Шаг 4: Декларирование контента
Создавайте и управляйте своими декларациями контента для хранения переводов:
```tsx fileName="src/app/app.content.ts" contentDeclarationFormat=["typescript", "esm", "cjs"]
import { t, type Dictionary } from "intlayer";
const appContent = {
key: "app",
content: {
title: t({
en: "Hello",
fr: "Bonjour",
es: "Hola",
ru: "Привет",
}),
congratulations: t({
en: "Congratulations! Your app is running. 🎉",
fr: "Félicitations! Votre application est en cours d'exécution. 🎉",
es: "¡Felicidades! Tu aplicación está en ejecución. 🎉",
ru: "Поздравляем! Ваше приложение работает. 🎉",
}),
exploreDocs: t({
en: "Explore the Docs",
fr: "Explorer les Docs",
es: "Explorar los Docs",
ru: "Изучить документацию",
}),
learnWithTutorials: t({
en: "Learn with Tutorials",
fr: "Apprendre avec les Tutoriels",
es: "Aprender con los Tutorios",
ru: "Учиться по туториалам",
}),
cliDocs: "CLI Docs",
angularLanguageService: t({
en: "Angular Language Service",
fr: "Service de Langage Angular",
es: "Servicio de Lenguaje Angular",
ru: "Языковая служба Angular",
}),
angularDevTools: "Angular DevTools",
github: "Github",
twitter: "Twitter",
youtube: "Youtube",
},
} satisfies Dictionary;
export default appContent;
```
> Ваши объявления контента могут быть определены в любом месте вашего приложения, если они включены в каталог `contentDir` (по умолчанию `./src`) и соответствуют расширению файла декларации контента (по умолчанию `.content.{json,ts,tsx,js,jsx,mjs,cjs}`).
> Подробности см. в [документации по декларации контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/dictionary/content_file.md).
### Шаг 5: Использование Intlayer в вашем коде
Чтобы использовать функции интернационализации Intlayer во всем приложении Angular, вам необходимо предоставить Intlayer в конфигурации вашего приложения.
```typescript fileName="src/app/app.config.ts"
import { ApplicationConfig } from "@angular/core";
import { provideRouter } from "@angular/router";
import { provideIntlayer } from "angular-intlayer";
import { routes } from "./app.routes";
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes),
provideIntlayer(), // Добавьте провайдер Intlayer здесь
],
};
```
Затем вы можете использовать функцию `useIntlayer` внутри любого компонента.
```typescript fileName="src/app/app.component.ts"
import { Component } from "@angular/core";
import { RouterOutlet } from "@angular/router";
import { useIntlayer } from "angular-intlayer";
@Component({
selector: "app-root",
standalone: true,
imports: [RouterOutlet],
templateUrl: "./app.component.html",
styleUrl: "./app.component.css",
})
export class AppComponent {
content = useIntlayer("app");
}
```
И в вашем шаблоне:
```html fileName="src/app/app.component.html"
{{ content().title }}
{{ content().congratulations }}
```
Контент Intlayer возвращается как `Signal`, поэтому вы получаете доступ к значениям, вызывая сигнал: `content().title`.
### (Необязательно) Шаг 6: Смена языка вашего контента
Чтобы изменить язык контента, вы можете использовать функцию `setLocale`, предоставляемую функцией `useLocale`. Это позволяет вам установить локаль приложения и соответствующим образом обновить контент.
Создайте компонент для переключения языков:
```typescript fileName="src/app/locale-switcher.component.ts"
import { Component } from "@angular/core";
import { CommonModule } from "@angular/common";
import { useLocale } from "angular-intlayer";
@Component({
selector: "app-locale-switcher",
standalone: true,
imports: [CommonModule],
template: `
`,
})
export class LocaleSwitcherComponent {
localeCtx = useLocale();
locale = this.localeCtx.locale;
availableLocales = this.localeCtx.availableLocales;
setLocale = this.localeCtx.setLocale;
}
```
Затем используйте этот компонент в `app.component.ts`:
```typescript fileName="src/app/app.component.ts"
import { Component } from "@angular/core";
import { RouterOutlet } from "@angular/router";
import { useIntlayer } from "angular-intlayer";
import { LocaleSwitcherComponent } from "./locale-switcher.component";
@Component({
selector: "app-root",
standalone: true,
imports: [RouterOutlet, LocaleSwitcherComponent],
templateUrl: "./app.component.html",
styleUrl: "./app.component.css",
})
export class AppComponent {
content = useIntlayer("app");
}
```
### Настройка TypeScript
Intlayer использует расширение модулей (module augmentation), чтобы использовать преимущества TypeScript и сделать вашу кодовую базу более надежной.


Убедитесь, что ваша конфигурация TypeScript включает автогенерируемые типы.
```json5 fileName="tsconfig.json"
{
// ... Ваши существующие конфигурации TypeScript
"include": [
// ... Ваши существующие конфигурации TypeScript
".intlayer/**/*.ts", // Включить автоматически сгенерированные типы
],
}
```
### Конфигурация Git
Рекомендуется игнорировать файлы, созданные Intlayer. Это позволит избежать их фиксации в вашем Git-репозитории.
Для этого вы можете добавить следующие инструкции в ваш файл `.gitignore`:
```bash
# Игнорировать файлы, созданные Intlayer
.intlayer
```
### Расширение VS Code
Чтобы улучшить процесс разработки с Intlayer, вы можете установить официальное **расширение Intlayer для VS Code**.
[Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
Это расширение предоставляет:
- **Автодополнение** для ключей перевода.
- **Обнаружение ошибок в реальном времени** для отсутствующих переводов.
- **Встроенный предпросмотр** переведенного контента.
- **Быстрые действия** для легкого создания и обновления переводов.
Более подробную информацию об использовании расширения см. в [документации по расширению Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).
---
### Идите дальше
Чтобы пойти дальше, вы можете внедрить [визуальный редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_visual_editor.md) или вынести ваш контент во внешнюю систему с помощью [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/intlayer_CMS.md).
---