Быстрый старт для React Router (v6)

Как настроить компилятор Lingo.dev с React Router (v6)

Введение

Lingo.dev Compiler — это инструмент на базе ИИ, который позволяет локализовать приложения на React без внесения изменений в существующие компоненты. Вам нужно лишь настроить несколько параметров, обернуть приложение в провайдер контекста — и всё, ваше приложение локализовано.

В этом руководстве объясняется, как настроить Lingo.dev Compiler с версией 6 React Router, библиотеки маршрутизации на стороне клиента для React. Если вы используете версию 7, смотрите Краткое руководство по React Router (v7).

Чему вы научитесь

  • Как инициализировать Lingo.dev Compiler в React Router
  • Как настроить компилятор для совместимости с React Router
  • Как настроить переключатель локалей для смены языков

Шаг 1. Настройка API-ключа

Lingo.dev Compiler использует большие языковые модели (LLM) для локализации приложений с помощью ИИ. Чтобы использовать одну из этих моделей, вам нужен API-ключ от поддерживаемого провайдера.

Чтобы начать как можно быстрее, мы рекомендуем использовать Lingo.dev Engine — нашу собственную платформу, которая предоставляет 10 000 токенов бесплатного ежемесячного использования.

Для настройки API-ключа:

  1. Войдите в Lingo.dev Engine.

  2. Перейдите на страницу Проекты.

  3. Нажмите API-ключ > Копировать.

  4. Сохраните API-ключ в переменной окружения:

    export LINGODOTDEV_API_KEY="<your_api_key>"

Альтернатива: Пользовательские провайдеры LLM

Вы не обязаны использовать Lingo.dev Engine. Вы можете настроить компилятор для интеграции с рядом пользовательских провайдеров LLM, включая:

  • Groq
  • Google
  • Mistral
  • Ollama
  • OpenRouter

Шаг 2. Установка пакета

Lingo.dev Compiler распространяется как часть npm-пакета lingo.dev. Для установки используйте предпочитаемый менеджер пакетов:

npm install lingo.dev

Шаг 3. Инициализация компилятора

Компилятор Lingo.dev интегрируется с Vite и запускается во время сборки. Чтобы подключиться к процессу сборки Vite, внесите следующие изменения в файл vite.config.ts:

  1. Импортируйте компилятор:

    import lingoCompiler from "lingo.dev/compiler";
  2. Инициализируйте компилятор с помощью метода vite:

    const withLingo = lingoCompiler.vite({
      sourceRoot: "src",
      lingoDir: "lingo",
      sourceLocale: "en",
      targetLocales: ["es"],
      rsc: false,
      useDirective: false,
      debug: false,
      models: "lingo.dev",
    });

    Для совместимости с React Router убедитесь, что:

    • sourceRoot установлен в "src"
    • rsc установлен в false

    Чтобы узнать больше о доступных опциях, смотрите Опции компилятора.

  3. Оберните вашу существующую конфигурацию Vite с помощью компилятора:

    const viteConfig: UserConfig = {
      plugins: [react()],
    };
    
    export default withLingo(viteConfig);

С этой конфигурацией Компилятор Lingo.dev будет:

  • Обходить абстрактное синтаксическое дерево (AST) кода
  • Находить локализуемый контент (например, текст в элементах JSX и определённых значениях атрибутов)
  • Использовать настроенные AI-модели для генерации переводов
  • Сохранять оригинальный и переведённый контент в файле dictionary.js
  • Заменять локализованный контент на плейсхолдеры

Шаг 4. Загрузка локализованного контента

После того как компилятор обработает ваше приложение и создаст переводы, необходимо загрузить и предоставить этот локализованный контент вашим пользователям. Это включает:

  • Загрузку соответствующего словаря на основе предпочтений локали пользователя
  • Предоставление загруженных переводов вашему приложению через провайдер контекста

Загрузка словаря

В вашем корневом файле маршрутов:

  1. Импортируйте функцию loadDictionary из lingo.dev/react/react-router:

    import { loadDictionary } from "lingo.dev/react/react-router";

    Эта функция:

    • Получает текущую локаль из cookie lingo-locale
    • Использует "en" по умолчанию, если локаль не определена
    • Загружает локализованный контент из файла dictionary.js
  2. Вызовите функцию loadDictionary из функции loader:

    import { LoaderFunctionArgs } from "react-router-dom";
    
    export async function loader({ request }: LoaderFunctionArgs) {
      const lingoDictionary = await loadDictionary(request);
      return {
        lingoDictionary,
      };
    }

Предоставление переводов

В вашем корневом компоненте:

  1. Импортируйте компонент LingoProvider из lingo.dev/react/client:

    import { LingoProvider } from "lingo.dev/react/client";

    Этот компонент является провайдером контекста React, который заменяет заполнители, созданные компилятором, на локализованный контент.

  2. В вашем корневом компоненте получите данные из загрузчика данных:

    const data = useLoaderData<typeof loader>();
  3. Оберните приложение в компонент LingoProvider:

    <LingoProvider dictionary={data?.lingoDictionary}>
      {/* Существующий код приложения */}
    </LingoProvider>

Шаг 5. Настройка переключателя локалей

Чтобы пользователи могли переключаться между локалями, импортируйте LocaleSwitcher из пакета lingo.dev. Это не стилизованный компонент, который:

  • Отображает выпадающий список доступных локалей
  • Позволяет пользователям выбирать локаль
  • Запоминает выбранную локаль для последующих посещений

Чтобы использовать компонент, вставьте его в любое место вашего приложения и установите свойство locales в массив, содержащий настроенные исходную и целевые локали:

import { LocaleSwitcher } from "lingo.dev/react/client";

<LocaleSwitcher locales={["en", "es"]} />;

Альтернатива: пользовательский переключатель локалей

Вы не обязаны использовать компонент LocaleSwitcher. Вы можете реализовать собственную логику и интерфейс переключения локалей. Единственное требование — читать и записывать активную локаль в cookie lingo-locale.

Шаг 6. Запуск приложения

Чтобы убедиться, что Lingo.dev Compiler настроен правильно:

  1. Запустите сервер разработки:

    npm run dev
  2. Перейдите на localhost:5173.

  3. Используйте компонент LocaleSwitcher для переключения между локалями.

Страница должна перезагрузиться и отобразить локализованный контент.

Если вы не используете компонент LocaleSwitcher, альтернативным способом проверить, что локализация работает, является ручная установка cookie lingo-locale.

Если вы используете Google Chrome, выполните следующие действия:

  1. Перейдите в Вид > Разработчик > Инструменты разработчика.
  2. Откройте вкладку Приложение.
  3. В левой боковой панели, в разделе Хранилище, разверните Cookies и выберите URL сайта.
  4. В таблице cookies щелкните правой кнопкой мыши в любом месте и выберите Добавить.
  5. В столбце Имя введите lingo-locale.
  6. В столбце Значение введите нужную локаль (например, es).
  7. Нажмите Enter, чтобы сохранить cookie.
  8. Обновите страницу, чтобы применить cookie.

Дополнительные материалы