Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将国际化添加到Perl脚本中?_Perl_Localization_Internationalization_Cgi - Fatal编程技术网

如何将国际化添加到Perl脚本中?

如何将国际化添加到Perl脚本中?,perl,localization,internationalization,cgi,Perl,Localization,Internationalization,Cgi,我正在考虑向用Perl编写的成熟CGI应用程序引入多语言支持。我最初考虑使用Perl散列(存储在磁盘上)来滚动我自己的解决方案来转换文件,但后来我遇到了一个CPAN模块,它似乎正是我想要的() 有没有人有过Perl国际化(特别是i18n CPAN模块)的经验?i18n模块是多语言支持的首选方法还是我应该重新考虑定制解决方案 感谢您回复建议阅读的关于perl代码本地化的评论。这里有一个关于软件本地化的主题。它将为您提供在添加多语言支持时所能期望的好主意。它写得很漂亮,很幽默 具体来说,这篇文章是由

我正在考虑向用Perl编写的成熟CGI应用程序引入多语言支持。我最初考虑使用Perl散列(存储在磁盘上)来滚动我自己的解决方案来转换文件,但后来我遇到了一个CPAN模块,它似乎正是我想要的()

有没有人有过Perl国际化(特别是i18n CPAN模块)的经验?i18n模块是多语言支持的首选方法还是我应该重新考虑定制解决方案

感谢您回复建议阅读的关于perl代码本地化的评论。

这里有一个关于软件本地化的主题。它将为您提供在添加多语言支持时所能期望的好主意。它写得很漂亮,很幽默


具体来说,这篇文章是由撰写和维护,因此,我建议只根据作者为使其正常工作所承受的痛苦程度来设计该模块。

如果您有时间,请查看一下I18N在框架中的实现方式——尽管最初相当混乱,但它非常优雅且可用

它们重载
\uu
,以便您可以在代码中的任何位置使用
\u(“文本翻译”)
。然后将这些字符串转换为正常值


它真正强大的地方在于,它们将翻译推迟到需要使用字符串时,这样您就可以随时开始添加字符串,甚至在您知道它们将被翻译成哪种语言之前。例如,在配置文件等中。这确实使I18N易于使用。

有关现代GNU gettext、Locale::Maketext和Locale::TextDomain的比较,请参阅。

在Perl中使用单下划线快捷方式是一个糟糕的设计选择,因为它是自动全局的。这就是为什么Perl的标准l10n框架使用双下划线的原因。