Начало работы с декларацией вашего контента

    Расширения файлов

    По умолчанию Intlayer отслеживает все файлы с следующими расширениями для деклараций контента:

    • .content.ts
    • .content.tsx
    • .content.js
    • .content.mjs
    • .content.cjs

    Приложение по умолчанию будет искать файлы, соответствующие шаблону ./src/**/*.content.{ts,tsx,js,jsx,mjs,cjs}.

    Эти стандартные расширения подходят для большинства приложений. Однако, если у вас есть специфические требования, обратитесь к руководству по настройке расширений контента для инструкций об их управлении.

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

    Декларация вашего контента

    Создавайте и управляйте вашими словарями:

    src/example.content.ts
    import { t, enu, cond, nest, md, type Dictionary } from "intlayer";interface Content {  imbricatedContent: {    imbricatedContent2: {      stringContent: string;      numberContent: number;      booleanContent: boolean;    };    multilingualContent: string;    quantityContent: string;    conditionalContent: string;    nestedContent: string;    markdownContent: string;    externalContent: string;  };}export default {  key: "page",  content: {    imbricatedContent: {      imbricatedContent2: {        stringContent: "Привет, мир",        numberContent: 123,        booleanContent: true,        javaScriptContent: `${process.env.NODE_ENV}`,      },    },    multilingualContent: t({      en: "English content",      "en-GB": "English content (UK)",      fr: "French content",      es: "Spanish content",    }),    quantityContent: enu({      "<-1": "Меньше минус одной машины",      "-1": "Минус одна машина",      "0": "Нет машин",      "1": "Одна машина",      ">5": "Некоторое количество машин",      ">19": "Много машин",    }),    conditionalContent: cond({      true: "Валидация включена",      false: "Валидация отключена",    }),    nestedContent: nest(      "navbar", // Ключ словаря для вложения      "login.button" // [Необязательно] Путь к контенту для вложения    ),    externalContent: async () => await fetch("https://example.com"),    markdownContent: md("# Пример Markdown"),    /*     * Доступно только с использованием `react-intlayer` или `next-intlayer`     */    jsxContent: <h1>Мой заголовок</h1>,  },} satisfies Dictionary<Content>; // [необязательно] Dictionary является обобщением и позволяет усилить форматирование словаря

    Вложение функций

    Вы можете без проблем вкладывать функции в другие.

    Пример:

    src/example.content.ts
    import { t, enu, cond, nest, md, type Dictionary } from "intlayer";const getName = async () => "Джон Доу";export default {  key: "page",  content: {    // `getIntlayer('page','ru').hiMessage` возвращает `['Привет', ' ', 'Джон Доу']`    hiMessage: [      t({        en: "Hi",        fr: "Salut",        es: "Hola",      }),      " ",      getName(),    ],    // Составной контент, включающий условие, перечисление и многоязычный контент    // `getIntlayer('page','ru').advancedContent(true)(10) возвращает 'Найдено несколько элементов'`    advancedContent: cond({      true: enu({        "0": t({          en: "No items found",          fr: "Aucun article trouvé",          es: "No se encontraron artículos",        }),        "1": t({          en: "One item found",          fr: "Un article trouvé",          es: "Se encontró un artículo",        }),        ">1": t({          en: "Multiple items found",          fr: "Plusieurs articles trouvés",          es: "Se encontraron múltiples artículos",        }),      }),      false: t({        en: "No valid data available",        fr: "Aucune donnée valide disponible",        es: "No hay datos válidos disponibles",      }),    }),  },} satisfies Dictionary;

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

    Ссылка на документацию GitHub