提问人:wioota 提问时间:10/1/2008 最后编辑:Robwioota 更新时间:1/9/2009 访问量:1956
php 代码库的 i18n 有哪些好的工具/框架?
What are good tools/frameworks for i18n of a php codebase?
问:
我一直在寻找一些选项来实现动态 php 应用程序的本地化和国际化。似乎有各种各样的工具可用,例如 gettext 和 Yahoo 的 R3,我有兴趣听取开发人员和翻译人员的意见,了解哪些工具很好用,哪些功能对于简化实现和翻译任务很重要。
答:
我们一直在修补Zend_Translate,因为我们无论如何都使用 Zend 框架。它有据可查,到目前为止非常可靠。
过去,我几乎主要使用我自己开发的解决方案。这涉及带有常量或变量的语言文件,这些常量或变量包含所有文本部分,稍后只是在视图/模板中回显。
至于 gettext,过去我听说过关于 PHP 的 gettext 实现有问题的参考资料,但我无法真正支持它,我现在也没有任何参考资料。
PHP gettext 实现工作非常顺利。带有 po edit 和 gettext 的 po 文件是处理本地化的好方法,请记住,没有这种解决方案可以完全处理各种语言的复杂性。例如,gettext 方法在复数形式上非常好,但我见过的任何东西都无法处理共轭之类的事情。
有关更多信息,请参阅我的帖子: 如何构建多语言网站?
pecl 中有许多有用的扩展: http://pecl.php.net/packages.php?catpid=28&catname=Internationalization
特别是,您可能想查看 php-intl,它提供了 International Components for 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.
?>
评论