什么是用于php代码库i18n的好工具/框架?

什么是用于php代码库i18n的好工具/框架?,php,internationalization,Php,Internationalization,我一直在寻找一些选项来实现动态php应用程序的本地化和国际化。似乎有各种各样的工具可用,比如gettext和Yahoo的R3,我很想从开发人员和翻译人员那里听到哪些工具好用,哪些功能对于简化实现和翻译任务很重要。我们一直在修补,因为我们还是使用Zend框架。它有很好的文档记录,到目前为止非常可靠 在过去,我主要使用我自己的解决方案。这涉及到带有常量或变量的语言文件,这些常量或变量包含所有文本部分,稍后只在视图/模板中回显 至于gettext,在过去我听到过关于PHP的gettext实现有问题的参

我一直在寻找一些选项来实现动态php应用程序的本地化和国际化。似乎有各种各样的工具可用,比如gettext和Yahoo的R3,我很想从开发人员和翻译人员那里听到哪些工具好用,哪些功能对于简化实现和翻译任务很重要。

我们一直在修补,因为我们还是使用Zend框架。它有很好的文档记录,到目前为止非常可靠

在过去,我主要使用我自己的解决方案。这涉及到带有常量或变量的语言文件,这些常量或变量包含所有文本部分,稍后只在视图/模板中回显


至于gettext,在过去我听到过关于PHP的gettext实现有问题的参考文献,但我不能真正支持这一点,现在也没有任何参考文献。

PHP的gettext实现工作得非常顺利。使用po edit和gettext的po文件是处理本地化问题的最佳方法,但要记住,这种解决方案无法完全处理各种语言的复杂性。例如,gettext方法在复数形式上非常好,但我所看到的没有任何方法可以处理像共轭这样的事情


有关更多信息,请参见我的帖子:

pecl中有许多有用的扩展:


特别是,您可能想查看php intl,它提供了Unicode国际组件(ICU)中的大多数关键i18n函数。

Xataface可用于非常轻松地将任意php/MySQL应用程序国际化。它支持静态文本和数据库数据的翻译。您所要做的就是在应用程序中的几个地方添加一行或两行代码,这样就很好了


显示消息的数据库驱动解决方案并不总是好的解决方案,我在一个有超过15种语言的网站工作,翻译是一个问题

所以我们的设计是:

  • php mysql中的翻译应用程序(翻译访问等)
  • 然后用php语言编写翻译
  • 这些阵列也缓存在APC中,以加快站点速度
因此,要本地化不同的语言,您只需要执行一个include


double include似乎是一个非常聪明的主意!
<?php
include('lang/en.php');
include('lang/en_us.php'); // this file overrides few keys from the last one.
?>