我在这里按照 BryanH 的回答中的说明进行操作:gettext() 等效于 Intl library?并尝试使用 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"
..就像第一个答案中的人一样。此外,目标是拥有易于编辑的文件,因此我可以将它们提供给翻译人员进行修复、更新等。我意识到我可以通过一个简单的文本文件轻松地使用自定义解决方案来做到这一点,该文件在第一次请求时被解析并保存到 memcache 中,然后它会持续存在并从中获取服务,而无需重新读取 .dat 文件,但我宁愿走这里建议的路线。
编辑:只是为了把它拿出来——我用 gettext 成功地实现了同样的事情,而且很容易——除了一个在 linux 系统中持续存在的错误(http://www.php.net/manual/en/book.gettext .php#91187 ) - 但如果可能的话,我想依赖更现代和更全面的 intl 扩展。