我正在按照BryanH在这里的回答进行操作:使用Intl库中的相当于gettext()的方法?,并尝试使用php-intl实现本地化(翻译),但我遇到了与此人相同的问题:ResourceBundle返回NULL没有任何错误被引发。
他提到他使用了一个工具创建了dat文件(我无法弄清楚如何操作),而前一个回答中的人似乎只是使用扩展名为.res的txt文件。
我该如何正确地使用php-intl和ResourceBundle实现本地化,我做错了什么?
目标是有多个包含不同语言的数据文件,以便我可以执行类似于
$t = new Translator();
$t->setResource(new \ResourceBundle('es', 'locales_folder/'));
$t->echo("somestring"); // "el stringo"
和第一篇答案中所说的一样,目标是拥有易于编辑的文件,这样我就可以将它们交给翻译人员进行修复、更新等操作。我意识到我可以通过一个简单的文本文件来实现自定义解决方案,该文件被解析并在第一次请求时保存到内存缓存中,然后持久化并从中提供服务而无需重新读取.dat文件,但我更愿意采用建议的路线。
编辑:为了让它出现在那里——我成功地使用gettext实现了同样的事情,这很容易——除了一个在Linux系统上持续存在的错误(http://www.php.net/manual/en/book.gettext.php#91187) - 但我希望尽可能依赖更现代和全面的intl扩展。