diff --git a/include/class.i18n.php b/include/class.i18n.php index 66d00c0a92d6ebb891bff1029ed2041be89ddddc..11b6f5c805d3f5dd1a2a15a9e2a174bc43e6f56f 100644 --- a/include/class.i18n.php +++ b/include/class.i18n.php @@ -158,10 +158,39 @@ class Internationalization { } static function getLanguageDescription($lang) { + global $thisstaff, $thisclient; + $langs = self::availableLanguages(); $lang = strtolower($lang); - if (isset($langs[$lang])) - return $langs[$lang]['desc']; + if (isset($langs[$lang])) { + $info = &$langs[$lang]; + if (!isset($info['desc'])) { + if (extension_loaded('intl')) { + if ($thisstaff) + $lang = $thisstaff->getLanguage(); + elseif ($thisclient) + $lang = $thisclient->getLanguage(); + else + $lang = self::getDefaultLanguage(); + list($simple_lang,) = explode('_', $lang); + $info['desc'] = sprintf("%s%s", + // Display the localized name of the language + Locale::getDisplayName($info['code'], $info['code']), + // If the major language differes from the user's, + // display the language in the user's language + (strpos($simple_lang, $info['lang']) === false + ? sprintf(' (%s)', Locale::getDisplayName($info['code'], $lang)) : '') + ); + } + else { + $info['desc'] = sprintf("%s%s (%s)", + $info['nativeName'], + $info['locale'] ? sprintf(' - %s', $info['locale']) : '', + $info['name']); + } + } + return $info['desc']; + } else return $lang; } @@ -192,10 +221,6 @@ class Internationalization { 'locale' => $locale, 'path' => $f, 'code' => $base, - 'desc' => sprintf("%s%s (%s)", - $langs[$code]['nativeName'], - $locale ? sprintf(' - %s', $locale) : '', - $langs[$code]['name']), ); } } diff --git a/include/staff/profile.inc.php b/include/staff/profile.inc.php index 6b72f071cb8ab87798437b4cce55219a18ef2658..ff3053bdb10b3d805b039e6dd6094132808ae595 100644 --- a/include/staff/profile.inc.php +++ b/include/staff/profile.inc.php @@ -112,7 +112,7 @@ $info['id']=$staff->getId(); <?php foreach($langs as $l) { $selected = ($info['lang'] == $l['code']) ? 'selected="selected"' : ''; ?> <option value="<?php echo $l['code']; ?>" <?php echo $selected; - ?>><?php echo $l['desc']; ?></option> + ?>><?php echo Internationalization::getLanguageDescription($l['code']); ?></option> <?php } ?> </select> <span class="error"> <?php echo $errors['lang']; ?></span>