logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Template::Multilingual - Multilingual templates for Template Toolkit

Author

       Eric Cholet, "<cholet@logilune.com>"

Bugs

       Multilingual  text  sections  cannot  be  used  inside  TT directives.  The following is illegal and will
       trigger a TT syntax error:

           [% title = "<t><fr>Bonjour</fr><en>Hello</en></t>" %]

       Use this instead:

           [% title = BLOCK %]<t><fr>Bonjour</fr><en>Hello</en></t>[% END %]

       The TAG_STYLE, START_TAG and END_TAG directives are supported, but the TAGS directive is not.

       Please report any bugs or feature requests to "bug-template-multilingual@rt.cpan.org", or through the web
       interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Template-Multilingual>.  I will be notified,
       and then you'll automatically be notified of progress on your bug as I make changes.

Language Subtag Handling

       This module supports language subtags to express variants, e.g. "en_US" or "en-US".  Here are  the  rules
       used for language matching:

       •   Exact match: the current language is found in the template

             language    template                              output
             fr          <fr>foo</fr><fr_CA>bar</fr_CA>        foo
             fr_CA       <fr>foo</fr><fr_CA>bar</fr_CA>        bar

       •   Fallback to the primary language

             language    template                              output
             fr_CA       <fr>foo</fr><fr_BE>bar</fr_BE>        foo

       •   Fallback to first (in alphabetical order) other variant of the primary language

             language    template                              output
             fr          <fr_FR>foo</fr_FR><fr_BE>bar</fr_BE>  bar
             fr_CA       <fr_FR>foo</fr_FR><fr_BE>bar</fr_BE>  bar

Methods

new(\%params)
       The new() constructor creates and returns a reference to a new template object. A reference to a hash may
       be supplied as a parameter to provide configuration values.

       Configuration values are all valid "Template" superclass options, and one specific to this class:

       LANGUAGE_VAR
           The  LANGUAGE_VAR  option  can  be  used  to set the name of the template variable which contains the
           current language.

             my $parser = Template::Multilingual->new({
                LANGUAGE_VAR => 'global.language',
             });

           If this option is set, your code is responsible for setting  the  variable's  value  to  the  current
           language when processing the template. Calling "language()" will have no effect.

           If this option is not set, it defaults to language.

   language($lcode)
       Specify  the language to be used when processing the template. Any string that matches "\w+" is fine, but
       we suggest sticking to ISO-639 which provides 2-letter codes for common languages and 3-letter codes  for
       many others.

   process
       Used  exactly  as  the  original  Template  Toolkit  "process" method.  Be sure to call "language" before
       calling "process".

Name

       Template::Multilingual - Multilingual templates for Template Toolkit

See Also

       If  you  are  already  using  your  own  "Template"  subclass,  you   may   find   it   easier   to   use
       Template::Multilingual::Parser instead.

       ISO      639-2      Codes      for      the      Representation      of      Names      of     Languages:
       http://www.loc.gov/standards/iso639-2/langcodes.html

Synopsis

       This subclass of Template Toolkit's "Template" class supports multilingual templates: templates that
       contain text in several languages.

           <t>
             <en>Hello!</en>
             <fr>Bonjour !</fr>
           </t>

       Specify the language to use when processing a template:

           use Template::Multilingual;

           my $template = Template::Multilingual->new();
           $template->language('en');
           $template->process('example.ttml');

       You can also provide the name of the template variable that will hold the language:

           my $template = Template::Multilingual->new(LANGUAGE_VAR => 'foo');
           $template->process('example.ttml', { foo => 'en' });

See Also