Magic Translate vs. Lingui
Lingui — это библиотека i18n с открытым исходным кодом для JavaScript и React. Как и Magic Translate, она позволяет писать собственные слова в компонентах вместо ключей. Разница в том, что происходит дальше: с помощью Lingui вы извлекаете сообщения, переводите их и компилируете для всех языков. С помощью Magic Translate переводы создаются для вас.
С первого взгляда
| Magic Translate | Lingui | |
|---|---|---|
| Как вы пишете текст | Ваши собственные слова, завернутые в <T> | Ваши собственные слова, завернутые в <Trans> |
| Переводы | Перевод AI, созданный автоматически | Вы извлекаете сообщения и переводите их |
| Файлы сообщений | Нет | Один каталог на каждый язык, например PO-файл |
| Этапы сборки | Нет | Извлеките и скомпилируйте каталоги |
| Новые языки | Измените настройку language | Переводите каждое сообщение на новый язык |
| Множественное число и форматирование | Переведено как часть предложения | ICU сообщений с правилами множественного числа на каждом языке |
| Цена | Бесплатный план, затем ежемесячные планы в зависимости от использования | С открытым исходным кодом и бесплатно |
Чем отличается код
При использовании Lingui текст остается в компоненте, но каждое сообщение проходит через каталог:
import { Trans } from '@lingui/react/macro';const Cart = () => (<h2><Trans>Your shopping cart</Trans></h2>);// Then run `lingui extract`, translate the catalogs for every language,// run `lingui compile` and load the right catalog when the app starts.
В версии Magic Translate компонент выглядит аналогично, а переводы генерируются автоматически:
import { T } from '@magic-translate/react';const Cart = () => (<h2><T>Your shopping cart</T></h2>);
Когда выбирать Magic Translate
- Вам нравится писать свои собственные слова в компонентах, и вы не хотите вести каталоги.
- У вас нет переводчиков или вы хотите выпускать обновления, не дожидаясь переводов.
- Вы хотите добавить языки, не управляя проектом перевода.
Когда выбирать Lingui
- Весь текст должен быть переведен или рецензирован человеком.
- Вам нужны сообщения ICU для сложных множественных чисел и пола.
- Вам нужна бесплатная библиотека с открытым исходным кодом без внешних сервисов.
Переход с Lingui на Magic Translate
Поскольку текст в компоненте хранится в обеих библиотеках, перенос в основном сводится к замене компонентов и функций перевода: <Trans> становится <T>, а макрос t становится useT hook. Можно переносить по одному компоненту за раз.
Готовы попробовать? Следуйте инструкциям по началу работы, чтобы перевести первый компонент за пять минут.