Polyglot
Строки вашего приложения и сайта на 43 языках, переведённые вашей собственной моделью и проверенные построчно.
- Linux or macOS
- Python 3.9+
- Local LLM
- 6 file formats

Что он делает
Polyglot берёт английские строки, которые уже есть в вашем приложении и на сайте, и переводит их на 42 дополнительных языка в тех файлах и папках, которые ожидает каждая платформа, используя модель, которую вы запускаете сами. Каждая строка возвращается проверенной: если плейсхолдер, тег или сохраняемое имя потеряны, или ответ не соответствует алфавиту языка, строка запрашивается повторно, а строка, которая всё ещё не проходит проверку, исключается и фиксируется в отчёте, а не отправляется в работу сломанной.
- Форматы, которые вы используете. Файлы сообщений JSON (i18next, vue-i18n, next-intl, react-intl), Flutter ARB, Android strings.xml, Apple .strings, gettext .po и документы Markdown, записанные в values-de, de.lproj, app_de.arb или locale/de.
- Проверка каждой строки. %1$s, {name}, {{count}}, HTML-теги, переносы строк, URL и ваши сохраняемые имена должны вернуться точно; правильный алфавит, никаких пустых или «убежавших» ответов, ничего не оставлено на английском.
- Настоящие формы множественного числа. Для русского языка используются формы one, few, many и other, для арабского — шесть форм, для японского — одна форма: Android plurals и ICU-сообщения следуют правилам каждого языка.
- Только то, что изменилось. Каждый удачный перевод запоминается, поэтому при редактировании одной английской строки отправляется одна строка, а не весь файл.
- Ваш тон и ваши термины. Описание продукта, тон, имена, которые никогда не переводятся, и глоссарий включаются в каждый запрос, а ваши комментарии передаются как заметки.
- Ваша модель, ваша машина. Любой OpenAI-совместимый сервер: vLLM, llama.cpp, Ollama или LM Studio, или хостинговый API, если вы выберете его. Никакой оплаты за слово.
Протестировано на реальной модели
- Реальная модель, шесть форматов, пять алфавитов: пример приложения из 70 строк в JSON, Flutter ARB, Android, Apple .strings, gettext и Markdown, переведённый на немецкий, русский, японский, арабский и испанский, с открытой моделью на 27 миллиардов параметров на нашей собственной машине: 346 из 350 строк прошли проверки на входе за 7,5 минут на загруженном общем сервере.
- Четыре строки, которые не прошли, были ошибками в наших проверках, а не в модели: немецкое заимствование, адрес электронной почты и сообщение с формой множественного числа на японском. Мы исправили проверки; следующий запуск отправил только эти четыре строки и записал все 350 за 45 секунд.
- Формы множественного числа правильные с первого раза: one, few, many и other для русского, шесть форм для арабского, одна форма для японского.
- Все 42 языка: 22 строки из примера на все языки, которые знает Polyglot, от амхарского до традиционного китайского: 924 из 924 строк записаны за 15 минут.
- И то, что не видят проверки: на кхмерском «Вы не в сети» вернулось как «вы в сети». Это безупречный кхмерский, поэтому проверка прошла. Именно поэтому в документации рекомендуется привлекать носителя языка для самых важных строк.
Что внутри
Переводчик
Пакетная отправка в вашу модель, проверки, повторные попытки с указанием проблемы, память переводов, параллельная обработка языков.
Шесть форматов
Читатели и писатели, сохраняющие экранирование, структуру папок и правила множественного числа для каждой платформы.
Проверки
Можно использовать отдельно: проверьте уже имеющийся перевод по его английскому оригиналу.
Пример приложения
Одно небольшое приложение во всех шести форматах с конфигурацией, чтобы попробовать перед запуском своего.
Требования
- Linux или macOS с Python 3.9 или новее; ничего не нужно устанавливать через pip.
- Сервер моделей, совместимый с OpenAI, с мультиязычной инструктивной моделью; у нас — открытая модель с 27 миллиардами параметров.
Полезно знать
- Проверки ловят то, что ломает приложение, а не смысловые ошибки: дайте носителю языка прочитать карточку товара, страницу оплаты и юридический текст.
- Записи множественного числа gettext в этой версии остаются на английском.
- Скорость зависит от вашей модели.
- Проверки бесплатны и с открытым исходным кодом: translation-checks на GitHub. Набор добавляет переводчик, шесть форматов, формы множественного числа, память переводов и год обновлений.
From our field notes
Вопросы
Какие языки?
Арабский, амхарский, болгарский, чешский, немецкий, греческий, испанский, персидский, финский, филиппинский, французский, шотландский гэльский, иврит, гаитянский креольский, венгерский, армянский, индонезийский, итальянский, японский, кхмерский, каннада, корейский, македонский, малайский, нидерландский, норвежский, оромо, панджаби, польский, португальский (Бразилия), румынский, русский, словацкий, словенский, сербский, шведский, тайский, турецкий, украинский, вьетнамский, а также китайский (упрощенный и традиционный) с английского.
Нужен ли GPU?
Самому Polyglot не нужен; это решает ваш сервер моделей. Небольшая модель работает на CPU, медленно; GPU превращает большой файл на многих языках в дело нескольких минут.
Что происходит со строкой, которую модель перевела неверно?
Её запрашивают повторно отдельно, указав проблему. Если ошибка сохраняется, строку исключают из файла, поэтому в приложении для неё отображается английский вариант, а в отчёте о запуске она указана с причиной. Ничего сломанного не записывается.
Можно ли использовать хостинговый API вместо локального?
Да: любой сервис с эндпоинтом чата, совместимым с OpenAI-compatible. Укажите его базовый URL и имя модели в polyglot.json, а ключ — в файле.
Обновлено: