微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法使用po文件进行翻译

如何解决无法使用po文件进行翻译

我的项目中有一个翻译库,我正在尝试显示一些翻译,但似乎无法使gettext正常工作。

当前结构如下:

Project
   test.PHP
   translations
      iso-3166-1
         ja.po

因此,在Project / translations / iso-3166-1内存储了所有.po文件

在test.PHP中,我得到了:

<?PHP

$locale = "ja";
$dir = "translations";

putenv("LANGUAGE=$locale");
bindtextdomain("iso-3166-1",$dir);
textdomain("iso-3166-1");

echo gettext("Australia")."\n";

但是,无论我尝试什么,它似乎都不会显示任何翻译。使用此方法不应该能够在我提供的路径中查找翻译。.我已经阅读了几次文档,但是似乎找不到任何解决方法

解决方法

环境变量LANGUAGE可以保存语言的优先级列表,例如ja:fr:es,但是在您的情况下,LANG仍必须将环境变量ja设置为主要语言1}}。

但是其余的设置也看起来不正确:

  • 缺少两个目录级别。您的语言环境文件应位于translations/ja/LC_MESSAGES中。
  • .mo个文件中读取翻译。您必须使用程序ja.poja.mo编译成msgfmt,然后将(!)安装为translations/ja/LC_MESSAGES/iso-3166-1.mo
  • 您错过了对setlocale(LC_ALL,'ja')的呼叫。然后,您也不需要修改环境变量。

本教程可能会帮助您入门:https://www.codeandweb.com/babeledit/tutorials/translation-with-gettext-and-php

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。