Exemple #1
0
 function chooseLanguage()
 {
     if (!$this->allowedAdminAccess) {
         return;
     }
     if (isset($_POST['chooseLanguage'])) {
         setGlobalConfigItem('language', $_POST['chooseLanguage']);
     }
     $languageDirectory = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'themes' . DIRECTORY_SEPARATOR . 'language' . DIRECTORY_SEPARATOR;
     $languageDirectories = glob($languageDirectory . '*');
     $languages = array();
     $chosenLanguage = getGlobalConfigItem('language');
     if ($chosenLanguage == null) {
         $chosenLanguage = '(auto)';
     }
     $languages[] = getAutoDetectLanguage();
     foreach ($languageDirectories as $languageDirectory) {
         $languages[] = basename($languageDirectory);
     }
     $languages[] = getFakeLanguageForTranslators();
     $languageHtml = '';
     foreach ($languages as $language) {
         $languageHtml .= '<option value="' . $language . '"';
         if ($language == $chosenLanguage) {
             $languageHtml .= ' selected="selected"';
         }
         $languageHtml .= '>';
         $languageCode = '&language-name-' . str_replace(' ', '-', $language) . ';';
         $languageHtml .= preg_replace_callback('/\\&(.*?)\\;/s', 'replaceLanguagePlaceholder', $languageCode);
         $languageHtml .= '</option>';
     }
     $pageTemplate = $this->getThemeFragment('admin-choose-language.htmlf');
     $pageTemplate = str_replace('{{list-of-languages}}', $languageHtml, $pageTemplate);
     return $pageTemplate;
 }
Exemple #2
0
function getLanguageToUse()
{
    $language = getGlobalConfigItem('language');
    if ($language == '' || $language == getAutoDetectLanguage()) {
        $langCodes = array();
        if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
            $httpLangCodes = substringBefore($_SERVER['HTTP_ACCEPT_LANGUAGE'], ';');
            $httpLangCodes = explode(',', $httpLangCodes);
            foreach ($httpLangCodes as $httpLangCode) {
                if (strlen($httpLangCode) >= 2) {
                    $langCodes[] = substr($httpLangCode, 0, 2);
                }
            }
        } elseif (isset($_ENV['LC_MESSAGES']) || isset($_ENV[' LC_ALL']) || isset($_ENV['LANG'])) {
            $langCode = '';
            if (isset($_ENV['LC_MESSAGES']) && trim($_ENV['LC_MESSAGES'])) {
                $langCode = $_ENV['LC_MESSAGES'];
            } elseif (isset($_ENV['LC_ALL']) && trim($_ENV['LC_ALL'])) {
                $langCode = $_ENV['LC_ALL'];
            } elseif (isset($_ENV['LANG']) && trim($_ENV['LANG'])) {
                $langCode = $_ENV['LANG'];
            }
            if (strlen($langCode) >= 2) {
                $langCodes = array(substr($langCode, 0, 2));
            }
        }
        foreach ($langCodes as $langCode) {
            switch ($langCode) {
                case 'en':
                    return 'english';
                case 'fr':
                    return 'french';
            }
        }
        return 'english';
    } else {
        return $language;
    }
}