使用.po和.mo文件进行PHP语言翻译

时间:2014-01-07 10:44:59

标签: php linux gettext

我使用下面的命令将po转换为mo,使用php进行gettext转换。

exec("msgfmt messages.po -o messages.mo");

如果在CLi上执行相同的命令它工作正常,但通过php它不会将po转换为mo文件。

如果我错过了什么,请建议我。

2 个答案:

答案 0 :(得分:0)

让它运作的几个步骤:

  • 检查php.ini中的已禁用功能,并从列表中删除'exec':

    disable_functions选项= “”

  • exec可以受safe_mode的限制。你可以在httpd.conf中关闭safemode:

    php_admin_value safe_mode off

  • 检查您的网络文件夹中的.htaccess,可能会有一些设置被覆盖。

  • 检查用户php运行如下:

    echo exec('whoami');

    然后为使用过的文件和执行的命令添加正确的权限。

  • 在命令中使用完整服务器路径:

    exec(“/ full / path / to / msgfmt /full/path/to/messages.po -o /full/path/to/messages.mo“);

答案 1 :(得分:0)

我建议“使用工具”,并避免重新发明轮子。

看一下这段很好的开源代码:https://github.com/josscrowcroft/php.mo

  

php.mo是一些带输入(.po)文件的函数   生成输出(.mo)文件。用法很简单:

<?php
    require('php-mo.php');
    phpmo_convert( 'messages.po');
?>

希望这有帮助!