Source for file i18n.php
Documentation is available at i18n.php
* SquirrelMail internationalization functions
* This file contains variuos functions that are needed to do
* internationalization of SquirrelMail.
* Internally the output character set is used. Other characters are
* encoded using Unicode entities according to HTML 4.0.
* @copyright © 1999-2006 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id: i18n.php,v 1.129.2.49 2006/04/30 04:49:34 tokul Exp $
/** Everything uses global.php... */
require_once(SM_PATH .
'functions/global.php');
* php setlocale function wrapper
* From php 4.3.0 it is possible to use arrays in order to set locale.
* php gettext extension works only when locale is set. This wrapper
* function allows to use more than one locale name.
* @param int $category locale category name. Use php named constants
* (LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME)
* @param mixed $locale option contains array with possible locales or string with one locale
* @return string name of set locale or false, if all locales fail.
* @see http://www.php.net/setlocale
// string with only one locale
// older php version (second setlocale argument must be string)
while ( ! $ret &&
$index<
count($locale)) {
// php 4.3.0 or better, use entire array
if (preg_match("/^.*\/.*\/.*\/.*\/.*\/.*$/",$ret)) {
* Welcome to We-Don't-Follow-Own-Fine-Manual department
* OpenBSD 3.8, 3.9-current and maybe later versions
* return invalid response to setlocale command.
* SM bug report #1427512.
* Converts string from given charset to charset, that can be displayed by user translation.
* Function by default returns html encoded strings, if translation uses different encoding.
* If Japanese translation is used - function returns string converted to euc-jp
* If $charset is not supported - function returns unconverted string.
* sanitizing of html tags is also done by this function.
* @param string $string Text to be decoded
* @param boolean $force_decode converts string to html without $charset!=$default_charset check.
* Argument is available since 1.5.1 and 1.4.5.
* @param boolean $save_html disables htmlspecialchars() in order to preserve
* html formating. Use with care. Available since 1.5.1 and 1.4.6
* @return string decoded string
function charset_decode ($charset, $string, $force_decode=
false, $save_html=
false) {
if (isset
($languages[$squirrelmail_language]['XTRA_CODE']) &&
$string =
$languages[$squirrelmail_language]['XTRA_CODE']('decode', $string);
/* All HTML special characters are 7 bit and can be replaced first */
// Don't do conversion if charset is the same.
if ( ! $force_decode &&
$charset ==
strtolower($default_charset) )
/* controls cpu and memory intensive decoding cycles */
global $aggressive_decoding;
$aggressive_decoding =
false;
$decodefile=
SM_PATH .
'functions/decode/' .
$decode .
'.php';
include_once($decodefile);
$ret =
call_user_func('charset_decode_'.
$decode, $string, $save_html);
* Converts html string to given charset
* @param boolean $htmlencode keep htmlspecialchars encoding
$encodefile=
SM_PATH .
'functions/encode/' .
$encode .
'.php';
include_once($encodefile);
// function replaces all 8bit html entities with question marks.
// it is used when other encoding functions are unavailable
include_once(SM_PATH .
'functions/encode/us_ascii.php');
* fix for yahoo users that remove all us-ascii related things
* Undo html special chars, some places (like compose form) have
* own sanitizing functions and don't need html symbols.
* Undo chars only after encoding in order to prevent conversion of
* html entities in plain text emails.
$ret =
str_replace(array('&','>','<','"'),array('&','>','<','"'),$ret);
* Combined decoding and encoding functions
* If conversion is done to charset different that utf-8, unsupported symbols
* will be replaced with question marks.
* @param string $in_charset initial charset
* @param string $string string that has to be converted
* @param string $out_charset final charset
* @param boolean $htmlencode keep htmlspecialchars encoding
* @return string converted string
function charset_convert($in_charset,$string,$out_charset,$htmlencode=
true) {
* Makes charset name suitable for decoding cycles
* ks_c_5601_1987, x-euc-* and x-windows-* charsets are supported
* @param string $charset Name of charset
* @return string $charset Adjusted name of charset
/* remove minus and characters that might be used in paths from charset
* name in order to be able to use it in function names and include calls.
// OE ks_c_5601_1987 > cp949
$charset=
str_replace('ks_c_5601_1987','cp949',$charset);
// Moz x-windows-949 > cp949
// windows-125x and cp125x charsets
// iso-8859-8-i -> iso-8859-8
// use same cycle until I'll find differences
$charset=
str_replace('iso_8859_8_i','iso_8859_8',$charset);
* Set up the language to be output
* if $do_search is true, then scan the browser information
* for a possible language that we know
function set_up_language($sm_language, $do_search =
false, $default =
false) {
static $SetupAlready =
0;
global $use_gettext, $languages,
$squirrelmail_language, $squirrelmail_default_language,
$default_charset, $sm_notAlias;
* detect preferred language from header when SquirrelMail asks for
* it or when default language is set to empty string.
if (($do_search ||
empty($squirrelmail_default_language)) &&
$sm_language =
substr($accept_lang, 0, 2);
* Use default language when it is not detected or when script
* asks to use default language.
if ((!$sm_language||
$default) &&
! empty($squirrelmail_default_language)) {
$squirrelmail_language =
$squirrelmail_default_language;
$sm_language =
$squirrelmail_default_language;
/** provide failsafe language when detection fails */
if (! $sm_language) $sm_language=
'en_US';
$sm_notAlias =
$sm_language;
* Catch removed translation
* System reverts to English translation if user prefs contain translation
* that is not available in $languages array
if (!isset
($languages[$sm_notAlias])) {
while (isset
($languages[$sm_notAlias]['ALIAS'])) {
$sm_notAlias =
$languages[$sm_notAlias]['ALIAS'];
if ( isset
($sm_language) &&
isset
($languages[$sm_notAlias]['CHARSET']) ) {
if ($sm_notAlias ==
'ja_JP') {
bind_textdomain_codeset ("squirrelmail", 'EUC-JP');
bind_textdomain_codeset ("squirrelmail", $languages[$sm_notAlias]['CHARSET'] );
// Use LOCALE key, if it is set.
if (isset
($languages[$sm_notAlias]['LOCALE'])){
$longlocale=
$languages[$sm_notAlias]['LOCALE'];
$longlocale=
$sm_notAlias;
// check if locale is set and assign that locale to $longlocale
// in order to use it in putenv calls.
// setting of all locales failed.
// we need string instead of array used in LOCALE key.
$longlocale=
$sm_notAlias;
if ( !((bool)
ini_get('safe_mode')) &&
getenv( 'LC_ALL' ) !=
$longlocale ) {
putenv( "LC_ALL=$longlocale" );
putenv( "LANGUAGE=$longlocale" );
if ($sm_notAlias==
'tr_TR') putenv( "LC_CTYPE=C" );
// Workaround for plugins that use numbers with floating point
// It might be removed if plugins use correct decimal delimiters
// according to locale settings.
// Workaround for specific Turkish strtolower/strtoupper rules.
// Many functions expect English conversion rules.
if ($sm_notAlias==
'tr_TR') setlocale(LC_CTYPE,'C');
$squirrelmail_language =
$sm_notAlias;
if ($squirrelmail_language ==
'ja_JP') {
header ('Content-Type: text/html; charset=EUC-JP');
echo
_("You need to have PHP installed with the multibyte string function enabled (using configure option --enable-mbstring).");
// Revert to English link has to be added.
// stop further execution in order not to get php errors on mb_internal_encoding().
mb_internal_encoding('EUC-JP');
} elseif ($squirrelmail_language ==
'en_US') {
header( 'Content-Type: text/html; charset=' .
$default_charset );
header( 'Content-Type: text/html; charset=' .
$languages[$sm_notAlias]['CHARSET'] );
// mbstring.func_overload<>0 fix. See cvs HEAD comments.
if ($squirrelmail_language !=
'ja_JP' &&
(int)
ini_get('mbstring.func_overload')!=
0) {
mb_internal_encoding('pass');
* Sets default_charset variable according to the one that is used by user's translations.
* Function changes global $default_charset variable in order to be sure, that it
* contains charset used by user's translation. Sanity of $squirrelmail_language
* and $default_charset combination provided in SquirrelMail config is also tested.
* There can be a $default_charset setting in the
* config.php file, but the user may have a different language
* selected for a user interface. This function checks the
* language selected by the user and tags the outgoing messages
* with the appropriate charset corresponding to the language
* selection. This is "more right" (tm), than just stamping the
* message blindly with the system-wide $default_charset.
$my_language =
getPref($data_dir, $username, 'language');
$my_language =
$squirrelmail_language ;
// Catch removed translation
if (!isset
($languages[$my_language])) {
while (isset
($languages[$my_language]['ALIAS'])) {
$my_language =
$languages[$my_language]['ALIAS'];
$my_charset =
$languages[$my_language]['CHARSET'];
if ($my_language!=
'en_US') {
$default_charset =
$my_charset;
* Function informs if it is safe to convert given charset to the one that is used by user.
* It is safe to use conversion only if user uses utf-8 encoding and when
* converted charset is similar to the one that is used by user.
* @param string $input_charset Charset of text that needs to be converted
* @return bool is it possible to convert to user's charset
if (isset
($lossy_encoding) &&
$lossy_encoding )
// Is user's locale Unicode based ?
if ( $default_charset ==
"utf-8" ) {
// Charsets that are similar
switch ($default_charset) {
if ( $input_charset ==
"iso-8859-5" ||
$input_charset ==
"koi8-r" ||
$input_charset ==
"koi8-u" ) {
if ( $input_charset ==
"iso-8859-13" ||
$input_charset ==
"iso-8859-4" ) {
if ( $input_charset ==
"iso-8859-13" ||
$input_charset ==
"windows-1257" ) {
if ( $input_charset ==
"windows-1251" ||
$input_charset ==
"koi8-r" ||
$input_charset ==
"koi8-u" ) {
if ( $input_charset ==
"iso-8859-4" ||
$input_charset ==
"windows-1257" ) {
if ( $input_charset ==
"windows-1251" ||
$input_charset ==
"iso-8859-5" ||
$input_charset ==
"koi8-u" ) {
if ( $input_charset ==
"windows-1251" ||
$input_charset ==
"iso-8859-5" ||
$input_charset ==
"koi8-r" ) {
/* ---- extra code functions ----*/
* Japanese charset extra function
$detect_encoding =
@mb_detect_encoding($ret);
if ($detect_encoding ==
'JIS' ||
$detect_encoding ==
'EUC-JP' ||
$detect_encoding ==
'SJIS' ||
$detect_encoding ==
'UTF-8') {
$ret =
mb_convert_kana(mb_convert_encoding($ret, 'EUC-JP', 'AUTO'), "KV");
$detect_encoding =
@mb_detect_encoding($ret);
if ($detect_encoding ==
'JIS' ||
$detect_encoding ==
'EUC-JP' ||
$detect_encoding ==
'SJIS' ||
$detect_encoding ==
'UTF-8') {
$ret =
mb_convert_encoding(mb_convert_kana($ret, "KV"), 'JIS', 'AUTO');
$ret =
mb_strimwidth($ret, 0, $width, '...');
$tmpstr =
mb_substr($ret, 0, 1);
for ($i =
1; $i <
mb_strlen($ret); $i++
) {
$tmp =
mb_substr($ret, $i, 1);
if (strlen($tmp) ==
$prevcsize) {
mb_encode_mimeheader($tmpstr,'iso-2022-jp','B',''));
if (strlen(mb_substr($tmpstr, 0, 1)) ==
1)
mb_encode_mimeheader($tmpstr,'iso-2022-jp','B',''));
if (eregi('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=', $ret))
$ret =
@mb_decode_mimeheader($ret);
$ret =
@mb_convert_encoding($ret, 'EUC-JP', 'AUTO');
if (strstr($useragent, 'Windows') !==
false ||
strstr($useragent, 'Mac_') !==
false) {
$ret =
mb_convert_encoding($ret, 'SJIS', 'AUTO');
$ret =
mb_convert_encoding($ret, 'EUC-JP', 'AUTO');
$no_begin =
"\x21\x25\x29\x2c\x2e\x3a\x3b\x3f\x5d\x7d\xa1\xf1\xa1\xeb\xa1" .
"\xc7\xa1\xc9\xa2\xf3\xa1\xec\xa1\xed\xa1\xee\xa1\xa2\xa1\xa3\xa1\xb9" .
"\xa1\xd3\xa1\xd5\xa1\xd7\xa1\xd9\xa1\xdb\xa1\xcd\xa4\xa1\xa4\xa3\xa4" .
"\xa5\xa4\xa7\xa4\xa9\xa4\xc3\xa4\xe3\xa4\xe5\xa4\xe7\xa4\xee\xa1\xab" .
"\xa1\xac\xa1\xb5\xa1\xb6\xa5\xa1\xa5\xa3\xa5\xa5\xa5\xa7\xa5\xa9\xa5" .
"\xc3\xa5\xe3\xa5\xe5\xa5\xe7\xa5\xee\xa5\xf5\xa5\xf6\xa1\xa6\xa1\xbc" .
"\xa1\xb3\xa1\xb4\xa1\xaa\xa1\xf3\xa1\xcb\xa1\xa4\xa1\xa5\xa1\xa7\xa1" .
"\xa8\xa1\xa9\xa1\xcf\xa1\xd1";
$no_end =
"\x5c\x24\x28\x5b\x7b\xa1\xf2\x5c\xa1\xc6\xa1\xc8\xa1\xd2\xa1" .
"\xd4\xa1\xd6\xa1\xd8\xa1\xda\xa1\xcc\xa1\xf0\xa1\xca\xa1\xce\xa1\xd0\xa1\xef";
strpos($ret, 'http://') ===
FALSE &&
strpos($ret, 'https://') ===
FALSE &&
strpos($ret, 'ftp://') ===
FALSE) {
$ret =
mb_convert_kana($ret, "KV");
while ($ptr <
strlen($ret) -
1) {
$l =
mb_strcut($ret, $ptr, $wrap);
$l =
mb_strcut($ret, $ptr, 2);
while (strlen($l) !=
0 &&
mb_strpos($no_begin, $l) !==
FALSE ) {
$l =
mb_strcut($ret, $ptr, 1);
$ret =
mb_convert_encoding($ret, 'UTF7-IMAP', 'EUC-JP');
$ret =
mb_convert_encoding($ret, 'EUC-JP', 'UTF7-IMAP');
* Korean charset extra function
* Hangul(Korean Character) Attached File Name Fix.
$ret =
str_replace("\x0D\x0A", '', $ret); /* Hanmail's CR/LF Clear */
for ($i=
0;$i<
strlen($ret);$i++
) {
if ($ret[$i] >=
"\xA1" &&
$ret[$i] <=
"\xFE") { /* 0xA1 - 0XFE are Valid */
} else if (($ret[$i] >=
'a' &&
$ret[$i] <=
'z') ||
/* From Original ereg_replace in download.php */
($ret[$i] >=
'A' &&
$ret[$i] <=
'Z') ||
($ret[$i] ==
'.') ||
($ret[$i] ==
'-')) {
/* ------------------------------ main --------------------------- */
global $squirrelmail_language, $languages, $use_gettext;
$squirrelmail_language =
'';
/* This array specifies the available languages. */
$languages['bg_BG']['NAME'] =
'Bulgarian';
$languages['bg_BG']['CHARSET'] =
'windows-1251';
$languages['bg_BG']['LOCALE'] =
'bg_BG.CP1251';
$languages['bg']['ALIAS'] =
'bg_BG';
$languages['bn_IN']['NAME'] =
'Bengali';
$languages['bn_IN']['CHARSET'] =
'utf-8';
$languages['bn_IN']['LOCALE'] =
'bn_IN.UTF-8';
$languages['bn_BD']['ALIAS'] =
'bn_IN';
$languages['bn']['ALIAS'] =
'bn_IN';
$languages['ca_ES']['NAME'] =
'Catalan';
$languages['ca_ES']['CHARSET'] =
'iso-8859-1';
$languages['ca_ES']['LOCALE'] =
array('ca_ES.ISO8859-1','ca_ES.ISO-8859-1','ca_ES');
$languages['ca']['ALIAS'] =
'ca_ES';
$languages['cs_CZ']['NAME'] =
'Czech';
$languages['cs_CZ']['CHARSET'] =
'iso-8859-2';
$languages['cs_CZ']['LOCALE'] =
array('cs_CZ.ISO8859-2','cs_CZ.ISO-8859-2','cs_CZ');
$languages['cs']['ALIAS'] =
'cs_CZ';
$languages['cy_GB']['NAME'] =
'Welsh';
$languages['cy_GB']['CHARSET'] =
'iso-8859-1';
$languages['cy_GB']['LOCALE'] =
array('cy_GB.ISO8859-1','cy_GB.ISO-8859-1','cy_GB');
$languages['cy']['ALIAS'] =
'cy_GB';
$languages['da_DK']['NAME'] =
'Danish';
$languages['da_DK']['CHARSET'] =
'iso-8859-1';
$languages['da_DK']['LOCALE'] =
array('da_DK.ISO8859-1','da_DK.ISO-8859-1','da_DK');
$languages['da']['ALIAS'] =
'da_DK';
$languages['de_DE']['NAME'] =
'Deutsch';
$languages['de_DE']['CHARSET'] =
'iso-8859-1';
$languages['de_DE']['LOCALE'] =
array('de_DE.ISO8859-1','de_DE.ISO-8859-1','de_DE');
$languages['de']['ALIAS'] =
'de_DE';
$languages['el_GR']['NAME'] =
'Greek';
$languages['el_GR']['CHARSET'] =
'iso-8859-7';
$languages['el_GR']['LOCALE'] =
array('el_GR.ISO8859-7','el_GR.ISO-8859-7','el_GR');
$languages['el']['ALIAS'] =
'el_GR';
$languages['en_GB']['NAME'] =
'British';
$languages['en_GB']['CHARSET'] =
'iso-8859-15';
$languages['en_GB']['LOCALE'] =
array('en_GB.ISO8859-15','en_GB.ISO-8859-15','en_GB');
$languages['en_US']['NAME'] =
'English';
$languages['en_US']['CHARSET'] =
'iso-8859-1';
$languages['en_US']['LOCALE'] =
'en_US.ISO8859-1';
$languages['en']['ALIAS'] =
'en_US';
$languages['es_ES']['NAME'] =
'Spanish';
$languages['es_ES']['CHARSET'] =
'iso-8859-1';
$languages['es_ES']['LOCALE'] =
array('es_ES.ISO8859-1','es_ES.ISO-8859-1','es_ES');
$languages['es']['ALIAS'] =
'es_ES';
$languages['et_EE']['NAME'] =
'Estonian';
$languages['et_EE']['CHARSET'] =
'iso-8859-15';
$languages['et_EE']['LOCALE'] =
array('et_EE.ISO8859-15','et_EE.ISO-8859-15','et_EE');
$languages['et']['ALIAS'] =
'et_EE';
$languages['eu_ES']['NAME'] =
'Basque';
$languages['eu_ES']['CHARSET'] =
'iso-8859-1';
$languages['eu_ES']['LOCALE'] =
array('eu_ES.ISO8859-1','eu_ES.ISO-8859-1','eu_ES');
$languages['eu']['ALIAS'] =
'eu_ES';
$languages['fi_FI']['NAME'] =
'Finnish';
$languages['fi_FI']['CHARSET'] =
'iso-8859-1';
$languages['fi_FI']['LOCALE'] =
array('fi_FI.ISO8859-1','fi_FI.ISO-8859-1','fi_FI');
$languages['fi']['ALIAS'] =
'fi_FI';
$languages['fo_FO']['NAME'] =
'Faroese';
$languages['fo_FO']['CHARSET'] =
'iso-8859-1';
$languages['fo_FO']['LOCALE'] =
array('fo_FO.ISO8859-1','fo_FO.ISO-8859-1','fo_FO');
$languages['fo']['ALIAS'] =
'fo_FO';
$languages['fr_FR']['NAME'] =
'French';
$languages['fr_FR']['CHARSET'] =
'iso-8859-1';
$languages['fr_FR']['LOCALE'] =
array('fr_FR.ISO8859-1','fr_FR.ISO-8859-1','fr_FR');
$languages['fr']['ALIAS'] =
'fr_FR';
$languages['hr_HR']['NAME'] =
'Croatian';
$languages['hr_HR']['CHARSET'] =
'iso-8859-2';
$languages['hr_HR']['LOCALE'] =
array('hr_HR.ISO8859-2','hr_HR.ISO-8859-2','hr_HR');
$languages['hr']['ALIAS'] =
'hr_HR';
$languages['hu_HU']['NAME'] =
'Hungarian';
$languages['hu_HU']['CHARSET'] =
'iso-8859-2';
$languages['hu_HU']['LOCALE'] =
array('hu_HU.ISO8859-2','hu_HU.ISO-8859-2','hu_HU');
$languages['hu']['ALIAS'] =
'hu_HU';
$languages['id_ID']['NAME'] =
'Bahasa Indonesia';
$languages['id_ID']['CHARSET'] =
'iso-8859-1';
$languages['id_ID']['LOCALE'] =
array('id_ID.ISO8859-1','id_ID.ISO-8859-1','id_ID');
$languages['id']['ALIAS'] =
'id_ID';
$languages['is_IS']['NAME'] =
'Icelandic';
$languages['is_IS']['CHARSET'] =
'iso-8859-1';
$languages['is_IS']['LOCALE'] =
array('is_IS.ISO8859-1','is_IS.ISO-8859-1','is_IS');
$languages['is']['ALIAS'] =
'is_IS';
$languages['it_IT']['NAME'] =
'Italian';
$languages['it_IT']['CHARSET'] =
'iso-8859-1';
$languages['it_IT']['LOCALE'] =
array('it_IT.ISO8859-1','it_IT.ISO-8859-1','it_IT');
$languages['it']['ALIAS'] =
'it_IT';
$languages['ja_JP']['NAME'] =
'Japanese';
$languages['ja_JP']['CHARSET'] =
'iso-2022-jp';
$languages['ja_JP']['XTRA_CODE'] =
'japanese_charset_xtra';
$languages['ja']['ALIAS'] =
'ja_JP';
$languages['ka']['NAME'] =
'Georgian';
$languages['ka']['CHARSET'] =
'utf-8';
$languages['ka']['LOCALE'] =
array('ka_GE.UTF-8','ka_GE','ka');
$languages['ka_GE']['ALIAS'] =
'ka';
$languages['ko_KR']['NAME'] =
'Korean';
$languages['ko_KR']['CHARSET'] =
'euc-KR';
// Function does not provide all needed options
// $languages['ko_KR']['XTRA_CODE'] = 'korean_charset_xtra';
$languages['ko']['ALIAS'] =
'ko_KR';
$languages['lt_LT']['NAME'] =
'Lithuanian';
$languages['lt_LT']['CHARSET'] =
'utf-8';
$languages['lt_LT']['LOCALE'] =
'lt_LT.UTF-8';
$languages['lt']['ALIAS'] =
'lt_LT';
$languages['ms_MY']['NAME'] =
'Bahasa Melayu';
$languages['ms_MY']['CHARSET'] =
'iso-8859-1';
$languages['ms_MY']['LOCALE'] =
array('ms_MY.ISO8859-1','ms_MY.ISO-8859-1','ms_MY');
$languages['my']['ALIAS'] =
'ms_MY';
$languages['nl_NL']['NAME'] =
'Dutch';
$languages['nl_NL']['CHARSET'] =
'iso-8859-1';
$languages['nl_NL']['LOCALE'] =
array('nl_NL.ISO8859-1','nl_NL.ISO-8859-1','nl_NL');
$languages['nl']['ALIAS'] =
'nl_NL';
$languages['nb_NO']['NAME'] =
'Norwegian (Bokmål)';
$languages['nb_NO']['CHARSET'] =
'iso-8859-1';
$languages['nb_NO']['LOCALE'] =
array('nb_NO.ISO8859-1','nb_NO.ISO-8859-1','nb_NO');
$languages['nb']['ALIAS'] =
'nb_NO';
$languages['nn_NO']['NAME'] =
'Norwegian (Nynorsk)';
$languages['nn_NO']['CHARSET'] =
'iso-8859-1';
$languages['nn_NO']['LOCALE'] =
array('nn_NO.ISO8859-1','nn_NO.ISO-8859-1','nn_NO');
$languages['pl_PL']['NAME'] =
'Polish';
$languages['pl_PL']['CHARSET'] =
'iso-8859-2';
$languages['pl_PL']['LOCALE'] =
array('pl_PL.ISO8859-2','pl_PL.ISO-8859-2','pl_PL');
$languages['pl']['ALIAS'] =
'pl_PL';
$languages['pt_PT']['NAME'] =
'Portuguese (Portugal)';
$languages['pt_PT']['CHARSET'] =
'iso-8859-1';
$languages['pt_PT']['LOCALE'] =
array('pt_PT.ISO8859-1','pt_PT.ISO-8859-1','pt_PT');
$languages['pt']['ALIAS'] =
'pt_PT';
$languages['pt_BR']['NAME'] =
'Portuguese (Brazil)';
$languages['pt_BR']['CHARSET'] =
'iso-8859-1';
$languages['pt_BR']['LOCALE'] =
array('pt_BR.ISO8859-1','pt_BR.ISO-8859-1','pt_BR');
$languages['ro_RO']['NAME'] =
'Romanian';
$languages['ro_RO']['CHARSET'] =
'iso-8859-2';
$languages['ro_RO']['LOCALE'] =
array('ro_RO.ISO8859-2','ro_RO.ISO-8859-2','ro_RO');
$languages['ro']['ALIAS'] =
'ro_RO';
$languages['ru_RU']['NAME'] =
'Russian';
$languages['ru_RU']['CHARSET'] =
'utf-8';
$languages['ru_RU']['LOCALE'] =
'ru_RU.UTF-8';
$languages['ru']['ALIAS'] =
'ru_RU';
$languages['sk_SK']['NAME'] =
'Slovak';
$languages['sk_SK']['CHARSET'] =
'iso-8859-2';
$languages['sk_SK']['LOCALE'] =
array('sk_SK.ISO8859-2','sk_SK.ISO-8859-2','sk_SK');
$languages['sk']['ALIAS'] =
'sk_SK';
$languages['sl_SI']['NAME'] =
'Slovenian';
$languages['sl_SI']['CHARSET'] =
'iso-8859-2';
$languages['sl_SI']['LOCALE'] =
array('sl_SI.ISO8859-2','sl_SI.ISO-8859-2','sl_SI');
$languages['sl']['ALIAS'] =
'sl_SI';
$languages['sr_YU']['NAME'] =
'Serbian';
$languages['sr_YU']['CHARSET'] =
'iso-8859-2';
$languages['sr_YU']['LOCALE'] =
array('sr_YU.ISO8859-2','sr_YU.ISO-8859-2','sr_YU');
$languages['sr']['ALIAS'] =
'sr_YU';
$languages['sv_SE']['NAME'] =
'Swedish';
$languages['sv_SE']['CHARSET'] =
'iso-8859-1';
$languages['sv_SE']['LOCALE'] =
array('sv_SE.ISO8859-1','sv_SE.ISO-8859-1','sv_SE');
$languages['sv']['ALIAS'] =
'sv_SE';
/* translation is disabled because it contains less than 50%
$languages['th_TH']['NAME'] = 'Thai';
$languages['th_TH']['CHARSET'] = 'tis-620';
$languages['th_TH']['LOCALE'] = 'th_TH.TIS-620';
$languages['th']['ALIAS'] = 'th_TH';
$languages['tr_TR']['NAME'] =
'Turkish';
$languages['tr_TR']['CHARSET'] =
'iso-8859-9';
$languages['tr_TR']['LOCALE'] =
array('tr_TR.ISO8859-9','tr_TR.ISO-8859-9','tr_TR');
$languages['tr']['ALIAS'] =
'tr_TR';
$languages['zh_TW']['NAME'] =
'Chinese Trad';
$languages['zh_TW']['CHARSET'] =
'big5';
$languages['zh_TW']['LOCALE'] =
'zh_TW.BIG5';
$languages['tw']['ALIAS'] =
'zh_TW';
$languages['zh_CN']['NAME'] =
'Chinese Simp';
$languages['zh_CN']['CHARSET'] =
'gb2312';
$languages['zh_CN']['LOCALE'] =
'zh_CN.GB2312';
$languages['cn']['ALIAS'] =
'zh_CN';
$languages['uk_UA']['NAME'] =
'Ukrainian';
$languages['uk_UA']['CHARSET'] =
'utf-8';
$languages['uk_UA']['LOCALE'] =
array('uk_UA.UTF-8','uk_UA','uk');
$languages['uk']['ALIAS'] =
'uk_UA';
$languages['vi_VN']['NAME'] = 'Vietnamese';
$languages['vi_VN']['CHARSET'] = 'utf-8';
$languages['vi']['ALIAS'] = 'vi_VN';
// Right to left languages
$languages['ar']['NAME'] =
'Arabic';
$languages['ar']['CHARSET'] =
'windows-1256';
$languages['ar']['DIR'] =
'rtl';
$languages['fa_IR']['NAME'] =
'Farsi';
$languages['fa_IR']['CHARSET'] =
'utf-8';
$languages['fa_IR']['DIR'] =
'rtl';
$languages['fa_IR']['LOCALE'] =
'fa_IR.UTF-8';
$languages['fa']['ALIAS'] =
'fa_IR';
$languages['he_IL']['NAME'] =
'Hebrew';
$languages['he_IL']['CHARSET'] =
'windows-1255';
$languages['he_IL']['DIR'] =
'rtl';
$languages['he']['ALIAS'] =
'he_IL';
$languages['ug']['NAME'] =
'Uighur';
$languages['ug']['CHARSET'] =
'utf-8';
$languages['ug']['DIR'] =
'rtl';
/* Detect whether gettext is installed. */
/* If gettext is fully loaded, cool */
if ($gettext_flags ==
7) {
/* If we can fake gettext, try that */
elseif ($gettext_flags ==
0) {
include_once(SM_PATH .
'functions/gettext.php');
/* Uh-ho. A weird install */
if (! $gettext_flags & 1) {
if (! $gettext_flags & 2) {
if (! $gettext_flags & 4) {
Documentation generated on Sat, 07 Oct 2006 16:31:33 +0300 by phpDocumentor 1.3.0RC6