【问题标题】:How can I do I18N in HTML::Template[::Compiled] with gettext?如何使用 gettext 在 HTML::Template[::Compiled] 中执行 I18N?
【发布时间】:2009-04-21 10:52:36
【问题描述】:

我目前正在尝试将 Web 项目从自定义 i18n 系统移动到 gettext,但是我还需要为 i18n 准备 HTML::Template::Compiled 模板,但还不知道如何去做。我的模板存储在单独的文件中,因此我不能使用 Perl 的字符串插值,我还想在模板中使用 gettext-typical _() 语法。

知道如何正确实施吗?

【问题讨论】:

    标签: perl web-applications templates internationalization gettext


    【解决方案1】:

    你可以试试这个: http://perlboard.svn.sourceforge.net/viewvc/perlboard/battie/lib/HTML/Template/Compiled/Plugin/Translate.pm?view=markup

    我想用它制作一个 CPAN 模块。希望很快=) 下面是一个例子,模块中的 cmets 已经过时了:

    use HTML::Template::Compiled;
    use HTML::Template::Compiled::Plugin::Translate;
    my $t = <<"EOM";
    <%translate id="search %1:s found %2:d videos" count=".items#" args=".search,.items#" %>
    EOM
    
    my $map = {
        "search %1:s found %2:d videos" => [
            q/Suche nach "%1:s" hat %2:020d Video gefunden/,
            q/Suche nach "%1:s" hat %2:d Videos gefunden/,
        ],
    };
    my $plug = HTML::Template::Compiled::Plugin::Translate->new({
        lang => "de",
        map => $map,
    });
    
    my $htc = HTML::Template::Compiled->new(
        scalarref => \$t,
        plugin => [$plug],
    );
    $htc->param(
        search => "search term",
        items => [qw/ result1 result2 /],
    );
    print $htc->output;
    

    模板语法没有你想要的那么短,而且我没有使用gettext,但也许你喜欢它或者可以从这个例子中构建你自己的插件。

    问候, 蒂娜

    【讨论】:

      猜你喜欢
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      相关资源
      最近更新 更多