Locale::Maketext::Extract::Plugin::TT23pm
Template toolkit format parser
Usage
$plugin = Locale::Maketext::Extract::Plugin::TT2->new($lexicon # A Locale::Maketext::Extract object@file_types # Optionally specify a list of recognised file types)$plugin->extract($filename,$filecontents);
Version
version 1.00
Overview
Extracts strings to localise from Template Toolkit templates.
Short plugin name
tt2
Valid formats
Valid formats are:
- [% |l(args) %]string[% END %]
- [% 'string' | l(args) %]
- [% l('string',args) %]
- [% c.l('string') %]
-
Also all the above combinations with
"c."prepended should work correctly. This is the default syntax when using TT templates with Mojolicious.
l and loc are interchangeable.
| and FILTER are interchangeable.
Known file types
- .tt
- .tt2
- .html
- .tt.*
- .tt2.*
Requires
Template
Notes
- •
-
BEWARE Using the
"loc"form can give false positives if you use the Perl parser plugin on TT files. If you want to use the"loc"form, then you should specify the file types that you want to the Perl plugin to parse, or enable the default file types, eg:xgetext.pl -P perl .... # default file typesxgettext.pl -P perl=pl,pm ... # specified file types
- •
-
The string-to-be-localised must be a string, not a variable. We try not to extract calls to your localise function which contain variables eg:
l('string',arg) # extractedl(var,arg) # not extractedThis doesn't work for block filters, so don't do that. Eg:
[% FILTER l %]string [% var %] # BAD![% END %]
- •
-
Getting the right line number is difficult in TT. Often it'll be a range of lines, or it may be thrown out by the use of PRE_CHOMP or POST_CHOMP. It will always be within a few lines of the correct location.
- •
-
If you have PRE/POST_CHOMP enabled by default in your templates, then you should extract the strings using the same values. In order to set them, you can use the following wrapper script:
#!/usr/bin/perluse Locale::Maketext::Extract::Run qw(xgettext);use Locale::Maketext::Extract::Plugin::TT2();%Locale::Maketext::Extract::Plugin::TT2::PARSER_OPTIONS = (PRE_CHOMP => 1, # or 2POST_CHOMP => 1, # or 2# Also START/END_TAG, ANYCASE, INTERPOLATE, V1DOLLAR, EVAL_PERL);xgettext(@ARGV);
Acknowledgements
Thanks to Andy Wardley for writing the Template::Directive subclass which made this possible.
Copyright and license
This software is Copyright (c) 2014 by Audrey Tang.
This is free software, licensed under:
The MIT (X11) License
Releases
9 releases since Debian 6.0 (Squeeze); the text changed 5 times.