- 论坛徽章:
- 0
|
看了两个知名perl项目MT和bugzilla的源码,都没有用gettext来实现多语言,需要另外下载模块和模板语言包,使得语言包的翻译效率降低,而且无法使用站点多语言切换功能。在CPAN的网站上找到了Gettext模块0.01版本,说明还不够成熟。
http://search.cpan.org/~jbriggs/Gettext-0.01/Gettext.pm
这是上面给出的示例代码,不知道能不能用。- use strict;
- use diagnostics;
- use POSIX 'locale_h';
- use locale;
- use Gettext;
- setlocale(LC_CTYPE, 'es_ES');
- my $gt = new Gettext();
- $gt->bindtextdomain("messages", "/root/work");
- print $gt->gettext("flower"),"\n";
- print $gt->gettext("yellow"),"\n";
- print $gt->dgettext("messages", "flower"),"\n";
- print $gt->dgettext("messages", "yellow"),"\n";
- print $gt->dcgettext("messages", "flower", "fr_FR"),"\n";
- print $gt->dcgettext("messages", "yellow", "fr_FR"),"\n";
- print $gt->textdomain(),"\n";
- print $gt->textdomain(''),"\n";
复制代码 我个人为,gettext与数组方式的语言包相比,优势主要有两点:po文件编译为二进制的mo文件,查找locale字符串效率较高;与程序的模块和模板完全分离,让语言包的翻译变得简单,在poedit的帮助下任何人都可以制作gettext语言包。 |
|