Переклад файлів gettext .po
Файл .po має текстові ключі: англійське речення є ключем. Контексти, форми множини та змінні у стилі Python розташовані навколо цього тексту. KAERIS зберігає їх і записує форми множини, необхідні для цільової мови.
KAERIS переклав цю сторінку та перевірив кожен рядок зворотним перекладом. Носій мови ще не переглядав її. Оригінал англійською
Як побудований файл .po
Кожен запис має msgid (оригінальний текст) і msgstr (переклад). msgctxt розрізняє два однакові речення. Для множини використовують msgid_plural і по одному msgstr[n] для кожної форми, а рядок Plural-Forms у заголовку вказує, скільки форм має мова.
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: app/views.py:12
msgid "Welcome back, %(name)s!"
msgstr ""
#: app/views.py:20
msgid "%(count)d file"
msgid_plural "%(count)d files"
msgstr[0] ""
msgstr[1] ""
msgctxt "menu"
msgid "Open"
msgstr ""
msgctxt "verb"
msgid "Open"
msgstr ""
На що звертати увагу у перекладах .po
Контекст змінює слово
“Open” як пункт меню і “Open” як дієслово перекладаються по-різному. KAERIS читає контекст разом із текстом і позначає, коли одне й те саме джерельне слово перекладено двома способами. У реальному прикладі нижче обидва переклади — “Öffnen”, що правильно німецькою, і контексти збереглися у файлі.
Форми множини відрізняються залежно від мови
В англійській дві, у російській три, в арабській шість. У російському прикладі заголовок стає
nplurals=3, і кожен запис множини має триmsgstrслоти.Змінні у стилях Python і C
%(name)s,%d,{name}мають повернутися без змін, інакше додаток видасть помилку під час виконання.Заголовок і посилання
Заголовок перебудовується з урахуванням мови та правила множини. Коментарі з посиланнями на джерело (
#:) не переносяться у перекладений файл.
Реальний запуск: перекладено німецькою та перевірено
Реальний запуск, 27 жовтня 2026, без ручних правок: kaeris translate en.po --langs de з kaeris 0.2.35, 3.9 секунди, модель google/gemini-2.5-flash-lite, стандарт безкоштовного рівня. Нижче — німецький файл, який він створив, і що каже kaeris check про нього.
# Generated by KAERIS i18n Tool # Language: de msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language: de\n" msgid "Welcome back, %(name)s!" msgstr "Willkommen zurück, %(name)s!" msgid "%(count)d file" msgid_plural "%(count)d files" msgstr[0] "%(count)d Datei" msgstr[1] "%(count)d Dateien" msgctxt "menu" msgid "Open" msgstr "Öffnen" msgctxt "verb" msgid "Open" msgstr "Öffnen"
$ kaeris check --source en.po --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
Що KAERIS робить з цим
Записи та контексти збережені
Текстові ключі,
msgctxtі пари множини повертаються в тому ж порядку.Форми множини відповідно до цільової мови
Кількість
msgstr[n]відповідає мові, перевірено на прикладі російської.Безкоштовна перевірка для цього формату
Безкоштовна перевірка на /check читає цей формат і працює без ключа чи акаунта. Команда терміналу
kaeris checkтакож його читає: вона підтримує всі 13 форматів з kaeris 0.2.35, з тими ж правилами і нічого нікуди не відправляє.
Запустіть у три кроки
Встановіть CLI
Виконайте
pip install kaeris.Перекладіть каталог
Запустіть
kaeris translate django.po --langs de,ja. Вихідні файли названі за мовою.Перевірте результат
Завантажте оригінал і перекладений .po файл на безкоштовній сторінці перевірки, щоб побачити втрачені змінні та невідповідності термінів.
pip install kaeris kaeris translate locale/en/LC_MESSAGES/django.po --langs de,ja --verify
Запитання
Чи підтримує він форми множини для російської чи арабської?
Заголовок множини і кількість msgstr[n] слотів записуються для цільової мови. У прикладі з російською джерельний файл створив nplurals=3 і три слоти.
А як щодо msgctxt?
Контекст залишається прикріпленим до запису, тому два однакові джерела з різними контекстами — це окремі рядки. Перевірка попереджає, якщо вони повертаються з різними перекладами.
Це безкоштовно?
Так, без облікового запису: 10 000 символів на файл і до 8 мов за один запуск. Безкоштовний API-ключ збільшує ліміт файлу до 50 000 символів. Довічна ліцензія коштує $79 один раз, за вашим власним ключем OpenRouter; місячні плани починаються від $19. Ціни
Чи можу я запускати його з терміналу або в CI?
Так. pip install kaeris, потім kaeris translate django.po --langs de,ja. Див. також Django. GitHub Action виконує той самий переклад у pull request. Документація CLI · GitHub Action
Продовжуйте
Довідник CLI · Довідник перевірки · Переклад у браузері · Безкоштовна перевірка · Конвертація форматів · Псевдолокалізація
Інші формати: JSON · YAML · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML