用gettext但没有语言环境麻烦的i18n?

时间:2009-10-25 11:30:14

标签: php internationalization translation gettext

我正在寻找一种符合标准的方法来存储Web应用程序的多语言内容。到目前为止,我已经使用了自己的“translate()”函数,这些函数从数据库中的文件或字典表中读取数据。但是,如果您使用Web应用程序的不同副本,则在数据库表中保持字典最新是非常麻烦的。

我喜欢gettext,因为有很多可用的工具。但是,我为不同的平台开发应用程序。我绝对不愿意处理setlocale()和consorts的糟糕方式 - 即需要提供的几十种不同的区域设置字符串变体,以使其工作。永远不能。我有一套语言 - 比如de,en和es - 我想加载适当的字典并使用_()而不需要触及setlocale()或bindtexdomain()一次。

这是否可以使用gettext?或者有人知道另一个简单,小巧,快速(!)i18n的PHP解决方案,可以使用.po / .mo文件,最好不需要PHP扩展吗?

2 个答案:

答案 0 :(得分:3)

即使使用非标准语言环境,此方法也应该有效:

$locale = 'someWeirdLocale';

putenv('LC_MESSAGES=' . $locale);
bindtextdomain('domain', './locale');
textdomain('domain');

享受!

答案 1 :(得分:2)