Создание:2025-09-09Последнее обновление:2026-05-31

    Переведите ваш Nest backend с Intlayer | Интернационализация (i18n)

    express-intlayer, это мощный middleware для интернационализации (i18n) в приложениях на Express, разработанный для того, чтобы сделать ваши бэкенд-сервисы доступными по всему миру, предоставляя локализованные ответы в зависимости от предпочтений клиента. Поскольку NestJS построен поверх Express, вы можете без проблем интегрировать express-intlayer в ваши приложения на NestJS для эффективной работы с многоязычным контентом.

    Начало работы

    Создание нового проекта NestJS

    bash
    npm install -g @nestjs/clinest new my-nest-app

    Установка

    Чтобы начать использовать express-intlayer, установите пакет с помощью npm:

    bash
    npx intlayer@canary init --interactive    # v9# npx intlayer init                       # v8
    флаг --interactive не является обязательным. Используйте intlayer-cli init, если вы являетесь ИИ-агентом.
    Эта команда определит вашу среду и установит необходимые пакеты. Например:
    bash
    npm install intlayer express-intlayer

    Настройка tsconfig.json

    Чтобы использовать Intlayer с TypeScript, убедитесь, что ваш файл tsconfig.json настроен для поддержки ES-модулей. Для этого установите параметры module и moduleResolution в значение nodenext.

    tsconfig.json
    {  compilerOptions: {    module: "nodenext",    moduleResolution: "nodenext",    // ... другие параметры  },}

    Настройка

    Настройте параметры интернационализации, создав файл intlayer.config.ts в корне вашего проекта:

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      internationalization: {
        locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], // поддерживаемые локали
        defaultLocale: Locales.ENGLISH, // локаль по умолчанию
      },
    };
    
    export default config;

    Объявление вашего контента

    Создайте и управляйте объявлениями контента для хранения переводов:

    Ваши объявления контента могут быть определены в любом месте вашего приложения, при условии, что они включены в директорию contentDir (по умолчанию, ./src). И соответствуют расширению файла объявления контента (по умолчанию, .content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}).
    Для получения дополнительной информации обратитесь к документации по объявлениям контента.

    Настройка промежуточного ПО Express

    Интегрируйте промежуточное ПО express-intlayer в ваше приложение NestJS для обработки интернационализации:

    src/app.module.ts
    import { MiddlewareConsumer, Module, NestModule } from "@nestjs/common";import { AppController } from "./app.controller";import { AppService } from "./app.service";import { intlayer } from "express-intlayer";@Module({  imports: [],  controllers: [AppController],  providers: [AppService],})export class AppModule implements NestModule {  configure(consumer: MiddlewareConsumer) {    consumer.apply(intlayer()).forRoutes("*"); // Применить ко всем маршрутам  }}

    Использование переводов в ваших сервисах или контроллерах

    Теперь вы можете использовать функцию getIntlayer для доступа к переводам в ваших сервисах или контроллерах:

    src/app.service.ts
    import { Injectable } from "@nestjs/common";import { getIntlayer } from "express-intlayer";@Injectable()export class AppService {  getHello(): string {    return getIntlayer("app").greet; // Получить приветствие из переводов  }}

    Совместимость

    express-intlayer полностью совместим с:

    Он также без проблем работает с любыми решениями для интернационализации в различных средах, включая браузеры и API-запросы. Вы можете настроить промежуточное ПО для определения локали через заголовки или куки:

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  // ... Другие параметры конфигурации  middleware: {    headerName: "my-locale-header",    cookieName: "my-locale-cookie",  },};export default config;

    По умолчанию express-intlayer будет интерпретировать заголовок Accept-Language для определения предпочтительного языка клиента.

    Для получения дополнительной информации о конфигурации и продвинутых темах посетите нашу документацию.

    Настройка TypeScript

    express-intlayer использует мощные возможности TypeScript для улучшения процесса интернационализации. Статическая типизация TypeScript гарантирует, что каждый ключ перевода учтен, снижая риск отсутствия переводов и повышая удобство сопровождения.

    Autocompletion

    Translation error

    Убедитесь, что автогенерируемые типы (по умолчанию в ./types/intlayer.d.ts) включены в ваш файл tsconfig.json.

    tsconfig.json
    {  // ... Ваши существующие настройки TypeScript  include: [    // ... Ваши существующие настройки TypeScript    ".intlayer/**/*.ts", // Включить автогенерируемые типы  ],}

    Расширение VS Code

    Для улучшения вашего опыта разработки с Intlayer вы можете установить официальное расширение Intlayer для VS Code.

    Установить из VS Code Marketplace

    Это расширение предоставляет:

    • Автозаполнение ключей перевода.
    • Обнаружение ошибок в реальном времени для отсутствующих переводов.
    • Встроенный просмотр переведенного содержимого.
    • Быстрые действия для удобного создания и обновления переводов.

    Для получения дополнительной информации о том, как использовать расширение, обратитесь к документации расширения Intlayer для VS Code.

    Конфигурация Git

    Рекомендуется игнорировать файлы, сгенерированные Intlayer. Это позволит избежать их коммита в ваш репозиторий Git.

    Чтобы сделать это, вы можете добавить следующие инструкции в ваш файл .gitignore:

    .gitignore
    # Игнорировать файлы, сгенерированные Intlayer.intlayer