Перевод файлов .po gettext
Файл .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
Контекст меняет слово
«Открыть» как пункт меню и «Открыть» как глагол переводятся по-разному. 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