什么是php代码库的i18n的良好工具/框架?
我一直在寻找一些使动态php应用程序本地化和国际化的选项。似乎有各种可用的工具,例如gettext和Yahoo的R3,我很想听听开发人员和翻译人员的意见,即哪些工具好用,什么功能对减轻实现和翻译的工作很重要。
解决方案
我们一直在修改Zend_Translate,因为无论如何我们都使用Zend Framework。它已被很好地记录下来,并且到目前为止非常可靠。
过去,我几乎都使用自己的本地解决方案。其中涉及具有常量或者变量的语言文件,这些文件包含所有文本部分,并且稍后在视图/模板中回显。
至于gettext,过去我曾听说过有关PHP的gettext实现存在错误的参考,但是我不能真正支持它,现在也没有任何参考。
PHP gettext实现非常顺利。考虑到没有这种解决方案可以完全处理各种语言的复杂性,因此带有po edit和gettext的po文件是一种处理本地化的好方法。例如,gettext方法在复数形式上非常好,但是我见过的任何东西都不能处理诸如共轭之类的事情。
有关更多信息,请参见我的文章:如何建立多语言网站?
pecl有许多有用的扩展:
http://pecl.php.net/packages.php?catpid=28&catname=国际化
特别是,我们可能想查看php-intl,它提供了Unicode国际组件(ICU)的大部分主要i18n功能。
Xataface可用于轻松地国际化任意PHP / MySQL应用程序。它支持翻译静态文本和数据库数据。我们所要做的就是将一行或者两行代码添加到应用程序中的几个位置,这很好。
http://xataface.com/documentation/tutorial/internationalization-with-dataface-0.6
数据库驱动的解决方案来显示消息并不总是一个好方法,我在一个使用15种以上语言的网站上工作,翻译是一个问题。
所以我们的设计是:
- php-mysql中的翻译应用程序(翻译访问等)
- 然后翻译是用php arrrays编写的
- 这些阵列也缓存在APC中,以加快站点速度。
所以要本地化不同的语言,我们只需要做一个包含
喜欢
<?php include('lang/en.php'); include('lang/en_us.php'); // this file overrides few keys from the last one. ?>