处理多种自然语言的最有效方法

12

我目前正在使用基于CodeIgniter的PHP应用程序,已经到了支持多语言的阶段。

CodeIgniter自带的语言类是处理多语言的最有效方式吗?在PHP应用中有哪些常用的语言工具/库?

谢谢!

2个回答

12

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

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

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

echo $trans['MAIN_TITLE'];

个人而言,我觉得这很烦人,因为你需要编辑一些被数组键名淹没的、没有什么用的文本。这有时会非常恼人。更不用说如果你在多个地方使用它们,你还必须记住哪些键对应哪些字符串了。

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

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


谢谢你的回答,马克。非常感谢。你使用gettext的方法很有意思!我正在考虑做几乎相同的事情,但是使用数据库版本,它将被大量缓存,并在请求时更新。 - Industrial
希望能看到更多不同方法的示例,虽然并不是说你的解决方案不好! - Industrial
1
你可能想要下载ZF并查看Zend_Translate的各种适配器:http://framework.zend.com/manual/en/zend.translate.adapter.html,以获取一些额外的想法。它们几乎涵盖了所有流行的本地化方法。 - Mark
谢谢Mark,我会去看看Zend_translate。非常感谢! - Industrial

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接