PHP gettext函数只返回原始的非翻译字符串

我正在尝试使用gettext添加本地化支持到我的网站.我已经按照各种指南介绍了如何设置gettext并完成了以下操作:

我在项目目录的根目录中创建了以下文件和目录:

test.PHP

locale/
  de_DE
    LC_MESSAGES
       messages.mo
       messages.po

  en_GB
    LC_MESSAGES
       messages.mo
       messages.po

我用Poedit来创建上面的.po和mo文件.我已经使用Unix行结尾,UTF-8并相应地设置语言和国家.

然后我创建了一个名为test.PHPPHP脚本,其中包含以下代码

<?PHP

  define('LOCALE','de_DE');

  // Set up environmental variables
  putenv("LC_ALL=" . LOCALE);
  setlocale(LC_ALL,LOCALE);
  bindtextdomain("messages","./locale");
  bind_textdomain_codeset("messages",LOCALE .".utf8");
  textdomain("messages");

  die(gettext('This is a test.'));

?>

我导入了“这是一个测试”的文字.到Poedit并提供翻译并保存.

但由于某种原因,test.PHP脚本只会输出未翻译的原始文本.它拒绝加载翻译文件的版本.

值得注意的是服务器正在运行Linux(Ubuntu),
Apache 2.2.11和PHP 5.2.6-3ubuntu4.5.我检查了PHPinfo()并启用了gettext.

您的问题可能与系统上缺少的区域设置有关.请安装德语区域设置,一切都应该工作:
sudo apt-get install language-pack-de-base

然后,发出以下命令,您应该看到德语区域设置:

locale -a

之后,假设您在所描述的目录结构中仍然具有.po和.mo文件,则以下代码应该可以正常工作:

<?PHP

  setlocale(LC_ALL,'de_DE.UTF-8');
  bindtextdomain('messages','./locale');
  textdomain('messages');

  echo gettext('This is a test.');

  ?>

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...