From: Sven Schöling Date: Mon, 28 Jun 2010 11:07:26 +0000 (+0200) Subject: Funktion LxERP.t8() analog zum Filter [% ... | $T8 %] implementiert. X-Git-Tag: release-2.6.2beta1~331^2~26 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=37a84d92f0b0981aa6a8b9ec249baad97f4c0a5f;p=kivitendo-erp.git Funktion LxERP.t8() analog zum Filter [% ... | $T8 %] implementiert. Hintergrund: Will man einen zu übersetzenden Begriff an eine Funktion übergeben, so geht das mit der Filtersyntax leider nicht. Beispielsweise geht weder [% JavaScript.confirm('Are you sure?' | $T8) %] (Syntaxfehler vom Template-Modul), noch geht [% SET t8='Are you sure?' | $T8; JavaScript.confirm(t8) %] (hier steht in t8 der unübersetzte Begriff, und es ist hässlich). Jetzt kann man aber optional folgendes schreiben: [% JavaScript.confirm(LxERP.t8('Are you sure?')) %] Conflicts: locale/de/locales.pl --- diff --git a/SL/Template/Plugin/LxERP.pm b/SL/Template/Plugin/LxERP.pm index c26988beb..df6cb6ad6 100644 --- a/SL/Template/Plugin/LxERP.pm +++ b/SL/Template/Plugin/LxERP.pm @@ -106,4 +106,10 @@ sub abs { return $var < 0 ? $var * -1 : $var; } +sub t8 { + my ($self, $text, $args) = @_; + $self->{locale} ||= Locale->new($::myconfig{countrycode}, 'all'); + return $self->{locale}->text($text, @{ $args || [] }); +} + 1; diff --git a/locale/de/locales.pl b/locale/de/locales.pl index 399af2853..e529d548e 100755 --- a/locale/de/locales.pl +++ b/locale/de/locales.pl @@ -566,19 +566,27 @@ sub scanhtmlfile { $plugins{needed}->{$plugin} = 1 if (first { $_ eq $plugin } qw(HTML LxERP JavaScript MultiColumnIterator)); } - while ($line =~ m/\[\% # Template-Start-Tag - [\-~#]* # Whitespace-Unterdrückung - \s* # Optional beliebig viele Whitespace - [\'\"] # Anfang des zu übersetzenden Strings - (.*?) # Der zu übersetzende String - [\'\"] # Ende des zu übersetzenden Strings - \s*\|\s* # Pipe-Zeichen mit optionalen Whitespace davor und danach - \$T8 # Filteraufruf - .*? # Optionale Argumente für den Filter und Whitespaces - [\-~#]* # Whitespace-Unterdrückung - \%\] # Template-Ende-Tag + while ($line =~ m/(?: # Start von Variante 1: LxERP.t8('...'); ohne darumliegende [% ... %]-Tags + LxERP\.t8\( # LxERP.t8( + [\'\"] # Anfang des zu übersetzenden Strings + (.*?) # Der zu übersetzende String + [\'\"] # Ende des zu übersetzenden Strings + | # Start von Variante 2: [% '...' | $T8 %] + \[\% # Template-Start-Tag + [\-~#]* # Whitespace-Unterdrückung + \s* # Optional beliebig viele Whitespace + [\'\"] # Anfang des zu übersetzenden Strings + (.*?) # Der zu übersetzende String + [\'\"] # Ende des zu übersetzenden Strings + \s*\|\s* # Pipe-Zeichen mit optionalen Whitespace davor und danach + \$T8 # Filteraufruf + .*? # Optionale Argumente für den Filter + \s* # Whitespaces + [\-~#]* # Whitespace-Unterdrückung + \%\] # Template-Ende-Tag + ) /ix) { - my $string = $1; + my $string = $1 || $2; print "Found filter >>>$string<<<\n" if $debug; substr $line, $LAST_MATCH_START[1], $LAST_MATCH_END[0] - $LAST_MATCH_START[0], '';