【问题标题】:What are good tools/frameworks for i18n of a php codebase?php 代码库的 i18n 有哪些好的工具/框架?
【发布时间】:2010-09-14 10:01:48
【问题描述】:

我一直在寻找一些用于启用动态 php 应用程序的本地化和国际化的选项。似乎有各种可用的工具,例如 gettext 和 Yahoo 的 R3,我很想听听开发人员和翻译人员的意见,了解哪些工具好用,哪些功能对简化实施和翻译任务很重要。

【问题讨论】:

    标签: php internationalization


    【解决方案1】:

    PHP gettext 实现工作非常顺利。使用 po edit 和 gettext 的 po 文件是处理本地化的最佳方式,请记住,没有任何一种解决方案可以完全处理各种语言的复杂性。例如,gettext 方法在复数形式上非常好,但我所见过的任何东西都不能处理诸如共轭之类的事情。

    欲了解更多信息,请参阅我的帖子:How do you build a multi-language web site?

    【讨论】:

      【解决方案2】:

      我们一直在修改Zend_Translate,因为无论如何我们都使用 Zend 框架。它有很好的记录,到目前为止非常可靠。

      过去,我几乎都使用自己的自制解决方案。这涉及具有常量或变量的语言文件,这些常量或变量包含所有文本部分,并且稍后会在视图/模板中回显。

      至于 gettext,过去我听说过有关 PHP 的 gettext 实现有问题的参考资料,但我无法真正支持,现在也没有任何参考资料。

      【讨论】:

        【解决方案3】:

        pecl 中有许多有用的扩展: http://pecl.php.net/packages.php?catpid=28&catname=Internationalization

        特别是,您可能想查看 php-intl,它提供了 International Components for Unicode (ICU) 中的大部分关键 i18n 功能

        【讨论】:

          【解决方案4】:

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

          所以我们的设计是:

          • php-mysql 中的翻译应用(翻译访问等)
          • 然后翻译写在 php 数组中
          • 这些数组也缓存在 APC 中以加快站点速度。

          所以要本地化不同的语言,您只需要包含

          喜欢

          <?php
          include('lang/en.php');
          include('lang/en_us.php'); // this file overrides few keys from the last one.
          ?>
          

          【讨论】:

          • 双重包含似乎是一个非常聪明的主意!
          【解决方案5】:

          Xataface 可用于轻松国际化任意 PHP/MySQL 应用程序。它支持静态文本和数据库数据的翻译。您所要做的就是在应用程序的几个地方添加一两行代码就可以了。

          http://xataface.com/documentation/tutorial/internationalization-with-dataface-0.6

          【讨论】:

            猜你喜欢
            • 2010-12-31
            • 2011-06-13
            • 2010-12-22
            • 1970-01-01
            • 1970-01-01
            • 2021-10-31
            • 1970-01-01
            • 2010-09-23
            • 1970-01-01
            相关资源
            最近更新 更多