Найти тему
Мастер Marx

Декомпилировать файл mo в файл po

Экран запуска программы Poedit
Экран запуска программы Poedit

Лично я столкнулся с этим форматом файла локализации .mo в своей любимой программе FL Studio 20. Где Вы с ним столкнулись большого значения не имеет. Важно, чтобы Вы понимали, что файл локализации – это языковой файл программы.

2 слова о технологии

Технология использующая данный формат локализации называется gettext. Программа компилирующая .mo – называется Poedit. Исходным файлом перевода для компиляции .mo является файл .po. po – это текстовый файл формата 65001 (UTF-8) без BOM. Без bom - это без метки юникода вначале, поскольку .po использует код php. Как создается файл перевода .po? Теоретически, если я разработчик приложения и у меня есть исходный код, строки пользовательского интерфейса которого я хочу локализовать, то я ставлю такую библиотеку https://github.com/landrix/Gettext-for-Delphi/releases/tag/v1.2.2 с помощью которой создаю файл .po программным способом.

Теперь создам .po с помощью программы Poedit, если я разработчик

1. Скачаем и установим программу Poedit https://poedit.net/download

2. Откроем Poedit. В экране запуска выберем меню Файл – Создать.
Язык перевода – русский – ОК.

3. В окне программы выберем меню Файл - Сохранить как - default.po - Сохранить.

4. Щелкнем по файлу default.po – Извлечь из исходного кода – вкладка «Папки с исходными файлами». Под рамкой «Папки» выберем кнопку +
и опцию «Добавить папки» или «Добавить файлы» - ОК.

Теперь создам .po с помощью программы Poedit, если я пользователь

Исходного кода у меня нет, есть только файл .mo, который требуется декомпилировать. Функция декомпиляции .mo в бесплатной версии Poedit отсутствует, поэтому пойдем другим путем:

1. В директории C:\Program Files (x86)\Poedit\GettextTools папку bin копируем в папку «Документы» и переименуем в GettextTools.

2. В этой папке создадим файл test.bat со следующим содержанием:

msgunfmt.exe default.mo -o default.po

3. Файл default.mo, подлежащий декомпиляции поместим в эту же папку.

4. Запустим файл .bat.

5. Откроем полученный файл .po в Poedit и отредактируем строки msgstr "…"
(вообще-то в самом Poedit вы строк с таким именем не увидите. Это только если файл .po открыть в специализированном текстовом редакторе, типа AkelPad).

6. Сохраним изменения обратно в .mo и поместим в новую директорию Languages\ru\LC_MESSAGES или locale\ru\LC_MESSAGES

Внешний вид файлов локализации mo, po
Внешний вид файлов локализации mo, po

Вот в принципе, как это работает. На этом все, желаю удачи в переводе.