Metainformationen zur Seite
LoxBerry::System::readlanguage
%L = LoxBerry::System::readlanguage($htmltemplate, $langfile);
Siehe auch: Funktionen zum Erstellen des Templates
Liest die Sprache ins Template.
Parameter
Achtung, der Parameter $htmltemplate kein HTML-File, sondern ein HTML::Template Objekt. In dieses Objekt wird automatisch die Sprache (und ggf. Fallback-Sprache) importiert.
Der zweite Parameter ist der Dateiname des Sprachfiles ohne Pfad und ohne Sprachkürzel, z.B.
Im Dateisystem liegt:
lang/language_de.ini
lang/language_en.ini
Als Parameter muss übergeben werden:
language.ini
Die Sprachdatei wird im Ordner $lbptemplatedir/lang/ gesucht.
Im HTML::Template ist eine Phrase dann mit <TMPL_VAR SECTION.PHRASE>
abrufbar.
Verwendet das Language-File keine Sections, dann funktioniert <TMPL_VAR default.PHRASE>
.
Rückgabe
Die Sprach-Phrasen werden als Hash (z.B. %L
) zurückgegeben.
Obwohl die Sprachphrasen durch readlanguage bereits im Template sind, kann es nötig sein, auch im Script direkt eine Sprachphrase zu verwenden (beispielsweise wenn HTML-Elemente innerhalb des Scripts generiert werden).
Im Script kann mit dem zurückgegebenen Hash eine Phrase abgerufen werden: $L{'SECTION.PHRASE'}
.
Verwendet das Language-File keine Sections, dann funktioniert $L{'default.PHRASE'}
.
Beispiel
my $maintemplate = HTML::Template->new( filename => "$lbptemplatedir/main.html", global_vars => 1, loop_context_vars => 1, die_on_bad_params => 0, associate => $plugin_cfg, ); %L = LoxBerry::System::readlanguage($maintemplate, "language.ini"); # Access language phrase inside script print STDERR "$L{'SECTION.PHRASE'}";
Spezialfall - kein Template
Wird die Plugin-Sprache in einem Script benötigt, kann auch ohne HTML::Template die Sprache als Hash abgerufen werden:
use LoxBerry::System; %L = LoxBerry::System::readlanguage("language.ini"); # Access language phrase inside script print STDERR "$L{'SECTION.PHRASE'}";
LoxBerry-Core Entwickler
LoxBerry Systementwickler
Dieser Bereich betrifft nur LoxBerry Systementwickler und ist für Plugin-Entwickler nicht relevant.
Um die Systemsprache ohne Template, z.B. in Scripts, zu verwenden, kann readlanguage ohne Template aufgerufen werden:
use LoxBerry::System; # Without HTML::Template %SL = LoxBerry::System::readlanguage(); # Reads the system language to %SL without parsing it to an HTML::Template object. # Access language phrase inside script print STDERR "$SL{'SECTION.PHRASE'}";
Sollte LoxBerry::System irrtümlich den Aufruf als Plugin-Aufruf erkennen (z.B. als Aufruf in einem Perl-Modul),. kann das Laden der Systemsprache geforced werden:
%SL = LoxBerry::System::readlanguage(undef, undef, 1);
Hinweise
Umstellung von LoxBerry::Web::readlanguage() auf LoxBerry::System::readlanguage()
Mit Lib-Version 0.3.3.1 wurde die Funktion readlanguage()
von LoxBerry::Web nach LoxBerry::System verlagert.
Wird LoxBerry::Web::readlanguage()
aufgerufen, wird der Aufruf an LoxBerry::System weitergegeben und im Errorlog eine Warnung ausgegeben, dass der Code angepasst werden soll.