代码之家  ›  专栏  ›  技术社区  ›  RobertPitt

PHP国际化

  •  11
  • RobertPitt  · 技术社区  · 15 年前

    我目前正在研究集成的最佳方法 i18n 到项目中。

    我考虑过几种方法,首先是存储字符串和相关区域设置的数据库方案,但问题是,选择字符串并不是那么容易,因为我不想执行这样的队列:

    SELECT text FROM locales WHERE locale = 'en_GB' AND text_id = 245543
    

    SELECT text FROM locales WHERE locale = 'en_GB' AND text_primary = 'hello'
    

    下一种方法是将它们存储在诸如 locales/en_gb/login/strings.php 然后尝试通过一个专门开发的类来访问它们:

    $Language = Registry::Construct('Language',array('en_GB'));
    echo $Language->login->strings->hello;
    

    问题是,我必须建立一个系统,通过管理面板开关更新这些文件,这是非常耗时的,不仅是建立系统来管理字符串,而且随着站点的增长实际管理字符串。

    • 还有什么其他对大系统有益的方法
    • 有自动翻译的方法吗?
    • 我应该坚持使用数据库方法,并为用户构建一个系统来翻译具有评级/建议更好版本的字符串吗?
    • 你以前试过什么系统,我应该调查一下还是完全避免它们。
    4 回复  |  直到 10 年前
        1
  •  8
  •   Gordon Haim Evgi    15 年前

    除了 gettext 已经提到, PHP 5.3 has native Internationalization support

    如果这不是一个选项,请考虑使用Zend框架 Zend_Translate , Zend_Locale 以及相关组件。 Zend_翻译 支持多种适配器,包括但不限于简单数组、getText、xmlTM等。

        2
  •  5
  •   halfdan    15 年前

    作为更大项目的一部分,我实现了一个XML转换实用程序。你可以找到它 here ,并且示例翻译文件是 here (英语)

        3
  •  5
  •   UkrStackOverflow    15 年前

    最令人印象深刻的研究方法是Drupal的实现。其次是Wordpress。使用gettex和.pot/.po/.mo进行本地化。而且,好的是有一个漂亮的开源软件,po编辑叫做poedit。它适用于Windows系统用户,具有更广泛的吸引力。它也适用于Mac和Linux。在这里查看: http://www.poedit.net/

        4
  •  3
  •   Graham Perks    15 年前

    看一下GetText( http://php.net/manual/en/book.gettext.php )图书馆。

    不要将文本放入数据库。那只会让翻译团队的生活变得艰难。

    推荐文章