NAME¶
Template::Multilingual - Multilingual templates for Template Toolkit
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' });
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".
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¶
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
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.