in reply to Multilingual design
My own webserver uses TT. Text in the templates is defined in English, but with a translate callback, something like this:
<h1>[% tr.tr("Hello World") %]</h1> <p>[% tr.tr("Your new username is") %][% tr.quote(username) %]</p>
Basically, i'm registering a plugin into TT that provides a few functions. That includes making variables websafe as well to reduce the possibility of code injection. I haven't touched that particular code in a long, long time, but basically, you start by creating a TT plugin module
package PageCamel::Web::TT::Translate; ... use base qw(Template::Plugin); use Template::Plugin; use Template::Exception; sub load($class, $context) { my $self = bless { }, $class; return $self; } sub new($self, $context) { return $self; } sub tr($self, $data) { return $data if($data eq ''); my $lang = $self->getLang; my $trans = tr_translate($lang, $data); return $trans; <} ...
And then you provide that plugin when instatiating the Template Toolkit:
use Template; ... my $tt = Template->new({ PLUGINS => { tr => 'PageCamel::Web::TT::Translate', }, });
And since you provide the original, untranslated text in the Template, you can return that as default when no translation is found. Plus, automatically add it to the "still to be translated" list.
Original codebase of mine is open source.
- Plugin: https://cavac.at/public/mercurial/pagecamel_framework/file/tip/lib/PageCamel/Web/TT/Translate.pm
- Template renderer: https://cavac.at/public/mercurial/pagecamel_framework/file/tip/lib/PageCamel/Web/TemplateCache.pm
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Multilingual design
by Bod (Parson) on Dec 18, 2022 at 21:59 UTC |