if (! isset($squirrelmail_language)) { $squirrelmail_language = ''; }
// This array specifies the available languages.
- $languages['en']['NAME'] = 'English';
- $languages['en']['CHARSET'] = 'iso-8859-1';
-
$languages['ca']['NAME'] = 'Catalan';
$languages['ca']['CHARSET'] = 'iso-8859-1';
-
- $languages['hr']['NAME'] = 'Croatian';
- $languages['hr']['CHARSET'] = 'iso-8859-2';
+ $languages['ca_CA']['ALIAS'] = 'ca';
$languages['cs_CZ']['NAME'] = 'Czech';
$languages['cs_CZ']['CHARSET'] = 'iso-8859-2';
$languages['da']['NAME'] = 'Danish';
$languages['da']['CHARSET'] = 'iso-8859-1';
+ $languages['da_DA']['ALIAS'] = 'da';
$languages['de']['NAME'] = 'Deutsch';
$languages['de']['CHARSET'] = 'iso-8859-1';
+ $languages['de_DE']['ALIAS'] = 'de';
- $languages['nl']['NAME'] = 'Dutch';
- $languages['nl']['CHARSET'] = 'iso-8859-1';
+ $languages['en']['NAME'] = 'English';
+ $languages['en']['CHARSET'] = 'iso-8859-1';
+ $languages['en_EN']['ALIAS'] = 'en';
+ $languages['es']['NAME'] = 'Spanish';
+ $languages['es']['CHARSET'] = 'iso-8859-1';
+ $languages['es_ES']['ALIAS'] = 'es';
+
+ $languages['fi']['NAME'] = 'Finnish';
+ $languages['fi']['CHARSET'] = 'iso-8859-1';
+ $languages['fi_FI']['ALIAS'] = 'fi';
+
$languages['fr']['NAME'] = 'French';
$languages['fr']['CHARSET'] = 'iso-8859-1';
+ $languages['fr_FR']['ALIAS'] = 'fr';
- $languages['fi']['NAME'] = 'Finnish';
- $languages['fi']['CHARSET'] = 'iso-8859-1';
+ $languages['hr']['NAME'] = 'Croatian';
+ $languages['hr']['CHARSET'] = 'iso-8859-2';
+ $languages['hr_HR']['ALIAS'] = 'hr';
$languages['hu']['NAME'] = 'Hungarian';
$languages['hu']['CHARSET'] = 'iso-8859-1';
+ $languages['hu_HU']['ALIAS'] = 'hu';
+ $languages['id']['NAME'] = 'Indonesian';
+ $languages['id']['CHARSET'] = 'iso-8859-1';
+ $languages['id_ID']['ALIAS'] = 'id';
+
$languages['is']['NAME'] = 'Icelandic';
$languages['is']['CHARSET'] = 'iso-8859-1';
+ $languages['is_IS']['ALIAS'] = 'is';
$languages['it']['NAME'] = 'Italian';
$languages['it']['CHARSET'] = 'iso-8859-1';
+ $languages['it_IT']['ALIAS'] = 'it';
$languages['ko']['NAME'] = 'Korean';
$languages['ko']['CHARSET'] = 'euc-KR';
+ $languages['ko_KO']['ALIAS'] = 'ko';
+
+ $languages['nl']['NAME'] = 'Dutch';
+ $languages['nl']['CHARSET'] = 'iso-8859-1';
+ $languages['nl_NL']['ALIAS'] = 'nl';
$languages['no']['NAME'] = 'Norwegian (Bokmål)';
$languages['no']['CHARSET'] = 'iso-8859-1';
-
+ $languages['no_NO']['ALIAS'] = 'no';
$languages['no_NO_ny']['NAME'] = 'Norwegian (Nynorsk)';
$languages['no_NO_ny']['CHARSET'] = 'iso-8859-1';
$languages['pl']['NAME'] = 'Polish';
$languages['pl']['CHARSET'] = 'iso-8859-2';
+ $languages['pl_PL']['ALIAS'] = 'pl';
+ $languages['pt']['NAME'] = 'Português (Portugal)';
+ $languages['pt']['CHARSET'] = 'iso-8859-1';
$languages['pt_BR']['NAME'] = 'Portuguese (Brazil)';
$languages['pt_BR']['CHARSET'] = 'iso-8859-1';
+ $languages['pt_PT']['ALIAS'] = 'pt';
$languages['ru']['NAME'] = 'Russian KOI8-R';
$languages['ru']['CHARSET'] = 'koi8-r';
+ $languages['ru_RU']['ALIAS'] = 'ru';
$languages['sr']['NAME'] = 'Serbian';
$languages['sr']['CHARSET'] = 'iso-8859-2';
+ $languages['sr_SR']['ALIAS'] = 'sr';
- $languages['es']['NAME'] = 'Spanish';
- $languages['es']['CHARSET'] = 'iso-8859-1';
-
$languages['sv']['NAME'] = 'Swedish';
$languages['sv']['CHARSET'] = 'iso-8859-1';
+ $languages['sv_SV']['ALIAS'] = 'sv';
$languages['tw']['NAME'] = 'Taiwan';
$languages['tw']['CHARSET'] = 'big5';
+ $languages['tw_TW']['ALIAS'] = 'tw';
// Decodes a string to the internal encoding from the given charset
global $use_gettext;
// Detect whether gettext is installed.
- // If it is, set the flag so we can use it.
- if (! function_exists('_') ||
- ! function_exists('bindtextdomain') ||
- ! function_exists('textdomain'))
- $use_gettext = false;
- else
- $use_gettext = true;
-
-
- // Avoid warnings/errors if gettext is not installed
- if (! function_exists('_')) {
- function _($str) { return $str; };
- }
- if (! function_exists('bindtextdomain')) {
- function bindtextdomain() { return; }
- }
- if (! function_exists('textdomain')) {
- function textdomain() { return; }
+ $gettext_flags = 0;
+ if (function_exists('_')) $gettext_flags += 1;
+ if (function_exists('bindtextdomain')) $gettext_flags += 2;
+ if (function_exists('textdomain')) $gettext_flags += 4;
+
+ // If gettext is fully loaded, cool
+ if ($gettext_flags == 7)
+ $use_gettext = true;
+ // If we can fake gettext, try that
+ elseif ($gettext_flags == 0) {
+ $use_gettext = true;
+ include('../functions/gettext.php');
+ } else {
+ // Uh-ho. A weird install
+ if (! $gettext_flags & 1) {
+ function _($str) { return $str; };
+ }
+ if (! $gettext_flags & 2) {
+ function bindtextdomain() { return; }
+ }
+ if (! $gettext_flags & 4) {
+ function textdomain() { return; }
+ }
}
{
static $SetupAlready = 0;
global $HTTP_ACCEPT_LANGUAGE, $use_gettext, $languages,
- $squirrelmail_language;
+ $squirrelmail_language, $squirrelmail_default_language,
+ $sm_notAlias;
if ($SetupAlready)
return;
-
+
$SetupAlready = 1;
$charset_headers_sent=false;
if ($do_search && ! $sm_language && isset($HTTP_ACCEPT_LANGUAGE)) {
$sm_language = substr($HTTP_ACCEPT_LANGUAGE, 0, 2);
}
+ if (! $sm_language && isset($squirrelmail_default_language))
+ $sm_language = $squirrelmail_default_language;
+ $sm_notAlias = $sm_language;
+ while (isset($languages[$sm_notAlias]['ALIAS']))
+ $sm_notAlias = $languages[$sm_notAlias]['ALIAS'];
if (isset($sm_language) && $use_gettext &&
- $squirrelmail_language != '' &&
- isset($languages[$sm_language]['CHARSET'])) {
+ $squirrelmail_language != '' &&
+ isset($languages[$sm_notAlias]['CHARSET'])) {
if ((ini_get('safe_mode') == FALSE) && (getenv('LC_ALL') != $sm_language)) {
- putenv('LC_ALL=' . $sm_language);
+ putenv('LC_ALL=' . $sm_notAlias);
}
- setlocale('LC_ALL', $sm_language);
+ setlocale('LC_ALL', $sm_notAlias);
bindtextdomain('squirrelmail', '../locale/');
textdomain('squirrelmail');
header ('Content-Type: text/html; charset=' . $languages[$sm_language]['CHARSET']);
- $charset_headers_sent=true;
}
- return $charset_headers_sent;
}
function set_my_charset(){
global $data_dir, $username, $default_charset, $languages;
$my_language = getPref($data_dir, $username, "language");
if (!$my_language) return;
+ while (isset($languages[$my_language]['ALIAS']))
+ $my_language = $languages[$my_language]['ALIAS'];
$my_charset=$languages[$my_language]['CHARSET'];
if ($my_charset) $default_charset=$my_charset;
}