ГоловнаПісочницяВітринаДодатокДокументаціяБлог
    • 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

    Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту

    Історія версій

    1. "Додано глобальну конфігурацію для файлів per-locale"
      v7.3.129.11.2025
    2. "Ініціалізація історії"
      v5.5.1029.06.2025

    Вміст цієї сторінки перекладено за допомогою штучного інтелекту.

    Переглянути останню версію оригінального вмісту англійською
    Редагувати цей документ

    Якщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.

    Посилання на документацію на GitHub
    Копіювати

    Скопіювати документацію у форматі Markdown в буфер обміну

    Оголошення декларації вмісту Per-Locale в Intlayer

    Intlayer підтримує два способи оголошення багатомовного вмісту:

    • Один файл з усіма перекладами
    • Окремий файл для кожної локалі (формат per-locale)

    Ця гнучкість дає змогу:

    • Легку міграцію з інших i18n-інструментів
    • Підтримку автоматизованих робочих процесів перекладу
    • Чітку організацію перекладів у окремі файли, специфічні для кожної локалі

    Формат Per-Locale

    Цей формат корисний, коли:

    • Ви хочете версіїувати або незалежно перевизначати переклади.
    • Ви інтегруєте робочі процеси машинного або людського перекладу.

    Ви також можете розділити переклади на окремі файли для кожної локалі, вказавши поле locale:

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

    Скопіюйте код у буфер обміну

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

    Глобальна конфігурація для файлів за локалями

    Ви можете налаштувати глобальні параметри для файлів за локалями, додавши наступне до файлу intlayer.config.ts:

    ts
    Копіювати код

    Скопіюйте код у буфер обміну

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

    Використовуючи цю конфігурацію, усі файли для кожної локалі будуть згенеровані з мовою за замовчуванням, встановленою на English. Вона також включає генерацію .content файлів за допомогою команди transform та компілятора. (Див. Компілятор або Transform для докладнішої інформації.)

    Один файл з кількома перекладами

    Цей формат ідеально підходить для:

    • Швидкої ітерації в коді.
    • Безшовної інтеграції з CMS.

    Це рекомендований підхід для більшості випадків використання. Він централізує переклади, що полегшує ітерацію та інтеграцію з CMS.

    hello-world.content.ts
    Копіювати код

    Скопіюйте код у буфер обміну

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

    Змішування форматів

    Ви можете поєднувати обидва підходи декларації для одного й того ж ключа контенту. Наприклад:

    • Оголосіть базовий вміст статично у файлі, наприклад 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": {        "uk": "Заголовок мого компонента",        "fr": "Titre de mon composant",        "es": "Título de mi componente"      }    }  }}

    Intlayer merges multilingual and per-locale files automatically.

    Components/MyComponent/index.ts
    Копіювати код

    Скопіюйте код у буфер обміну

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

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

    Використовуйте 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": {        "uk": "Заголовок мого компонента",        "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": "Title of my component",//  "projectName": "My project"// }const intlayer = getIntlayer("hello-world", Locales.SPANISH);console.log(JSON.stringify(intlayer, null, 2));// Результат:// {//  "multilingualContent": "Título de mi componente",//  "projectName": "My project"// }const intlayer = getIntlayer("hello-world", Locales.FRENCH);console.log(JSON.stringify(intlayer, null, 2));// Результат:// {//  "multilingualContent": "Titre de mon composant",//  "projectName": "My project"// }