ГлавнаяПесочницаВитринаПриложениеДокументБлог
    • Englishанглийский
      EN
    • русскийрусский
      RU
    • 日本語японский
      JA
    • françaisфранцузский
      FR
    • 한국어корейский
      KO
    • 中文китайский
      ZH
    • españolиспанский
      ES
    • Deutschнемецкий
      DE
    • العربيةарабский
      AR
    • italianoитальянский
      IT
    • British Englishбританский английский
      EN-GB
    • portuguêsпортугальский
      PT
    • हिन्दीхинди
      HI
    • Türkçeтурецкий
      TR
    • polskiпольский
      PL
    • Indonesiaиндонезийский
      ID
    • Tiếng Việtвьетнамский
      VI
    • українськаукраинский
      UK
    /
    Фильтровать документы по фреймворку
    Alt+←
    Почему Intlayer?
    Начать
    Концепция
    • Как работает Intlayer
    • Конфигурация
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Визуальный редактор
    • CMS
    • Интеграция CI/CD
    • ПереводМножественное числоПеречислениеУсловиеПолВставкаФайлВложенностьMarkdownHTMLПолучение функции
    • Файл для каждой локали
    • Компилятор
    • Автозаполнение
    • Тестирование
    • Оптимизация пакета
    Окружающая среда
    • Next.js 14 и App Router
      Next.js 15
      Next.js без locale URL
      Next.js и Page Router
      Compiler
    • Tanstack Start Solid
    • Astro и React
      Astro и Svelte
      Astro и Vue
      Astro и Solid
      Astro и Preact
      Astro и Lit
      Astro и Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt и Vue
    • Vite и Solid
    • SvelteKit
    • Vite и Preact
    • Vite и Vanilla JS
    • Vite и Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native и Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx и React
    Plugins
    • JSON
    • gettext (.po)
    Расширение VS Code
    Агент
    • Сервер MCP
    • Навики агента
    Релизы
    • v8
    • v7
    • v6
    Бенчмарк
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Блог
    Задать вопрос
    1. Documentation
    2. Концепция
    3. Файл для каждой локали
    Создание:2025-04-18Последнее обновление:2025-06-29
    Ссылайтесь на этот документ на ваш любимый ассистент AI
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI

    История версий

    1. "Инициализация истории"
      v5.5.1029.06.2025

    Содержимое этой страницы было переведено с помощью ИИ.

    Смотреть последнюю версию оригинального контента на английском
    Изменить эту документацию

    Если у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.

    Ссылка на документацию GitHub
    Копировать

    Копировать Markdown документа в буфер обмена

    Объявление контента Per-Locale в Intlayer

    Intlayer поддерживает два способа объявления многоязычного контента:

    • Один файл со всеми переводами
    • Один файл на каждую локаль (формат per-locale)

    Эта гибкость позволяет:

    • Легкая миграция с других инструментов интернационализации (i18n)
    • Поддержка автоматизированных рабочих процессов перевода
    • Четкая организация переводов в отдельные файлы, специфичные для каждой локали

    Один файл с несколькими переводами

    Этот формат идеален для:

    • Быстрой итерации в коде.
    • Бесшовной интеграции с CMS.

    Это рекомендуемый подход для большинства случаев использования. Он централизует переводы, что облегчает итерации и интеграцию с CMS.

    hello-world.content.ts
    Копировать код

    Копировать код в буфер обмена

    import { t, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      content: {
        multilingualContent: t({
          en: "Title of my component", // Заголовок моего компонента
          es: "Título de mi componente", // Заголовок моего компонента на испанском
        }),
      },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    Рекомендуется: Этот формат лучше всего подходит при использовании визуального редактора Intlayer или управлении переводами непосредственно в коде.

    Глобальная конфигурация для per-locale файлов

    Вы можете настроить глобальную конфигурацию для per-locale файлов, добавив следующее в ваш файл intlayer.config.ts:

    ts
    Копировать код

    Копировать код в буфер обмена

    import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  dictionary: {    locale: Locales.ENGLISH,  },};export default config;

    При использовании этой конфигурации все per-locale файлы будут генерироваться с локалью по умолчанию, установленной на английский. Это также включает генерацию файлов .content с помощью команды extract и компилятора. (Смотрите Compiler или Extract для получения дополнительной информации.)

    Формат по локалям

    Этот формат полезен, когда:

    • Вы хотите версионировать или переопределять переводы независимо.
    • Вы интегрируете машинные или человеческие рабочие процессы перевода.

    Вы также можете разделить переводы на отдельные файлы для каждой локали, указав поле locale:

    hello-world.es.content.ts
    Копировать код

    Копировать код в буфер обмена

    import { t, Locales, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      locale: Locales.SPANISH, // Важно
      content: { multilingualContent: "Título de mi componente" },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    Важно: Убедитесь, что поле locale определено. Оно сообщает Intlayer, на каком языке представлен файл.
    Примечание: В обоих случаях файл декларации контента должен соответствовать шаблону именования *.content.{ts,tsx,js,jsx,mjs,cjs,json}, чтобы Intlayer мог его распознать. Суффикс .[locale] является необязательным и используется только как соглашение об именовании.

    Смешивание форматов

    Вы можете комбинировать оба подхода объявления для одного и того же ключа контента. Например:

    • Объявите базовый контент статически в файле, таком как index.content.ts.
    • Добавьте или переопределите конкретные переводы в отдельных файлах, таких как index.fr.content.ts или index.content.json.

    Эта настройка особенно полезна, когда:

    • Вы хотите определить начальную структуру контента в коде.
    • Планируете позже дополнить или завершить переводы с помощью CMS или автоматизированных инструментов.
    bash
    Копировать код

    Копировать код в буфер обмена

    .└── Components    └── MyComponent        ├── index.content.ts        ├── index.content.json        └── index.ts

    Пример

    Вот файл объявления многоязычного контента:

    Components/MyComponent/index.content.ts
    Копировать код

    Копировать код в буфер обмена

    import { t, type Dictionary } from "intlayer";const helloWorldContent = {  key: "hello-world",  locale: Locales.ENGLISH,  content: {    multilingualContent: "Заголовок моего компонента",    projectName: "Мой проект",  },} satisfies Dictionary;export default helloWorldContent;
    Components/MyComponent/index.content.json
    Копировать код

    Копировать код в буфер обмена

    {  "$schema": "https://intlayer.org/schema.json",  "key": "hello-world",  "content": {    "multilingualContent": {      "nodeType": "translation",      "translation": {        "fr": "Titre de mon composant",        "es": "Título de mi componente"      }    }  }}

    Intlayer автоматически объединяет мультиязычные и локализованные файлы.

    Components/MyComponent/index.ts
    Копировать код

    Копировать код в буфер обмена

    import { getIntlayer, Locales } from "intlayer";const intlayer = getIntlayer("hello-world"); // Локаль по умолчанию - ENGLISH, поэтому будет возвращено содержимое на английскомconsole.log(JSON.stringify(intlayer, null, 2));// Результат:// {//  "multilingualContent": "Заголовок моего компонента",//  "projectName": "Мой проект"// }const intlayer = getIntlayer("hello-world", Locales.SPANISH);console.log(JSON.stringify(intlayer, null, 2));// Результат:// {//  "multilingualContent": "Título de mi componente",//  "projectName": "Мой проект"// }const intlayer = getIntlayer("hello-world", Locales.FRENCH);console.log(JSON.stringify(intlayer, null, 2));// Результат:// {//  "multilingualContent": "Titre de mon composant",//  "projectName": "Мой проект"// }

    Автоматическая генерация переводов

    Используйте intlayer CLI для автоматического заполнения отсутствующих переводов на основе ваших предпочтительных сервисов.

    Получение функции
    Компилятор
    Alt+→

    На этой странице

      Обсуждения анонимны и регулярно просматриваются для решения распространённых проблем. Не стесняйтесь делиться идеями функций, отзывами о документации или чем-либо, связанным с Intlayer, мы используем эту информацию для формирования нашей дорожной карты и улучшения продукта.

      import { Locales, type IntlayerConfig } from "intlayer";const config: IntlayerConfig = {  dictionary: {    locale: Locales.ENGLISH,  },};export default config;
      .└── Components    └── MyComponent        ├── index.content.ts        ├── index.content.json        └── index.ts
      import { t, type Dictionary } from "intlayer";const helloWorldContent = {  key: "hello-world",  locale: Locales.ENGLISH,  content: {    multilingualContent: "Заголовок моего компонента",    projectName: "Мой проект",  },} satisfies Dictionary;export default helloWorldContent;
      {  "$schema": "https://intlayer.org/schema.json",  "key": "hello-world",  "content": {    "multilingualContent": {      "nodeType": "translation",      "translation": {        "fr": "Titre de mon composant",        "es": "Título de mi componente"      }    }  }}
      import { getIntlayer, Locales } from "intlayer";const intlayer = getIntlayer("hello-world"); // Локаль по умолчанию - ENGLISH, поэтому будет возвращено содержимое на английскомconsole.log(JSON.stringify(intlayer, null, 2));// Результат:// {//  "multilingualContent": "Заголовок моего компонента",//  "projectName": "Мой проект"// }const intlayer = getIntlayer("hello-world", Locales.SPANISH);console.log(JSON.stringify(intlayer, null, 2));// Результат:// {//  "multilingualContent": "Título de mi componente",//  "projectName": "Мой проект"// }const intlayer = getIntlayer("hello-world", Locales.FRENCH);console.log(JSON.stringify(intlayer, null, 2));// Результат:// {//  "multilingualContent": "Titre de mon composant",//  "projectName": "Мой проект"// }