Provided by: libtemplate-multilingual-perl_1.00-1_all bug

NAME

       Template::Multilingual::Parser - Multilingual template parser

SYNOPSIS

           use Template;
           use Template::Multilingual::Parser;

           my $parser = Template::Multilingual::Parser->new();
           my $template = Template->new(PARSER => $parser);
           $template->process('example.ttml', { language => 'en'});

DESCRIPTION

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

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

       Use this module directly if you have subclassed "Template", otherwise you may find it
       easier to use "Template::Multilingual".

       Language codes can be any string that matches "\w+", but we suggest sticking to ISO-639
       which provides 2-letter codes for common languages and 3-letter codes for many others.

METHODS

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

       Parser objects are typically provided as the "PARSER" option to the "Template"
       constructor.

       Configuration values are all valid "Template::Parser" 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. Defaults to language.

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

           You will need to set this variable with the current language value at request time,
           usually in your "Template" subclass' "process()" method.

   parse($text)
       parse() is called by the Template Toolkit. It parses multilingual sections from the input
       text and translates them to Template Toolkit directives. The result is then passed to the
       "Template::Parser" superclass.

   sections
       Returns a reference to an array of tokenized sections. Each section is a reference to hash
       with either a "nolang" key or a "lang" key.

       A "nolang" key denotes text outside of any multilingual sections. The value is the text
       itself.

       A "lang" key denotes text inside a multilingual section. The value is a reference to a
       hash, whose keys are language codes and values the corresponding text. For example, the
       following multilingual template:

         foo <t><fr>bonjour</fr><en>Hello</en></t> bar

       will parse to the following sections:

         [ { nolang => 'foo ' },
           {   lang => { fr => 'bonjour', en => 'hello' } },
           { nolang => ' bar' },
         ]

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

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.

SEE ALSO

       Template::Multilingual

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

COPYRIGHT & LICENSE

       Copyright 2009 Eric Cholet, All Rights Reserved.

       This program is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.