Öffentliche Methoden | |
| _ ($idMessage, $locale=null) | |
| Wrapper für Zend_Translate_Adapter::_(), der ggf. | |
| addLayoutTranslationData ($layout) | |
| Lädt Sprachdateien für das Layout. | |
| getList () | |
| Gibt eine Liste der verfügbaren Sprachen zurück. | |
| isAvailable ($locale) | |
| Prüft, ob übergeben Sprache verfügbar ist. | |
| setLocale ($locale) | |
| Setzt Sprache. | |
Geschützte Methoden | |
| _lazyLoadTranslationData ($idMessage, $locale) | |
| Lädt Sprachdateien nach. | |
| _loadTranslationData ($data, $locale, array $options=array()) | |
| Lädt Sprachdatei und bindet als Array zurückzugebende Daten ein. | |
Geschützte Attribute | |
| $_localeList = null | |
| array, Liste der vorhandenen Sprachen | |
Definiert in Zeile 10 der Datei Array.php.
| Dsao_Translate_Adapter_Array::_ | ( | $ | idMessage, | |
| $ | locale = null | |||
| ) |
Wrapper für Zend_Translate_Adapter::_(), der ggf.
Sprachdateien nachlädt.
| $idMessage | int, Message-ID | |
| $locale | string, Sprache |
Definiert in Zeile 137 der Datei Array.php.
Benutzt _lazyLoadTranslationData().
00138 { 00139 // Ggf. Standardsprache benutzen 00140 if (null == $locale) 00141 { 00142 $locale = $this->_options['locale']; 00143 } 00144 00145 // Falls ID nicht übersetzt, versuchen, diese nachzuladen 00146 if (!isset($this->_translate[$locale][$idMessage])) 00147 { 00148 // Versuchen, Übersetzung nach zu laden 00149 $this->_lazyLoadTranslationData($idMessage, $locale); 00150 } 00151 00152 return parent::_($idMessage, $locale); 00153 }
| Dsao_Translate_Adapter_Array::_lazyLoadTranslationData | ( | $ | idMessage, | |
| $ | locale | |||
| ) | [protected] |
Lädt Sprachdateien nach.
| $idMessage | string, Message-ID | |
| $locale | string, Sprache |
Definiert in Zeile 24 der Datei Array.php.
Benutzt _loadTranslationData() und isAvailable().
Wird benutzt von _().
00025 { 00026 // Falls Sprache nicht verfügbar 00027 if (!$this->isAvailable($locale)) 00028 { 00029 // Auf eingestellte Sprache wechseln (die auf jeden Fall existiert, s.u.) 00030 $locale = $this->getLocale(); 00031 } 00032 00033 // Message-ID auseinander pfluecken 00034 00035 // array, die ersten beiden Teile des Message-ID, die ggf. Aufschluss über 00036 // Modul und Controller geben sollen, deren Sprachdateien nachgeladen 00037 // werden müssen 00038 $arrayMessage = explode('_', $idMessage, 3); 00039 00040 // Modul prüfen 00041 00042 // Falls erster Teil übersetzt werden kann, ist die Sprachdatei des Moduls 00043 // bereits geladen und es bedarf keiner weiteren Untersuchungen 00044 if (!isset($this->_translate[$locale][$arrayMessage[0]])) 00045 { 00046 // string, Dateiname der Sprachdatei des Moduls 00047 $fileModule = BASE_DIR.'lang/'.$locale.'/'.$arrayMessage[0].'.php'; 00048 00049 // Versuchen, Datei einzubinden und bei Misserfolg abbrechen, da es 00050 // dann natürlich keinen Sinn macht, noch zu versuchen, die 00051 // Sprachdatei des Controllers zu laden 00052 if (!$this->_loadTranslationData($fileModule, $locale)) 00053 { 00054 return false; 00055 } 00056 // Falls das gereicht hat, um die ID zu übersetzen, abbrechen 00057 else if (isset($this->_translate[$locale][$idMessage])) 00058 { 00059 return true; 00060 } 00061 } 00062 00063 // Controller einbinden 00064 00065 // Hier ergibt sich jetzt ein Problem, da wir nicht wirklich prüfen können, 00066 // ob die Sprachdatei des Controllers (sofern es überhaupt ein gültiger 00067 // Controller ist) schon eingebunden wurde. 00068 // Also einfach auf gut Glück versuchen, die beiden Dateien einzubinden 00069 00070 // string, Dateinamen der Sprachdateien des Controllers (PHP/Template) 00071 $fileControllerPhp = BASE_DIR.'lang/'.$locale.'/php/'.$arrayMessage[0]. 00072 '/'.$arrayMessage[1].'.php'; 00073 $fileControllerTemplate = BASE_DIR.'lang/'.$locale.'/template/'. 00074 $arrayMessage[0].'/'.$arrayMessage[1].'.php'; 00075 00076 00077 // Dateien einbinden 00078 $this->_loadTranslationData($fileControllerPhp, $locale); 00079 $this->_loadTranslationData($fileControllerTemplate, $locale); 00080 00081 00082 // Kann die ID nun übersetzt werden? 00083 return isset($this->_translate[$locale][$idMessage]); 00084 }
| Dsao_Translate_Adapter_Array::_loadTranslationData | ( | $ | data, | |
| $ | locale, | |||
| array $ | options = array() | |||
| ) | [protected] |
Lädt Sprachdatei und bindet als Array zurückzugebende Daten ein.
Unterschied zur überladenen Methode ist, dass die neuen Inhalte direkt eingebunden werden und keine Exception geworfen wird, wenn eine Datei nicht geöffnet werden kann.
| $data | array|string, Dateiname / Array mit Zeichenketten | |
| $locale | string|Zend_Locale, Sprache | |
| $options | array, Optionen |
Definiert in Zeile 98 der Datei Array.php.
Wird benutzt von _lazyLoadTranslationData() und addLayoutTranslationData().
00099 { 00100 // Falls kein Array übergeben wurde, soll eine Datei geladen werden 00101 if (!is_array($data)) 00102 { 00103 // Falls Datei vorhanden 00104 if (file_exists($data)) 00105 { 00106 // Ausgabe verhindern und Datei einbinden, sofern sie nicht schon 00107 // eingebunden wurde 00108 ob_start(); 00109 // Das ganze ist hier etwas unsauber und erklärungsbedürftig: 00110 // Wenn eine Datei übergeben wurde, müssen wir verhindern, dass 00111 // diese direkt an die u.g. Methode der Elternklasse übergeben 00112 // wird, da sonst ggf. eine Exception geworfen würde und Dateien 00113 // auch doppelt eingebunden werden können. Hier wird nun die Datei 00114 // erst eingebunden und dann der Array an addTranslation() 00115 // übergeben, damit die Übersetzungen ordnungsgemäß hinzugefügt 00116 // werden können 00117 return $this->addTranslation((array) include_once($data), $locale); 00118 ob_end_clean(); 00119 } 00120 // Ansonsten leeren Array zurück geben 00121 else 00122 { 00123 return array(); 00124 } 00125 } 00126 00127 return parent::_loadTranslationData($data, $locale, $options); 00128 }
| Dsao_Translate_Adapter_Array::addLayoutTranslationData | ( | $ | layout | ) |
Lädt Sprachdateien für das Layout.
| $layout | string, Layout, dessen Sprachdatei geladen werden soll |
Definiert in Zeile 161 der Datei Array.php.
Benutzt _loadTranslationData().
00162 { 00163 // Absoluter Pfad zur Sprachdatei des Layouts 00164 $fileLayoutTranslation = BASE_DIR.'lang/'. 00165 $this->_options['locale'].'/layout/'.$layout.'.php'; 00166 00167 // Sprachdatei laden 00168 return $this->_loadTranslationData 00169 ($fileLayoutTranslation, $this->_options['locale']); 00170 }
| Dsao_Translate_Adapter_Array::getList | ( | ) |
Gibt eine Liste der verfügbaren Sprachen zurück.
Da das Adapter in der Lage ist, noch nicht vorhandene Übersetzungen nachzuladen, gehen wir hierbei nicht von den bereits vorhandenen Übersetzungen aus, sondern von den Ordnern in /lang/ aus.
Definiert in Zeile 181 der Datei Array.php.
Wird benutzt von isAvailable().
00182 { 00183 // Falls Liste noch nicht initialisiert wurde 00184 if (null === $this->_localeList) 00185 { 00186 // Liste erstellen 00187 $this->_localeList = array(); 00188 00189 // Verzeichnis mit Sprachen 00190 $directory = new DirectoryIterator(BASE_DIR.'lang/'); 00191 00192 // Dateien und Verzeichnisse durchgehen 00193 foreach ($directory as $file) 00194 { 00195 // Falls Element Verzeichnis, dessen Name eine Sprache darstellt, 00196 // zur Liste hinzufügen 00197 if (!$file->isDot() 00198 && $file->isDir() 00199 && Zend_Locale::isLocale($file->getFilename())) 00200 { 00201 $this->_localeList[] = $file->getFilename(); 00202 } 00203 } 00204 } 00205 00206 return $this->_localeList; 00207 }
| Dsao_Translate_Adapter_Array::isAvailable | ( | $ | locale | ) |
Prüft, ob übergeben Sprache verfügbar ist.
| $locale | string, Sprache |
Definiert in Zeile 215 der Datei Array.php.
Benutzt getList().
Wird benutzt von _lazyLoadTranslationData() und setLocale().
00216 { 00217 // Sofern bereits Übersetzungen der geforderten Sprache vorhanden sind, 00218 // true zurückgeben, ansonsten prüfen, ob Sprache geladen werden könnte 00219 return (parent::isAvailable($locale) ? true : 00220 in_array($locale, $this->getList())); 00221 }
| Dsao_Translate_Adapter_Array::setLocale | ( | $ | locale | ) |
Setzt Sprache.
Unterbindet Exception bei nicht verfügbarer Sprache und setzt vorhandene Sprache.
| $locale | string, Sprache |
Definiert in Zeile 232 der Datei Array.php.
Benutzt isAvailable().
00233 { 00234 // Falls Sprache nicht verfügbar ist, auf Standard setzen 00235 if (!$this->isAvailable($locale)) 00236 { 00237 $locale = array_keys(Zend_Locale::getDefault()); 00238 $locale = $locale[0]; 00239 } 00240 00241 parent::setLocale($locale); 00242 }
1.5.7.1