.PO到.MO – 编程转换(PHP)

我打算允许用户通过PHP用户界面生成.POT文件/ .PO文件,作为CMS解决scheme的一部分。 一旦生成这些文件(简单的位),我想让我的系统自动将这些文件转换成.MO文件以响应用户(POST)请求。

我已经看到了关于SO的以下问题:

.po到.mo转换器在PHP?

我知道我可以通过使用PHP的exec()函数来运行msgfmt ,但是如果我正确的话,那似乎只是一个Linux的解决scheme? 我如何在其他操作系统上执行此操作? 如果有人愿意示范,那么在实践中如何做到的一些示例代码也是非常有用的。 这与我平时的工作完全不同!

这只是目前的一个概念,但我希望我能沿着正确的路线前进。 如果您对此方法有任何其他想法/build议,我很乐意听到他们的意见。 背景信息如下。

其他背景信息 – 不需要:

我通过parsing简单的模板文件来检索原始的英文文本,这些文件只包含基本的HTML,并调用<?php _('the gettext method'); ?> <?php _('the gettext method'); ?> 。 这些模板在编辑/保存时被parsing,并且语言条目被检索。 .POT文件将被生成。 用户现在必须手动编辑翻译(通过简单的界面,而不是直接)来更新/准备所有的.PO文件。 一旦完成,我需要能够将它们转换为.MO文件,就像我的问题的标题一样。

Solutions Collecting From Web of ".PO到.MO – 编程转换(PHP)"

如果你正在寻找的是msgfmt ,也只有PHP的重新实现:

  • PHP-的msgfmt
  • php.mo / gh

作为替代方案,还将有Translate / Pootle webapp和它的php2po脚本,但是它里面也必须有一些.mo转换函数…(Ooops不,它是用Python编写的)。

PHP的execmsgfmt GNU gettext实用程序都不是Linux唯一的解决方案。 他们在多个计算机系统上工作。 和PHP一样,你可以编译多个平台(因为它是自然而然的),所以exec命令可以在多个系统上使用,同样适用于msgfmt 。 从GNU gettext主页开始获取您系统的版本。

尝试https://github.com/oscarotero/Gettext.git

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