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.