Horde_Registry_Nlsconfig::validLang PHP Method

validLang() public method

Check whether a language string is valid.
public validLang ( string $lang ) : boolean
$lang string The language to check.
return boolean Whether the language is valid.
    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);
    }

Usage Example

Example #1
0
 /**
  * Sets the language.
  *
  * @param string $lang  The language abbreviation.
  *
  * @return string  The current language (since 2.5.0).
  *
  * @throws Horde_Exception
  */
 public function setLanguage($lang = null)
 {
     if (empty($lang) || !$this->nlsconfig->validLang($lang)) {
         $lang = $this->preferredLang();
     }
     $GLOBALS['session']->set('horde', 'language', $lang);
     $changed = false;
     if (isset($GLOBALS['language'])) {
         if ($GLOBALS['language'] == $lang) {
             return $lang;
         }
         $changed = true;
     }
     $GLOBALS['language'] = $lang;
     $lang_charset = $lang . '.UTF-8';
     if (setlocale(LC_ALL, $lang_charset)) {
         putenv('LC_ALL=' . $lang_charset);
         putenv('LANG=' . $lang_charset);
         putenv('LANGUAGE=' . $lang_charset);
     } else {
         $changed = false;
     }
     if ($changed) {
         $this->rebuild();
         $this->_cache['cfile'] = array();
         foreach ($this->listApps() as $app) {
             if ($this->isAuthenticated(array('app' => $app, 'notransparent' => true))) {
                 $this->callAppMethod($app, 'changeLanguage');
             }
         }
     }
     return $lang;
 }
All Usage Examples Of Horde_Registry_Nlsconfig::validLang
Horde_Registry_Nlsconfig