.PO в .MO - программное преобразование (PHP) - PullRequest
3 голосов
/ 17 ноября 2011

Я планирую разрешить пользователям создавать файлы .POT / .PO через пользовательский интерфейс PHP как часть решения CMS.После того, как эти файлы были сгенерированы (легкий бит), я бы хотел, чтобы моя система автоматически преобразовывала эти файлы в файлы .MO в ответ на запрос пользователя (POST).

Я видел следующий вопрос оSO:

.po в .mo конвертер в php?

Я понимаю, что могу запустить msgfmt, используя PHP exec() функцию, ноэто похоже на решение Linux, если я прав?Как бы я сделал это в других операционных системах? Некоторый пример кода того, как это можно сделать на практике, также был бы очень полезен, если бы кто-нибудь был любезен продемонстрировать это.Это сильно отличается от работы, которую я обычно делаю!

На данный момент это только концепция, но я надеюсь, что я иду по правильному пути.Если у вас есть какие-либо дополнительные мысли / предложения относительно этого метода, я буду рад их услышать.Ниже приведена справочная информация.

Дополнительная справочная информация - не требуется:

Я получаю исходный текст на английском языке, анализируя простые файлы шаблонов, которые состоят из не более чем простого HTMLзвонки на <?php _('the gettext method'); ?>.Эти шаблоны анализируются при редактировании / сохранении и извлекаются языковые записи.Затем будет создан файл .POT.Теперь пользователю придется редактировать переводы вручную (через простой интерфейс, а не напрямую), чтобы обновить / подготовить все файлы .PO.Как только это будет сделано, мне нужно будет преобразовать их в файлы .MO, как и называется мой вопрос.

Ответы [ 3 ]

5 голосов
/ 17 ноября 2011

Существуют также переопределения только для PHP msgfmt, если вы ищете:

В качестве альтернативы также может быть веб-приложение Translate / Pootle с его скриптом php2po , но в нем также должны быть некоторые функции преобразования .mo ... (Ой нет это в Python.)

2 голосов
/ 17 ноября 2011

И PHP exec, и утилита gettext msgfmt GNU - это не только решение для Linux.Они работают на нескольких компьютерных системах.Как и в случае PHP, вы можете компилировать для нескольких платформ (как это делается естественным образом), поэтому команда exec доступна в системах с несколькими кодами, то же самое относится и к msgfmt.Начните с GNU gettext homepage , чтобы получить версию для вашей системы.

1 голос
/ 17 ноября 2016

попробуй https://github.com/oscarotero/Gettext.git

use Gettext\Translations;
chdir('....');
        $translations = Translations::fromPoFile('messages.po');
        $translations->toMoFile('messages.mo');
...