Sprachverwaltung

Sprachverwaltung, Textverwaltung, zwei Wörter für die selbe Sache: Es geht hier darum, dass es möglich sein soll, DSAo-Md später in verschiedene Sprachen übersetzen zu können. Weiterhin ist es ein Vorteil, alle Texte an einem Ort zu haben, um einen besseren Überblick zu behalten und sie aus dem Quelltext selbst heraus zu halten.

Dazu gibt es die Sprachverwaltung. Sie wird von der Klasse Zend_Translate dargestellt und in der Klasse Dsao_Application_Resource_Translator initialisiert.

Speziell für DSAo-Md wurde die Klasse Dsao_Translate_Adapter_Array geschrieben, die ein Lazy-Load, also ein Nachladen der Sprachdateien erlaubt und das System damit flexibler macht.

Zusammenfassung

Element Bedeutung
/devel/data/lang/* Sprachdateien
Dsao_Application_Resource_Translator Initialisiert Sprachverwaltung
Dsao_Translate_Adapter_Array Eigener Adapter, der Lazy-Load implementiert

/devel/data/lang/*

Die Verzeichnisstruktur der Sprachdateien sieht folgendermaßen aus:

  • /lang: Das Hauptvezeichnis, hier befinden sich Ordner für jede Sprache.
    • /lang/de: Verzeichnis für die deutsche Sprache. Direkt in diesem Verzeichnis befinden sich nur die Sprachdateien der Module, die modulübergreifende Texte sowie die Überschriften für Controller und Aktionen beinhalten.
      • /lang/de/layout: Hier befinden sich Texte der Layouts. D.h. das Hauptmenü, Header und Footer, sämtliche auf jeder Seite, unabhängig von der aufgerufenen URL angezeigt werden. Die default.php enthält hier Standards, diese müssen in anderen Layouts nicht neu definiert werden, sondern können direkt verwendet werden.
      • /lang/de/php: Sämtliche Fehler-/Erfolgs-/Hinweis-Meldungen und alle weiteren im PHP-Code übergebenen Texte befinden sich in diesem Ordner. Es gibt für jedes Modul wiederum einen Unterordner.
      • /lang/de/template: Alle Texte, die in den Templates ausgegeben werden, sozusagen 'statisch' sind, befinden sich in diesem Ordner. Auch hier gibt es für die Module Unterordner.

Die Namenskonventionen von Message-IDs werden im Programmierstandards abgedeckt.

Dsao_Application_Resource_Translator

Hier wird die Sprachverwaltung initialisiert. Es werden dabei Sprachdateien für das Standardlayout geladen. Verschiedene Dinge sind hier noch auskommentiert und sollten in Zukunft ersetzt / wieder aktiviert werden.

Dsao_Translate_Adapter_Array

Unser eigener Adapter. Es wird versucht, nicht gefundene Message-IDs zu laden. Außerdem ist eine Liste der zur Verfügung stehenden Sprachen abrufbar.

Texte übersetzen

Die Verwendung von Texten in JavaScript wird im Javascript abgedeckt.

Im Controller und Modell

Im Controller und Modell kann ein Text einfach folgendermaßen übersetzt, also die Message-ID in den eigentlichen Text umgewandelt werden:

$this->getTranslate()->_('message_id');

In Templates

$this->translate('message_id');

Überall sonst

Wenn gerade das Translate-Objekt nicht direkt erreichbar ist, so kann jederzeit über die Registry darauf zugegriffen werden:

Dsao_Registry::get('Zend_Translate')->_('message_id');

Bei häufiger Benutzung sollte jedoch eine Variable mit der Referenz des Objekts ausgestattet werden, da der Aufruf der Registry dafür zu zeitintensiv ist.

 
code/sprachverwaltung.txt · Zuletzt geändert: 01.04.2010 09:19 von saviola
 
Recent changes RSS feed Valid XHTML 1.0 Valid CSS Driven by DokuWiki