Быстрый старт
Lingo.dev Compiler создан для того, чтобы сделать любое React-приложение многоязычным на этапе сборки, без необходимости вносить изменения в существующие React-компоненты.
Этот краткий справочник поможет вам добавить поддержку нескольких языков в ваше React-приложение менее чем за 5 минут.
После завершения этого руководства вы сможете:
- Установить и настроить Lingo.dev Compiler в вашем React-приложении
- Настроить автоматическое извлечение и внедрение переводов
- Получить работающее многоязычное приложение с оптимизированными переводами
Давайте начнем!
Предварительные требования
Lingo.dev Compiler работает с современными React-фреймворками. Перед началом убедитесь, что у вас настроена одна из поддерживаемых конфигураций:
- Next.js (App Router)
- React Router / Remix
- Vite + React
Или изучите наши демонстрационные приложения: Next.js, React Router и Vite.
Шаг 1. Установите пакет
Установите пакет lingo.dev в ваш проект:
npm install lingo.dev
Шаг 2. Настройте ваш фреймворк
Выберите ваш фреймворк и следуйте соответствующим инструкциям по настройке:
Next.js
Обновите ваш next.config.js
:
import lingoCompiler from "lingo.dev/compiler";
export default lingoCompiler.next({
sourceLocale: "en",
targetLocales: ["es", "fr", "de"],
models: "lingo.dev", // Вариант 1: Lingo.dev Engine
// models: {
// "*:*": "groq:qwen/qwen3-32b", // Вариант 2: GROQ
// "*:*": "google:gemini-2.0-flash", // Вариант 2: Google AI
// "*:*": "openrouter:mistralai/mistral-small-24b-instruct-2501", // Вариант 2: OpenRouter
// "*:*": "ollama:mistral-small3.1", // Вариант 2: Ollama
// "*:*": "mistral:mistral-small-latest", // Mistral
// },
})(nextConfig);
React Router / Remix
Обновите ваш vite.config.ts
:
import lingoCompiler from "lingo.dev/compiler";
export default defineConfig(() =>
lingoCompiler.vite({
sourceRoot: "src",
targetLocales: ["es", "fr", "de"],
models: "lingo.dev", // Вариант 1: Lingo.dev Engine
// models: {
// "*:*": "groq:qwen/qwen3-32b", // Вариант 2: GROQ
// "*:*": "google:gemini-2.0-flash", // Вариант 2: Google AI
// "*:*": "openrouter:mistralai/mistral-small-24b-instruct-2501", // Вариант 2: OpenRouter
// "*:*": "ollama:mistral-small3.1", // Вариант 2: Ollama
// "*:*": "mistral:mistral-small-latest", // Mistral
// },
})(viteConfig),
);
Vite
Обновите ваш vite.config.ts
:
import lingoCompiler from "lingo.dev/compiler";
export default defineConfig(() =>
lingoCompiler.vite({
sourceRoot: "src",
targetLocales: ["es", "fr", "de"],
models: "lingo.dev", // Вариант 1: Lingo.dev Engine
// models: {
// "*:*": "groq:qwen/qwen3-32b", // Вариант 2: GROQ
// "*:*": "google:gemini-2.0-flash", // Вариант 2: Google AI
// "*:*": "openrouter:mistralai/mistral-small-24b-instruct-2501", // Вариант 2: OpenRouter
// "*:*": "ollama:mistral-small3.1", // Вариант 2: Ollama
// "*:*": "mistral:mistral-small-latest", // Mistral
// },
})(viteConfig),
);
Шаг 3. Настройте аутентификацию
Lingo.dev Compiler отправляет ваш контент в AI-движки перевода для локализации, поэтому сначала необходимо пройти аутентификацию.
Вариант 1. Lingo.dev Engine
Lingo.dev Compiler может использовать Lingo.dev Engine в качестве вашего AI-движка для перевода.
Он предоставляет динамический выбор моделей, автоматическое перенаправление на разные модели для каждой языковой пары, автоматические резервные модели, память переводов, учитывающую прошлые переводы, и поддержку глоссариев для терминологии, специфичной для вашего проекта. Доступны как бесплатные, так и платные варианты, и бесплатный тариф Hobby должен быть достаточным для большинства проектов.
Для аутентификации выполните команду:
npx lingo.dev@latest login
Важная деталь. Если вы используете браузер Brave или ваши расширения блокируют процесс аутентификации, вы можете вручную аутентифицироваться, добавив переменную окружения LINGODOTDEV_API_KEY
в ваш файл .env
:
LINGODOTDEV_API_KEY=...
Вы найдете токен в настройках проекта Lingo.dev Engine.
Вариант 2. Альтернативный поставщик LLM
В качестве альтернативы вы можете использовать модели от одного из поддерживаемых поставщиков LLM:
Добавьте ваш API-ключ для настроенного поставщика LLM в вашу среду:
# .env
GROQ_API_KEY=gsk_...
GOOGLE_API_KEY=...
OPENROUTER_API_KEY=...
MISTRAL_API_KEY=...
Примечание: Убедитесь, что вы активировали ваш аккаунт у поставщика LLM и приняли их Условия использования перед тем, как использовать его в Compiler.
Шаг 4. Добавьте провайдер
Оберните ваше приложение с помощью LingoProvider, чтобы включить переводы:
Next.js
В вашем layout.tsx
:
import { LingoProvider, loadDictionary } from "lingo.dev/react/rsc";
export default function Layout({ children }) {
return (
<LingoProvider loadDictionary={(locale) => loadDictionary(locale)}>
<html>
<body>{children}</body>
</html>
</LingoProvider>
);
}
React Router / Remix
В вашем root.tsx
:
import { LingoProvider } from "lingo.dev/react/client";
import { loadDictionary } from "lingo.dev/react/react-router";
export async function loader(args) {
return { lingoDictionary: await loadDictionary(args.request) };
}
export default function Root() {
const { lingoDictionary } = useLoaderData();
return (
<LingoProvider dictionary={lingoDictionary}>
<html>
<body>
<Outlet />
</body>
</html>
</LingoProvider>
);
}
Vite
В вашем main.tsx
:
import { LingoProviderWrapper, loadDictionary } from "lingo.dev/react/client";
ReactDOM.createRoot(document.getElementById("root")).render(
<LingoProviderWrapper loadDictionary={(locale) => loadDictionary(locale)}>
<App />
</LingoProviderWrapper>,
);
Шаг 5. Сборка и тестирование
Запустите сервер разработки:
npm run dev
Компилятор автоматически:
- Сканирует ваши React-компоненты на наличие текста для перевода
- Извлекает ключи переводов
- Генерирует переводы с помощью ИИ
- Создает оптимизированные файлы переводов в директории
lingo/
Теперь ваше приложение многоязычное! Компилятор создает версионированные словари, которые отслеживают изменения контента и переводят только измененные части.
Дополнительно: Добавьте переключатель языка
Добавьте переключатель языка, чтобы пользователи могли менять языки:
import { LocaleSwitcher } from "lingo.dev/react/client";
export function Header() {
return (
<header>
<LocaleSwitcher locales={["en", "es", "fr", "de"]} />
</header>
);
}
Следующие шаги
- Руководства для конкретных фреймворков: Next.js, React Router, Vite
- Как это работает: Понимание обработки на этапе сборки
- Расширенная настройка: Варианты кастомизации