Получайте уведомления о предстоящих релизах Intlayer
    Создание:2025-04-18Последнее обновление:2025-06-29

    Объявление контента 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 или управлении переводами непосредственно в коде.

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

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

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

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

    hello-world.en.content.ts
    import { t, Locales, type Dictionary } from "intlayer";const helloWorldContent = {  key: "hello-world",  locale: Locales.ENGLISH, // Важно  content: { multilingualContent: "Title of my component" },} satisfies Dictionary;export default helloWorldContent;
    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 для автоматического заполнения отсутствующих переводов на основе ваших предпочтительных сервисов.

    История документации

    • 5.5.10 - 2025-06-29: Инициализация истории
    Получайте уведомления о предстоящих релизах Intlayer