|Labs
Заказать демоПлатформа
React (Lingo Compiler)
Альфа
React (MCP)React (i18n)
CLI прежней версии (v0)
Устаревшее

Обзор

  • @lingo.dev/react

Начало работы

  • Быстрый старт

Справочник

  • LingoProvider
  • useLingo
  • Множественное число и select
  • Форматирование

Быстрый старт

В этом руководстве шаг за шагом показано, как перевести один React-компонент от начала до конца: установить рантайм, обернуть приложение, написать перевод, извлечь его и отрендерить результат в другой локали.

1

Установите рантайм

bash
npm install @lingo.dev/react

Если вы используете Next.js, дополнительно установите @lingo.dev/react-next — он добавляет хелперы с учётом роутера поверх того же рантайма.

2

Оберните приложение в LingoProvider

tsx
import { LingoProvider } from "@lingo.dev/react";
import esMessages from "./locales/es.json";

export function App() {
  return (
    <LingoProvider locale="es" messages={esMessages}>
      <Page />
    </LingoProvider>
  );
}

messages — это объект, где ключами выступают хэши содержимого, — именно в таком виде CLI записывает данные в locales/<locale>.json. При первом запуске он будет пустым, и это нормально: непереведённые строки просто подставляются в исходном виде.

3

Напишите перевод в исходном коде

tsx
import { useLingo } from "@lingo.dev/react";

function Page() {
  const l = useLingo();
  return <h1>{l.text("Hello", { context: "Hero heading" })}</h1>;
}

l.text(source, { context }) — основной способ вызова. context обязателен: он помогает переводчикам различать строки, которые в английском пишутся одинаково, но в других языках переводятся по-разному (например, "Save" как глагол и "Save" как существительное).

4

Извлеките строку

bash
lingo extract

Команда сканирует исходный код, вычисляет стабильный хэш для "Hello" + контекста и записывает его в файл исходной локали (locales/en.jsonc по умолчанию). Запускайте её заново после любых изменений — извлечение идемпотентно.

5

Отправьте на перевод

bash
lingo push --backfill-missing

CLI загружает исходный файл, просит движок перевести его на настроенные целевые локали и скачивает результат обратно в locales/<locale>.json. После этого при каждой отправке будут передаваться только изменения.

6

Отрендерите переведённый текст

Импортируйте JSON-файл для локали, в которой рендерится ваше приложение, — или выбирайте его динамически в зависимости от пользователя — и передайте в LingoProvider. Вызов хука из шага 3 остаётся тем же: l.text("Hello", ...) теперь возвращает переведённое значение, потому что хэш совпадает с тем, что было скачано.

Вот и весь цикл: пишете код на исходном языке, извлекаете, отправляете, рендерите. Не нужно поддерживать отдельное пространство i18n-ключей — исходная строка и есть ключ (через хэш).

Куда двигаться дальше#

  • LingoProvider — как должен выглядеть messages, когда стоит вкладывать провайдеры друг в друга и как переключать локаль.
  • useLingo — полный API хука, включая l.rich() для React-поддеревьев внутри переводов.
  • Plurals and select — как правильно обрабатывать "1 item" / "N items".

Эта страница была полезной?

Max PrilutskiyMax Prilutskiy·Обновлено около 1 месяца назад·2 минуты чтения