File modules/language/Language.class.php

Last commit: Thu Nov 19 23:26:07 2020 +0100	Jan Dankert	Fix: Loading fallback language was broken.
1 <?php 2 3 namespace language; 4 5 use DomainException; 6 use logger\Logger; 7 use util\text\TextMessage; 8 9 class Language 10 { 11 public function __construct() 12 { 13 } 14 15 /** 16 * @param $iso ISO-Code 17 * @return array The language values 18 */ 19 public function getLanguage($iso) 20 { 21 $language = $this->getOutputLanguage($iso); 22 return $language->get(); 23 } 24 25 26 /** 27 * Returns an instance of the language class. 28 * @param $iso string ISO-Code 29 * @return object instance of language 30 */ 31 private function getOutputLanguage($iso) 32 { 33 $fallback = 'en'; 34 $isos = [ $iso ,$fallback ]; // Using a fallback 35 36 foreach( $isos as $l ) { 37 38 $languageClazz = __NAMESPACE__.'\Language_'.strtoupper($l); 39 40 // Is language file available? 41 if ( class_exists($languageClazz) ) 42 return new $languageClazz(); 43 } 44 45 throw new DomainException( TextMessage::create('No language class found for iso keys ${0}',[implode(',',$isos)]) ); 46 } 47 48 }
Download modules/language/Language.class.php
History Thu, 19 Nov 2020 23:26:07 +0100 Jan Dankert Fix: Loading fallback language was broken. Mon, 26 Oct 2020 22:21:42 +0100 Jan Dankert Refactoring: Using TextMessage for creating Messages with user content. Sat, 24 Oct 2020 00:22:18 +0200 Jan Dankert Refactoring: Language files as classes Fri, 21 Aug 2020 00:22:13 +0200 Jan Dankert Refactoring: Collect all frontend compiler scripts in update.php. Compiling of CSS and JS was extracted to a new TemplateCompiler. JS and CSS is now collected in a new openrat.[min.][js|css]. Tue, 18 Aug 2020 22:49:05 +0200 Jan Dankert Cleanup of language code. Sat, 22 Feb 2020 23:58:02 +0100 Jan Dankert Refactoring: Namespacing for module 'util'. Sat, 16 Nov 2019 00:47:43 +0100 Jan Dankert Fix: YAML-Parser should not load files. Fri, 15 Nov 2019 22:57:50 +0100 Jan Dankert Refactoring: Wrapping the Spyc YAML implementation. Tue, 4 Sep 2018 22:54:39 +0200 Jan Dankert Der Language-Loader ist jetzt nicht-statisch, damit die Initialisierung der Variablen im Konstruktur geschehen kann. Sun, 7 Jan 2018 23:23:28 +0100 Jan Dankert Sprachdateien bei Bedarf automatisch aus der YAML-Quelle neu erzeugen. Sprachinhalte können jetzt nicht mehr leer sein. Thu, 4 Jan 2018 00:00:20 +0100 Jan Dankert Fix: Fallbacks auf englisch bzw. Fallback, wenn auch englisch nicht vorhanden ist. Wed, 3 Jan 2018 23:36:19 +0100 Jan Dankert Die Sprachdateien wandern nun in ein eigenes Modul. Das Erzeugen der Produktionsdateien wurde überarbeitet.