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 та повідомлення 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, а ключ — у файлі.
Оновлено: