如何在我的Perl脚本中添加国际化?
时间:2020-03-06 15:03:16 来源:igfitidea点击:
我正在为Perl编写的成熟CGI应用程序引入多语言支持。我最初考虑过使用Perl哈希(存储在磁盘上)来为翻译文件滚动自己的解决方案,但是后来我遇到了一个CPAN模块,该模块似乎可以完成我想要的操作(i18n)。
有没有人在Perl中有过国际化(特别是i18n CPAN模块)的经验? i18n模块是多语言支持的首选方法还是我应该重新考虑自定义解决方案?
谢谢
解决方案
在回答有关此问题的问题时,其中一项建议建议阅读这篇有关本地化perl代码的文章。
有关于软件本地化的Perl Journal文章。它将为我们提供添加多语言支持时可以期待的一个好主意。它写的精美而幽默。
具体来说,该文章是由编写和维护Locale :: Maketext的人们撰写的,因此,我建议仅根据痛苦程度来推荐该模块,显然作者必须忍受才能使其正常工作。
如果我们有时间,那么请看看Jifty框架中I18N的完成方式,尽管起初相当令人困惑,它非常优雅且可用。
它们使_
重载,因此我们可以在代码中的任何位置使用`_(" text to translation"))。这些字符串然后像往常一样使用Locale :: Maketext进行翻译。
之所以真正强大,是因为它们使用Scalar :: Defer将翻译推迟到需要字符串之前,这样我们就可以随时开始添加字符串,甚至在我们不知道将其翻译成哪种语言之前也可以。例如在配置文件等中。这确实使I18N易于使用。
有关现代GNU gettext,Locale :: Maketext和Locale :: TextDomain的比较,请参见http://rassie.org/archives/247.