Конвертер PO в MO
Компилируйте файл источника трансляции .po GNU gettext в двоичный файл .mo, готовый для PHP, Python, WordPress или любого приложения на основе gettext. Работает полностью в вашем браузере — без загрузки.
Ввод
Читается как текст UTF-8 и вставляется прямо в поле выше.
Вывод
Руководства
Файл .po — это редактируемая часть трансляции GNU gettext — простой текст, одна пара msgid/msgstr для каждой строки. Однако ничто, что действительно загружает трансляции во время выполнения, не читает её напрямую: PHP, Python, glibc и WordPress все ожидают скомпилированный двоичный формат .mo (Machine Object), обычно производимый инструментом командной строки msgfmt. Этот конвертер выполняет тот же шаг компиляции в вашем браузере, поэтому вы можете перейти от .po к .mo без установки gettext или цепочки инструментов PHP/Python.
Как использовать
Вставьте содержимое вашего файла .po в текстовое поле или загрузите файл напрямую — в любом случае файл никогда не покидает ваш браузер. Нажмите Компилировать в MO и загрузите полученный messages.mo.
Что поддерживается
- Многостроковые строки —
msgid/msgstr, разделённые на несколько кавычек, объединяются обратно, как и вmsgfmt. - Формы множественного числа —
msgid_pluralи индексированныеmsgstr[0],msgstr[1], … компилируются в закодированное нулём множественное число gettext, поэтому поиск черезngettext()/_n()работает правильно. - Контексты сообщений —
msgctxtвключается в скомпилированный ключ ровно так, как ожидаютpgettext()/_x(). - Нечёткие и непереведённые записи пропускаются, соответствуя поведению
msgfmtпо умолчанию (без--use-fuzzy). Строка, помеченная как#, fuzzy, — это грубое предположение машины, которое переводчик не подтвердил — отправка её как реального перевода будет хуже, чем возврат к исходному тексту, поэтому она исключается из скомпилированного каталога, а не доверяется. - Устаревшие записи (с префиксом
#~, оставленныеmsgmergeкогда строка исчезает из источника) удаляются, как и при реальной компиляции.
Конфиденциальность
Всё происходит на клиентской стороне — синтаксический анализ текста .po и сборка двоичного файла .mo выполняются в вашем браузере. Ничего не загружается на сервер.
Почему мой переведённый текст не появляется в файле .mo?
Проверьте, помечена ли строка как #, fuzzy в файле .po. Нечёткие строки намеренно исключаются из скомпилированного каталога (см. выше) — удалите флаг fuzzy после того, как вы подтвердите, что перевод правильный, затем перекомпилируйте.
Работает ли скомпилированный файл с WordPress?
Да — WordPress (и любой другой потребитель PHP gettext/Gettext_PO) читает стандартные файлы .mo. Поместите скомпилированный файл в папку languages/ вашей темы или плагина, используя ожидаемое имя файла <textdomain>-<locale>.mo.
Мне нужно пойти в другую сторону, от скомпилированного .mo обратно к редактируемому .po
Это отдельный шаг декомпиляции — инструмент MO в PO планируется. А пока большинство редакторов, поддерживающих gettext (Poedit, msgunfmt из самого gettext), могут открывать файлы .mo непосредственно.
Для редактирования других структурированных форматов трансляции/конфигурации см. Форматтер файлов Java Properties.
Другие способы использовать этот инструмент
REST API
curl -X POST https://api.iotools.cloud/v1/tool/po-to-mo \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"po": "#\nmsgid \"\"\nmsgstr \"\"\n\"Content-Type: text/plain; …"
}'Подставьте свой собственный ключ из аккаунта. Поля инструмента — это тело запроса, без обёртки.
Спросите у ИИ-агента
Use the IOTools `po-to-mo` tool (PO to MO Converter) on this input:
YOUR_INPUT_HEREВставьте это любому агенту, подключённому к MCP-серверу IOTools, и добавьте свой ввод.
Виджет для встраивания
<iframe
src="https://iotools.cloud/embed/po-to-mo/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="Конвертер PO в MO — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>Вставьте это на свою страницу — бесплатно, без ключа, нужна лишь обратная ссылка.
| Стоимость вызова | От 5 кредитов |
|---|