diff --git a/include/class.dynamic_forms.php b/include/class.dynamic_forms.php index ca2b3f2c8fa2a649f5b9cfa2e55a786737339f38..de0f05ce235988e0ece7cd8a518017f6fcfa0f5d 100644 --- a/include/class.dynamic_forms.php +++ b/include/class.dynamic_forms.php @@ -236,7 +236,7 @@ class DynamicForm extends VerySimpleModel { // New translations (?) if ($vars['trans'] && is_array($vars['trans'])) { foreach ($vars['trans'] as $lang=>$parts) { - if (!Internationalization::isLanguageInstalled($lang)) + if (!Internationalization::isLanguageEnabled($lang)) continue; foreach ($parts as $T => $content) { $content = trim($content); diff --git a/include/class.i18n.php b/include/class.i18n.php index c6e4bfc61b50973d19a3a2ad38d140178c2ef49f..94f6b679c41587f2c3c43272f6aa5b80137d2586 100644 --- a/include/class.i18n.php +++ b/include/class.i18n.php @@ -255,18 +255,28 @@ class Internationalization { return isset($langs[strtolower($code)]); } + static function isLanguageEnabled($code) { + $langs = self::getConfiguredSystemLanguages(); + return isset($langs[$code]); + } + static function getConfiguredSystemLanguages() { global $cfg; + static $langs; if (!$cfg) return self::availableLanguages(); - $pri = $cfg->getPrimaryLanguage(); - $langs = array($pri => self::getLanguageInfo($pri)); + if (!isset($langs)) { + $pri = $cfg->getPrimaryLanguage(); + if ($info = self::getLanguageInfo($pri)) + $langs = array($pri => $info); - // Honor sorting preference of ::availableLanguages() - foreach ($cfg->getSecondaryLanguages() as $l) { - $langs[$l] = self::getLanguageInfo($l); + // Honor sorting preference of ::availableLanguages() + foreach ($cfg->getSecondaryLanguages() as $l) { + if ($info = self::getLanguageInfo($l)) + $langs[$l] = $info; + } } return $langs; } @@ -369,7 +379,7 @@ class Internationalization { $user = $user ?: $thisstaff ?: $thisclient; if ($user && method_exists($user, 'getLanguage')) - if ($lang = $user->getLanguage()) + if (($lang = $user->getLanguage()) && self::isLanguageEnabled($lang)) return $lang; // Support the flag buttons for guests diff --git a/include/staff/dynamic-form.inc.php b/include/staff/dynamic-form.inc.php index e194d4d8561b4d0a35fb365a85e8c7ca356ca6d3..5415ba03cbd755b4c696f32eeb339ef50064cb58 100644 --- a/include/staff/dynamic-form.inc.php +++ b/include/staff/dynamic-form.inc.php @@ -15,7 +15,7 @@ if($form && $_REQUEST['a']!='add') { $translations = CustomDataTranslation::allTranslations($trans, 'phrase'); $_keys = array_flip($trans); foreach ($translations as $t) { - if (!Internationalization::isLanguageInstalled($t->lang)) + if (!Internationalization::isLanguageEnabled($t->lang)) continue; // Create keys of [trans][de_DE][title] for instance $info['trans'][$t->lang][$_keys[$t->object_hash]]