Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Обновление использования API useIntlayer в Solid для прямого доступа к свойствам"v8.9.004.05.2026
- "Добавить команду init"v7.5.930.12.2025
- "Инициализация истории"v5.5.1029.06.2025
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
Переведите ваш Lynx and React mobile app с Intlayer | Интернационализация (i18n)
Смотрите шаблон приложения на GitHub.
Почему Intlayer лучше альтернатив?
По сравнению с основными решениями, такими как «react-native-localize» или «i18next», Intlayer — это решение со встроенными оптимизациями, такими как:
Intlayer оптимизирован для идеальной работы с Lynx и React, предлагая охват контента на уровне компонентов, поддержку TypeScript и все функции, необходимые для масштабирования интернационализации (i18n).
Вместо загрузки огромных файлов JSON на свои страницы загружайте только необходимый контент. Intlayer помогает уменьшить размер бандла и страниц до 50 %.
Определение области содержимого вашего приложения облегчает обслуживание крупномасштабных приложений. Вы можете дублировать или удалить отдельную папку функций, не утруждав себя мысленным бременем проверки всей кодовой базы контента. Кроме того, Intlayer полностью типизирован, что обеспечивает точность вашего контента.
Совместное размещение контента уменьшает контекст, необходимый для моделей большого языка (LLM). Intlayer также поставляется с набором инструментов, таких как CLI для проверки отсутствия переводов,LSP, MCP, и навыки агента, чтобы сделать работу разработчика (DX) еще более удобной для агентов ИИ.
Используйте автоматизацию для перевода в своем конвейере CI/CD, используя LLM по вашему выбору за счет вашего поставщика ИИ. Intlayer также предлагает компилятор для автоматизации извлечения контента, а также веб-платформу, которая помогает переводить в фоновом режиме.
Подключение больших файлов JSON к компонентам может привести к проблемам с производительностью и реактивностью. Intlayer оптимизирует загрузку контента во время сборки (build time).
Intlayer — это больше, чем просто решение i18n. Он предоставляет автономный визуальный редактор и полный CMS, чтобы помочь вам управлять многоязычным контентом в реальном времени, упрощая сотрудничество с переводчиками, копирайтерами и другими членами команды. Контент может храниться локально и/или удаленно.
Шаг 1: Установите зависимости
Из вашего проекта Lynx установите следующие пакеты:
Копировать код в буфер обмена
npm install intlayer react-intlayer lynx-intlayernpx intlayer initПакеты
intlayer
Основной набор инструментов i18n для конфигурации, содержания словарей, генерации типов и CLI-команд.react-intlayer
Интеграция с React, предоставляющая провайдеры контекста и React-хуки, которые вы будете использовать в Lynx для получения и переключения локалей.lynx-intlayer
Интеграция с Lynx, предоставляющая плагин для интеграции Intlayer с бандлером Lynx.
Шаг 2: Создайте конфигурацию Intlayer
В корне вашего проекта (или в любом удобном месте) создайте файл конфигурации Intlayer. Он может выглядеть так:
Копировать код в буфер обмена
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [
Locales.ENGLISH,
Locales.FRENCH,
Locales.SPANISH,
// ... Добавьте любые другие локали, которые вам нужны
],
defaultLocale: Locales.ENGLISH,
},
};
export default config;В этой конфигурации вы можете:
- Настроить список поддерживаемых локалей.
- Установить локаль по умолчанию.
- Позже вы можете добавить более сложные опции (например, логи, пользовательские директории контента и т.д.).
- См. документацию по конфигурации Intlayer для получения дополнительной информации.
Шаг 3: Добавьте плагин Intlayer в бандлер Lynx
Чтобы использовать Intlayer с Lynx, вам нужно добавить плагин в файл lynx.config.ts:
Копировать код в буфер обмена
import { defineConfig } from "@lynx-js/rspeedy";import { pluginIntlayerLynx } from "lynx-intlayer/plugin";export default defineConfig({ plugins: [ // ... другие плагины pluginIntlayerLynx(), ],});Шаг 4: Добавьте провайдер Intlayer
Чтобы синхронизировать язык пользователя по всему приложению, вам нужно обернуть ваш корневой компонент в компонент IntlayerProvider из react-intlayer.
Также вам нужно добавить файл функции intlayerPolyfill, чтобы Intlayer работал корректно.
Копировать код в буфер обмена
import { root } from "@lynx-js/react";import { App } from "./App.js";import { IntlayerProvider } from "react-intlayer";import { intlayerPolyfill } from "lynx-intlayer";intlayerPolyfill();root.render( <IntlayerProvider> <App /> </IntlayerProvider>);if (import.meta.webpackHot) { import.meta.webpackHot.accept();}Шаг 5: Объявите ваш контент
Создайте файлы объявления контента в любом месте вашего проекта (обычно в src/), используя любой из форматов расширений, поддерживаемых Intlayer:
.content.json.content.ts.content.tsx.content.js.content.jsx.content.mjs.content.mjx.content.cjs.content.cjx- и т.д.
Пример:
Копировать код в буфер обмена
import { t, type Dictionary } from "intlayer";
const appContent = {
key: "app",
content: {
title: "React",
subtitle: t({
ru: "на Lynx",
en: "on Lynx",
ru: "на Lynx",
en: "on Lynx",
fr: "sur Lynx",
es: "en Lynx",
}),
description: t({
ru: "Нажмите на логотип и повеселитесь!",
en: "Tap the logo and have fun!",
fr: "Appuyez sur le logo et amusez-vous!",
es: "¡Toca el logo y diviértete!",
}),
hint: [
t({
ru: "Редактировать",
en: "Edit",
fr: "Modifier",
es: "Editar",
}),
" src/App.tsx ",
t({
ru: "чтобы увидеть обновления!",
en: "to see updates!",
fr: "pour voir les mises à jour!",
es: "para ver actualizaciones!",
}),
],
},
} satisfies Dictionary;
export default appContent;Для получения подробной информации о декларациях контента, см. документацию по контенту Intlayer.
Шаг 4: Используйте Intlayer в ваших компонентах
Используйте хук useIntlayer в дочерних компонентах для получения локализованного контента.
Копировать код в буфер обмена
import { useCallback, useState } from "@lynx-js/react";import { useIntlayer } from "react-intlayer";import "./App.css";import arrow from "./assets/arrow.png";import lynxLogo from "./assets/lynx-logo.png";import reactLynxLogo from "./assets/react-logo.png";import { LocaleSwitcher } from "./components/LocaleSwitcher.jsx";export const App = () => { const [alterLogo, setAlterLogo] = useState(false); const { title, subtitle, description, hint } = useIntlayer("app"); const onTap = useCallback(() => { // только фон setAlterLogo(!alterLogo); }, [alterLogo]); return ( <view> <view className="Background" /> <view className="App"> <view className="Banner"> <view className="Logo" bindtap={onTap}> {alterLogo ? ( <image src={reactLynxLogo} className="Logo--react" /> ) : ( <image src={lynxLogo} className="Logo--lynx" /> )} </view> <text className="Title">{title}</text> <text className="Subtitle">{subtitle}</text> </view> <view className="Content"> <image src={arrow} className="Arrow" /> <text className="Description">{description}</text> <text className="Hint"> {hint[0]} <text style={{ fontStyle: "italic" }}>{hint[1]}</text> {hint[2]} </text> </view> <LocaleSwitcher /> <view style={{ flex: 1 }}></view> </view> </view> );};При использованииcontent.someKeyв строковых свойствах (например,titleкнопки илиchildrenкомпонентаText), вызывайтеcontent.someKey.value, чтобы получить строку.
(Опционально) Шаг 5: Измените локаль приложения
Для переключения локалей из ваших компонентов вы можете использовать метод setLocale из хука useLocale:
Копировать код в буфер обмена
import { type FC } from "react";import { getLocaleName } from "intlayer";import { useLocale } from "react-intlayer";export const LocaleSwitcher: FC = () => { const { setLocale, availableLocales, locale } = useLocale(); return ( <view style={{ display: "flex", flexDirection: "row", justifyContent: "center", alignItems: "center", gap: 10, }} > {availableLocales.map((localeEl) => ( <text key={localeEl} style={{ color: localeEl === locale ? "#fff" : "#888", fontSize: "12px", }} bindtap={() => setLocale(localeEl)} > {getLocaleName(localeEl)} </text> ))} </view> );};Это вызывает повторный рендер всех компонентов, использующих контент Intlayer, теперь с переводами для новой локали.
См. документацию по useLocale для получения дополнительной информации.
Настройка TypeScript (если вы используете TypeScript)
Intlayer генерирует определения типов в скрытой папке (по умолчанию .intlayer) для улучшения автозаполнения и обнаружения ошибок перевода:
Копировать код в буфер обмена
// tsconfig.json{ // ... ваш существующий TS конфиг "include": [ "src", // ваш исходный код ".intlayer/types/**/*.ts", // <-- убедитесь, что автоматически сгенерированные типы включены // ... все остальное, что вы уже включили ],}Это позволяет использовать такие функции, как:
- Автозаполнение для ключей вашего словаря.
- Проверка типов, которая предупреждает, если вы обращаетесь к несуществующему ключу или несовместимому типу.
Конфигурация Git
Чтобы избежать коммита автоматически сгенерированных файлов Intlayer, добавьте следующее в ваш .gitignore:
Копировать код в буфер обмена
# Игнорировать файлы, сгенерированные Intlayer.intlayerРасширение VS Code
Для улучшения вашего опыта разработки с Intlayer вы можете установить официальное расширение Intlayer для VS Code.
Установить из Marketplace VS Code
Это расширение предоставляет:
- Автозаполнение для ключей перевода.
- Обнаружение ошибок в реальном времени для отсутствующих переводов.
- Встроенный просмотр переведённого контента.
- Быстрые действия для лёгкого создания и обновления переводов. Для получения дополнительной информации о том, как использовать расширение, обратитесь к документации по расширению Intlayer для VS Code.
Узнайте больше
- Визуальный редактор: Используйте визуальный редактор Intlayer для визуального управления переводами.
- Интеграция с CMS: Вы также можете вынести и получить содержимое вашего словаря из CMS.
- CLI команды: Изучите CLI Intlayer для выполнения задач, таких как извлечение переводов или проверка отсутствующих ключей.