【问题标题】:Most effective way working with multiple natural languages使用多种自然语言的最有效方式
【发布时间】:2011-02-14 08:16:14
【问题描述】:

我目前正在使用基于 PHP 的 codeigniter 应用程序,并且已经到了将要使用多种语言的地步。

codeigniters 自己的语言类是处理语言的最有效方法吗? PHP 应用程序中是否有任何特定的语言工具/库?

谢谢!

【问题讨论】:

    标签: php codeigniter internationalization


    【解决方案1】:

    我从未使用过 CI_Language,但它似乎使用语言数组来进行翻译。

    这种类型方法的过度简化示例:

    $trans = array(
        'MAIN_TITLE' => 'Title Here'
    );
    
    echo $trans['MAIN_TITLE'];
    

    我个人觉得这很烦人,因为您正在编辑的视图中混杂着数组键名而不是有用的文本。这有时会很烦人。更不用说如果您在多个地方使用它们,您必须记住哪些键与哪些字符串相关。

    我使用Gettext,我觉得这更容易。你只需要用 translate 方法包装你的字符串:_()。然后,一旦你完成了你的应用程序,你打开 PoEdit 并创建新的语言文件。 PoEdit 将解析我所有的源文件,寻找像 <?php echo _('Title here') ?> 这样包装的字符串,并将它们插入到 .po 语言文件中。然后,您可以逐个字符串并在 PoEdit 中轻松翻译文本。这样做的好处是您可以在 PoEdit 中获得源翻译,而不是在某些包含文件中使用无意义的数组键名

    这一切让我的生活变得更加轻松,因为我可以在每周五一键更新我的语言文件。任何新的或修改过的翻译都将自动添加到我的语言文件中,任何未使用的翻译都将自动删除。我将文件发送到我的 3 个国际分支机构进行翻译,我的更改和更新的语言文件已准备好在星期一早上部署

    【讨论】:

    • 感谢您的回答,马克。非常感激。您使用 gettext 的方法很有趣!我正在考虑做几乎相同的事情,但数据库版本将被大量缓存并根据请求进行更新。
    • 很高兴看到更多关于解决此问题的不同方法的示例,而不是说您的解决方案不好!
    • 您可能需要下载 ZF 并查看 Zend_Translate 的各种适配器:framework.zend.com/manual/en/zend.translate.adapter.html 以获得更多想法。它们几乎涵盖了所有流行的本地化方法
    • 感谢 Mark,将检查 Zend_translate。非常感谢!
    【解决方案2】:

    您可能想看看 php intl 库。 http://php.net/intl

    【讨论】:

      猜你喜欢
      • 2015-10-30
      • 2012-07-18
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多