Sprachdateien erstellen¶
Achtung: Artikel bezieht sich auf Shopversionen 2.1.x und 2.2.x
Standardmäßig kommen alle Texte aus der Datenbank. Es besteht jedoch die Möglichkeit die Geltung einer Sprachvariablen aus der Datenbank zur Laufzeit mit der einer Variablen aus einer Spachdatei zu überschreiben. So haben Entwickler die Möglichkeit unsere Sprachvariablen aus der Datenbank komfortabel mit eigenen Sprachdateien zu verändern oder zu erweitern, ohne Gefahr zu laufen bei einem Shop-Update die Anpassungen zu verlieren.
Im Verzeichnis lang/german/sections/_samples liegen für diesen Zweck Sprachdateien, die sämtliche Sprachvariablen enthalten, die aus der lang_german.conf stammen und wir in die Datenbank übernommen haben. Die einzelnen Sprachdateien können in das übergeordnete Verzeichnis "sections" kopiert und angepasst werden. Anstelle der Texte aus der Datenbank werden vom Shop dann die Texte aus diesen kopierten Sprachdateien verwendet.
Es können für dieselbe "section" auch mehrere Sprachdateien platziert werden, die sich in ihrer Gültigkeit dann nicht überschreiben, sondern ergänzen. So können mehrere Entwickler an derselben Sache arbeiten.
Hierfür muss lediglich der Dateiname erweitert werden. Aus "imagemap_editor.lang.inc.php" wird z.B. "imagemap_editor.ENTWICKLER1.lang.inc.php" und "imagemap_editor.ENTWICKLER2.lang.inc.php", usw.
In den Sprachdateien selbst müssen dann nur noch die folgenden Änderungen am Format berücksichtigt werden:
$t_new_items_array = array
(
'button_general' => 'Allgemein',
'button_flyover' => 'Flyover'
);
$t_language_text_section_content_array = array_merge(
$t_language_text_section_content_array,
$t_new_items_array
);
Wer neue Template-Dateien erstellt und hierfür neue Sprachdateien benötigt, kann diese ebenfalls im sections-Verzeichnis ablegen. Die Namenskonvention bei Sprachdateien sieht wie folgt aus:
entweder [SECTIONNAME].lang.inc.php
oder [SECTIONNAME].[ZUSATZ].lang.inc.php
[ZUSATZ] kann z.B. für eine Sortiernummer benutzt werden oder um einen Entwickler- oder Modulnamen unterzubringen. In den meisten Fällen wird diese zusätzliche Bezeichnung nicht benötigt.
Der Inhalt dieser Sprachdatei wird mit folgendem Code in einer Template-Datei zur Verfügung gestellt:
{load_language_text section="[SECTIONNAME]"}
Beispiel:
Die neue Sprachdatei heißt "account_test.lang.inc.php" und wird mit diesem Code in einer neuen Template-Datei eingebunden:
{load_language_text section="account_test"}
Innerhalb des Templates können die einzelnen Textvariablen in dem Format {$txt.TEXTVARIABLE} eingesetzt werden, z.B. {$txt.street} oder {$txt.city}
Standardmäßig werden die Textvariablen mit dem Präfix "txt" bereitgestellt. In eine Template-Datei können auch mehrere Sprachdateien eingebunden werden. Um Konflikte bei den Namen der Textvariablen zu vermeiden, kann bei zusätzlich eingebundenen Sprachdateien ein abweichender Präfix angegeben werden:
{load_language_text section="buttons" name="button"}
Die Texte aus der buttons-Section stehen dann mit dem Präfix "button" zur Verfügung, z.B. {$button.ok} oder {$button.edit}
Die Inhalte aus den Sprachdateien lassen sich auch in einer PHP-Umgebung abrufen:
$coo_text_mgr = MainFactory::create_object('LanguageTextManager', array('account_test', $_SESSION['languages_id']) );
$ok_button = $coo_text_mgr->get_text('ok');
$cancel_button = $coo_text_mgr->get_text('cancel');
Hier wird über die Factory ein Objekt vom Typ "LanguageTextManager" für die Section "account_test" erzeugt und mit der get_text()-Methode auf die Texte "ok" und "cancel" zugegriffen.
Hinweis zum Cache:
Nach dem Hinzufügen neuer Sprachdateien sollten über den Adminbereich auf der Seite "Cache leeren" die Punkte "Cache für Seitenausgabe leeren" und "Cache für Modulinformationen leeren" ausgeführt werden.