Быстрый старт для TanStack Start

Как настроить компилятор Lingo.dev с TanStack Start

Введение

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

В этом руководстве объясняется, как настроить Lingo.dev Compiler с TanStack Start.

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

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

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

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

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

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

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

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

  3. Нажмите API key > Копировать.

  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 интегрируется с TanStack Start и работает на этапе сборки. Чтобы подключиться к процессу сборки TanStack Start, внесите следующие изменения в файл 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",
    });

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

  3. Примените конфигурацию компилятора к вашей базовой конфигурации:

    export default defineConfig(withLingo(baseConfig));

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

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

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

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

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

В файле src/routes/__root.tsx:

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

    import {
      LingoProviderWrapper,
      loadDictionary,
    } from "lingo.dev/react/client";

    Компонент LingoProviderWrapper — это провайдер контекста, который заменяет созданные компилятором плейсхолдеры на локализованный контент.

    Функция loadDictionary:

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

    function RootDocument({ children }: { children: React.ReactNode }) {
      return (
        <html>
          <head>
            <HeadContent />
          </head>
          <body>
            <LingoProviderWrapper
              loadDictionary={(locale) => loadDictionary(locale)}
            >
              {children}
            </LingoProviderWrapper>
            <Scripts />
          </body>
        </html>
      );
    }

Шаг 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:3000.

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

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

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

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

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

Дополнительное чтение