Thread Template: Mehrsprachige Website
(19 answers)
Opened by Froschpopo at 2012-08-01 00:28 2012-07-31T22:28:00 Froschpopo darf ich fragen warum? Quote ich benutze hier fürs forum ein plugin, welches du im battie-repository findest. hier mal ein beispiel: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 use strict; use warnings; use v5.010; use HTML::Template::Compiled 0.99; use HTML::Template::Compiled::Plugin::Translate; my $map = { welcome => ["Willkommen bei %1s"], user_online => ["Es ist %1s Nutzer online", "Es sind %1s Nutzer online"], }; my $t = HTML::Template::Compiled::Plugin::Translate->new({ map => $map }); my $htc = HTML::Template::Compiled->new( filename => "translate.html", tagstyle => [qw/ +tt /], plugin => [$t], ); $htc->param( usercount => 2, domain => "example.org", ); say $htc->output; Code: (dl
)
1 <title>[%translate id=welcome args=".domain" %]</title> Ausgabe: die $map definiert die übersetzungen für eine sprache, jeweils in singular und plural, falls nötig. mittels dem template-attribut count kann man die anzahl dann über eine template-variable spezifizieren (count=.usercount). Man kann weitere Template-Variablen in den Text einfügen. Positioniert wird über %1s, %2s usw., und die argumente werden mittels args übergeben (args=".domain"). Nachteil dieses Ansatzes ist, dass die komplette Übersetzungsliste für eine Sprache geladen werden muss, das kann man aber je nach Anwendung optimieren, z.b. unter mod_perl beim serverstart in den speicher laden oder mittels memcached bei bedarf laden. gettext bietet wohl auch einige möglichkeiten, aber ich konnte mich nie so richtig damit anfreunden. edit: url zum plugin: http://perlboard.svn.sourceforge.net/viewvc/perlbo... Last edited: 2012-08-01 01:25:12 +0200 (CEST) Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wie frage ich & perlintro brian's Leitfaden für jedes Perl-Problem |