Начало работы с декларацией вашего контента
Расширения файлов
По умолчанию 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