Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомНачало работы с декларацией вашего контента
Расширения файлов
По умолчанию Intlayer отслеживает все файлы с следующими расширениями для деклараций контента:
- .content.json
- .content.ts
- .content.tsx
- .content.js
- .content.jsx
- .content.mjs
- .content.mjx
- .content.cjs
- .content.cjx
Приложение будет искать файлы, соответствующие шаблону ./src/**/*.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx} по умолчанию.
Эти стандартные расширения подходят для большинства приложений. Однако, если у вас есть специфические требования, обратитесь к руководству по настройке расширений контента для инструкций по их управлению.
Для полного списка опций конфигурации посетите документацию по конфигурации.
Объявление вашего контента
Создавайте и управляйте вашими словарями:
import { t, enu, cond, nest, md, type Dictionary } from "intlayer";interface Content { imbricatedContent: { imbricatedContent2: { stringContent: string; numberContent: number; booleanContent: boolean; javaScriptContent: string; }; }; multilingualContent: string; quantityContent: string; conditionalContent: string; externalContent: string; insertionContent: string; fileContent: string; nestedContent: any; markdownContent: any; jsxContent: any;}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", ru: "Русский контент", }), quantityContent: enu({ "<-1": "Меньше минус одной машины", "-1": "Минус одна машина", "0": "Нет машин", "1": "Одна машина", ">5": "Несколько машин", ">19": "Много машин", }), conditionalContent: cond({ true: "Валидация включена", false: "Валидация отключена", }), nestedContent: nest( "navbar", // Ключ словаря для вложения "login.button" // [Необязательно] Путь к контенту для вложения ), externalContent: fetch("https://example.com").then((res) => res.json()) markdownContent: md("# Пример Markdown"), /* * Доступно только с использованием `react-intlayer` или `next-intlayer` */ jsxContent: <h1>Мой заголовок</h1>, },} satisfies Dictionary<Content>; // [необязательно] Dictionary является обобщением и позволяет усилить форматирование вашего словаря
Вложение функций
Вы можете без проблем вкладывать функции в другие.
Пример:
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", ru: "Привет", }), " ", 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", ru: "Элементы не найдены", }), "1": t({ en: "One item found", fr: "Un article trouvé", es: "Se encontró un artículo", ru: "Найден один элемент", }), ">1": t({ en: "Multiple items found", fr: "Plusieurs articles trouvés", es: "Se encontraron múltiples artículos", ru: "Найдено несколько элементов", }), }), false: t({ en: "No valid data available", fr: "Aucune donnée valide disponible", es: "No hay datos válidos disponibles", ru: "Нет доступных данных", }), }), },} satisfies Dictionary;
Если у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на GitHub.
Ссылка на документацию GitHub