Быстрый старт для create-t3-app
Как настроить компилятор Lingo.dev с create-t3-app
Введение
Lingo.dev Compiler — это инструмент на базе ИИ, который позволяет локализовать приложения на React без внесения изменений в существующие компоненты. Вам нужно лишь настроить несколько параметров, обернуть приложение в провайдер контекста — и всё, ваше приложение локализовано.
В этом руководстве объясняется, как настроить Lingo.dev Compiler с create-t3-app — фреймворком для веб-приложений полного стека, который объединяет Next.js, TypeScript, Tailwind CSS и tRPC.
Чему вы научитесь
- Как инициализировать Lingo.dev Compiler в проекте create-t3-app
- Как настроить компилятор для совместимости с create-t3-app
- Как настроить переключатель локалей для смены языков
Шаг 1. Настройка API-ключа
Lingo.dev Compiler использует большие языковые модели (LLM) для локализации приложений с помощью ИИ. Чтобы использовать одну из этих моделей, вам нужен API-ключ от поддерживаемого провайдера.
Чтобы начать как можно быстрее, мы рекомендуем использовать Lingo.dev Engine — нашу собственную платформу, которая предоставляет 10 000 токенов бесплатного ежемесячного использования.
Для настройки API-ключа:
-
Перейдите на страницу Проекты.
-
Нажмите API key > Копировать.
-
Сохраните API-ключ в переменной окружения:
export LINGODOTDEV_API_KEY="<your_api_key>"
Альтернатива: Пользовательские провайдеры LLM
Вы не обязаны использовать Lingo.dev Engine. Вы можете настроить компилятор для интеграции с рядом пользовательских провайдеров LLM, включая:
- Groq
- Mistral
- Ollama
- OpenRouter
Шаг 2. Установка пакета
Lingo.dev Compiler распространяется как часть npm-пакета lingo.dev
. Для установки используйте предпочитаемый менеджер пакетов:
npm install lingo.dev
Шаг 3. Отключите Turbopack
При использовании create-t3-app Lingo.dev Compiler несовместим с Turbopack. Если он включен, процесс компиляции завершится с ошибкой.
Чтобы отключить Turbopack, удалите флаг --turbopack
из скрипта dev
:
{
"scripts": {
"dev": "next dev"
}
}
Шаг 4. Инициализация компилятора
Lingo.dev Compiler интегрируется с Next.js и запускается во время сборки. Чтобы подключить его к процессу сборки, внесите следующие изменения в файл next.config.ts
:
-
Импортируйте компилятор:
import lingoCompiler from "lingo.dev/compiler";
-
Инициализируйте компилятор с помощью метода
next
:const withLingo = lingoCompiler.next({ sourceRoot: "src", lingoDir: "lingo", sourceLocale: "en", targetLocales: ["es"], rsc: true, useDirective: false, debug: false, models: "lingo.dev", });
Для совместимости с create-t3-app убедитесь, что:
sourceRoot
установлен в"src"
rsc
установлен вtrue
Чтобы узнать больше о доступных опциях, смотрите Compiler Options.
-
Объедините конфигурацию компилятора с существующей конфигурацией и экспортируйте её:
export default withLingo(config);
С этой конфигурацией Lingo.dev Compiler будет:
- Обходить дерево абстрактного синтаксиса (AST) кодовой базы
- Находить локализуемый контент (например, текст в элементах JSX и определённых значениях атрибутов)
- Использовать настроенные AI-модели для генерации переводов
- Сохранять оригинальный и переведённый контент в файле
dictionary.js
- Заменять локализованный контент на плейсхолдеры
Шаг 5. Загрузка локализованного контента
После того как компилятор обработает ваше приложение и создаст переводы, вам нужно загрузить и предоставить этот локализованный контент вашим пользователям. Это включает:
- Загрузку соответствующего словаря на основе предпочтений локали пользователя
- Предоставление загруженных переводов вашему приложению через провайдер контекста
В файле src/app/layout.tsx
оберните приложение в компонент LingoProvider
и передайте в него функцию loadDictionary
:
import { LingoProvider, loadDictionary } from "lingo.dev/react/rsc";
export default function RootLayout({
children,
}: Readonly<{ children: React.ReactNode }>) {
return (
<LingoProvider loadDictionary={(locale) => loadDictionary(locale)}>
<html lang="en" className={`${geist.variable}`}>
<body>
<TRPCReactProvider>{children}</TRPCReactProvider>
</body>
</html>
</LingoProvider>
);
}
Функция loadDictionary
:
- Получает текущую локаль из cookie
lingo-locale
(по умолчанию"en"
) - Загружает локализованный контент из файла
dictionary.js
Компонент LingoProvider
является провайдером контекста React, который заменяет созданные компилятором плейсхолдеры на локализованный контент.
Шаг 6. Настройка переключателя локалей
Чтобы пользователи могли переключаться между локалями, импортируйте LocaleSwitcher
из пакета lingo.dev
. Это не стилизованный компонент, который:
- Отображает выпадающий список доступных локалей
- Позволяет пользователям выбирать локаль
- Запоминает выбранную локаль для последующих посещений
Чтобы использовать компонент, вставьте его в любое место вашего приложения и установите свойство locales
в массив, содержащий настроенные исходную и целевые локали:
import { LocaleSwitcher } from "lingo.dev/react/client";
<LocaleSwitcher locales={["en", "es"]} />;
Альтернатива: пользовательский переключатель локалей
Вы не обязаны использовать компонент LocaleSwitcher
. Вы можете реализовать собственную логику переключения локалей и пользовательский интерфейс. Единственное требование — читать и записывать активную локаль в cookie lingo-locale
.
Шаг 7. Запуск приложения
Чтобы убедиться, что Lingo.dev Compiler настроен правильно:
-
Запустите сервер разработки:
npm run dev
-
Перейдите по адресу localhost:3000.
-
Используйте компонент
LocaleSwitcher
для переключения между локалями.
Страница должна перезагрузиться и отобразить локализованный контент.
Альтернатива: ручная установка cookie
Если вы не используете компонент LocaleSwitcher
, альтернативный способ проверки работы локализации — это ручная установка cookie lingo-locale
.
Если вы используете Google Chrome, выполните следующие действия:
- Перейдите в Вид > Разработчик > Инструменты разработчика.
- Откройте вкладку Приложение.
- В левой панели, в разделе Хранилище, разверните Cookies и выберите URL сайта.
- В таблице cookie щелкните правой кнопкой мыши в любом месте и выберите Добавить.
- В столбце Имя введите
lingo-locale
. - В столбце Значение введите нужную локаль (например,
es
). - Нажмите Enter, чтобы сохранить cookie.
- Обновите страницу, чтобы применить cookie.
Дополнительные материалы
- Чтобы понять, как работает компилятор, см. Как это работает.
- Чтобы узнать, как настроить компилятор, см. Параметры компилятора.