【问题标题】:How can I add internationalization to my Perl script?如何将国际化添加到我的 Perl 脚本?
【发布时间】:2023-03-09 17:39:02
【问题描述】:

我正在考虑为用 Perl 编写的成熟 CGI 应用程序引入多语言支持。我最初考虑使用 Perl 散列(存储在磁盘上)为翻译文件推出我自己的解决方案,但后来我遇到了一个 CPAN 模块,它似乎可以满足我的需求 (i18n)。

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

谢谢

【问题讨论】:

    标签: perl localization internationalization cgi


    【解决方案1】:

    如果您有时间,请看看 I18N 在 Jifty 框架中的完成方式 - 虽然最初相当混乱,但它非常优雅和实用。

    它们重载_,以便您可以在代码中的任何位置使用_("text to translate")。然后像往常一样使用Locale::Maketext 翻译这些字符串。

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

    【讨论】:

    • 在 Perl 中使用单下划线快捷方式 _() 是一个糟糕的设计选择,因为它自动是全局的。这就是为什么libintl-perl Perl 的标准 l10n 框架使用双下划线。
    【解决方案2】:

    有一个关于软件本地化的Perl Journal article。它将让您很好地了解在添加多语言支持时可以期待什么。文笔优美,幽默风趣。

    具体来说,这篇文章是由编写和维护Locale::Maketext 的人编写的,所以我会推荐该模块,仅基于作者必须忍受的痛苦程度才能使其正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 2021-03-02
      相关资源
      最近更新 更多