Skip to content
Snippets Groups Projects
Commit 9efb666a authored by Jared Hancock's avatar Jared Hancock
Browse files

i18n: Display language selection with local names

parent 65ec262b
No related branches found
No related tags found
No related merge requests found
...@@ -158,10 +158,39 @@ class Internationalization { ...@@ -158,10 +158,39 @@ class Internationalization {
} }
static function getLanguageDescription($lang) { static function getLanguageDescription($lang) {
global $thisstaff, $thisclient;
$langs = self::availableLanguages(); $langs = self::availableLanguages();
$lang = strtolower($lang); $lang = strtolower($lang);
if (isset($langs[$lang])) if (isset($langs[$lang])) {
return $langs[$lang]['desc']; $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 else
return $lang; return $lang;
} }
...@@ -192,10 +221,6 @@ class Internationalization { ...@@ -192,10 +221,6 @@ class Internationalization {
'locale' => $locale, 'locale' => $locale,
'path' => $f, 'path' => $f,
'code' => $base, 'code' => $base,
'desc' => sprintf("%s%s (%s)",
$langs[$code]['nativeName'],
$locale ? sprintf(' - %s', $locale) : '',
$langs[$code]['name']),
); );
} }
} }
......
...@@ -112,7 +112,7 @@ $info['id']=$staff->getId(); ...@@ -112,7 +112,7 @@ $info['id']=$staff->getId();
<?php foreach($langs as $l) { <?php foreach($langs as $l) {
$selected = ($info['lang'] == $l['code']) ? 'selected="selected"' : ''; ?> $selected = ($info['lang'] == $l['code']) ? 'selected="selected"' : ''; ?>
<option value="<?php echo $l['code']; ?>" <?php echo $selected; <option value="<?php echo $l['code']; ?>" <?php echo $selected;
?>><?php echo $l['desc']; ?></option> ?>><?php echo Internationalization::getLanguageDescription($l['code']); ?></option>
<?php } ?> <?php } ?>
</select> </select>
<span class="error">&nbsp;<?php echo $errors['lang']; ?></span> <span class="error">&nbsp;<?php echo $errors['lang']; ?></span>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment