← Концепции

Как работает Langsys

Langsys превращает предложения, уже имеющиеся в вашем интерфейсе, в систему перевода. Не нужно поддерживать файл ключей и не нужен этап извлечения при сборке: фраза в вашем коде служит и ключом поиска, и значением по умолчанию на базовом языке.

Смотреть · 0:30 Рабочий процесс

Фраза — это ключ

В традиционной i18n для каждой строки нужно придумывать идентификатор, хранить настоящий текст в файле локали и вечно поддерживать их синхронизацию. Langsys убирает этот промежуточный слой: вы пишете само предложение, и это предложение и есть ключ.

Традиционный
// Traditional i18n — indirection + a keys file to maintain
t('greetings.hello');            // what does this say? open en.json to find out

// en.json
{ "greetings": { "hello": "Hello, {name}!" } }
Langsys
// Langsys — the phrase IS the key and the base-language default
t('Hello, {name}!', 'Greetings', { name });

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

В реальном времени и непрерывно

Запускать команду извлечения не нужно. Пока ваше приложение отображается, SDK обнаруживает используемые им фразы. Новые фразы автоматически переводятся машинным переводом в фоновом режиме на целевые локали вашего проекта, а приложение загружает готовый каталог. Добавьте новое предложение сегодня — вскоре оно будет переведено, без повторного развёртывания пакета локали.

Жизненный цикл

  1. Ваш интерфейс отображает фразы с помощью t(), <Translate> и других подобных инструментов.
  2. В разработке ключ для записи позволяет SDK обнаруживать и регистрировать любые новые фразы.
  3. Langsys автоматически переводит их на все целевые локали вашего проекта.
  4. В продакшене ключ только для чтения загружает готовый каталог для локали пользователя.
  5. Смените локаль, и весь интерфейс мгновенно перерисуется с переводом, без перезагрузки.

В отличие от традиционной i18n. Не нужно вручную править en.json, нет косвенности вида t('some.nested.key'), нет этапа извлечения в сборке и нет запасных вариантов для отсутствующих ключей — запасным вариантом всегда служит исходное предложение.

Поиск по документации и Учебному центру