public function validLang($lang)
{
if (!$GLOBALS['session']->exists('horde', 'nls/valid_' . $lang)) {
$valid = false;
if (isset($this->languages[$lang])) {
$locale = setlocale(LC_ALL, 0);
if (setlocale(LC_ALL, $lang . '.UTF-8')) {
$valid = true;
}
if (strlen($locale) <= 255) {
setlocale(LC_ALL, $locale);
} else {
// Locale length is limited to 255 characters.
foreach (explode(';', $locale) as $lc) {
list($category, $catLocale) = explode('=', $lc);
if (defined($category)) {
setlocale(constant($category), $catLocale);
}
}
}
}
$GLOBALS['session']->set('horde', 'nls/valid_' . $lang, $valid);
}
return $GLOBALS['session']->get('horde', 'nls/valid_' . $lang);
}