Updated to latest version (1.56). Bug 5165.

(http://moodle.org/bugs/bug.php?op=show&bugid=5165)

Merged from MOODLE_16_STABLE
This commit is contained in:
stronk7
2006-05-15 23:31:50 +00:00
parent 019c47d6c1
commit 4a428b5f5c
+156 -137
View File
@@ -2,7 +2,7 @@
/***************************************************************
* Copyright notice
*
* (c) 2003-2005 Kasper Skaarhoj ([email protected])
* (c) 2003-2006 Kasper Skaarhoj ([email protected])
* All rights reserved
*
* This script is part of the Typo3 project. The Typo3 project is
@@ -24,7 +24,7 @@
/**
* Class for conversion between charsets.
*
* Typo Id: class.t3lib_cs.php,v 1.54.2.2 2006/02/22 00:44:07 typo3 Exp $
* Typo Id: class.t3lib_cs.php,v 1.56 2006/05/03 08:47:30 masi Exp $
* Moodle $Id$
*
* @author Kasper Skaarhoj <[email protected]>
@@ -36,53 +36,53 @@
*
*
* 136: class t3lib_cs
* 503: function parse_charset($charset)
* 522: function get_locale_charset($locale)
* 488: function parse_charset($charset)
* 507: function get_locale_charset($locale)
*
* SECTION: Charset Conversion functions
* 575: function conv($str,$fromCS,$toCS,$useEntityForNoChar=0)
* 615: function convArray(&$array,$fromCS,$toCS,$useEntityForNoChar=0)
* 632: function utf8_encode($str,$charset)
* 678: function utf8_decode($str,$charset,$useEntityForNoChar=0)
* 721: function utf8_to_entities($str)
* 754: function entities_to_utf8($str,$alsoStdHtmlEnt=0)
* 788: function utf8_to_numberarray($str,$convEntities=0,$retChar=0)
* 838: function UnumberToChar($cbyte)
* 883: function utf8CharToUnumber($str,$hex=0)
* 560: function conv($str,$fromCS,$toCS,$useEntityForNoChar=0)
* 600: function convArray(&$array,$fromCS,$toCS,$useEntityForNoChar=0)
* 617: function utf8_encode($str,$charset)
* 663: function utf8_decode($str,$charset,$useEntityForNoChar=0)
* 706: function utf8_to_entities($str)
* 739: function entities_to_utf8($str,$alsoStdHtmlEnt=0)
* 773: function utf8_to_numberarray($str,$convEntities=0,$retChar=0)
* 823: function UnumberToChar($cbyte)
* 868: function utf8CharToUnumber($str,$hex=0)
*
* SECTION: Init functions
* 926: function initCharset($charset)
* 988: function initUnicodeData($mode=null)
* 1213: function initCaseFolding($charset)
* 1275: function initToASCII($charset)
* 911: function initCharset($charset)
* 973: function initUnicodeData($mode=null)
* 1198: function initCaseFolding($charset)
* 1260: function initToASCII($charset)
*
* SECTION: String operation functions
* 1346: function substr($charset,$string,$start,$len=null)
* 1331: function substr($charset,$string,$start,$len=null)
* 1384: function strlen($charset,$string)
* 1412: function crop($charset,$string,$len,$crop='')
* 1465: function strtrunc($charset,$string,$len)
* 1499: function conv_case($charset,$string,$case)
* 1525: function specCharsToASCII($charset,$string)
* 1414: function crop($charset,$string,$len,$crop='')
* 1467: function strtrunc($charset,$string,$len)
* 1501: function conv_case($charset,$string,$case)
* 1527: function specCharsToASCII($charset,$string)
*
* SECTION: Internal string operation functions
* 1565: function sb_char_mapping($str,$charset,$mode,$opt='')
* 1567: function sb_char_mapping($str,$charset,$mode,$opt='')
*
* SECTION: Internal UTF-8 string operation functions
* 1620: function utf8_substr($str,$start,$len=null)
* 1653: function utf8_strlen($str)
* 1674: function utf8_strtrunc($str,$len)
* 1696: function utf8_strpos($haystack,$needle,$offset=0)
* 1719: function utf8_strrpos($haystack,$needle)
* 1739: function utf8_char2byte_pos($str,$pos)
* 1780: function utf8_byte2char_pos($str,$pos)
* 1803: function utf8_char_mapping($str,$mode,$opt='')
* 1622: function utf8_substr($str,$start,$len=null)
* 1655: function utf8_strlen($str)
* 1676: function utf8_strtrunc($str,$len)
* 1698: function utf8_strpos($haystack,$needle,$offset=0)
* 1723: function utf8_strrpos($haystack,$needle)
* 1745: function utf8_char2byte_pos($str,$pos)
* 1786: function utf8_byte2char_pos($str,$pos)
* 1809: function utf8_char_mapping($str,$mode,$opt='')
*
* SECTION: Internal EUC string operation functions
* 1879: function euc_strtrunc($str,$len,$charset)
* 1908: function euc_substr($str,$start,$charset,$len=null)
* 1933: function euc_strlen($str,$charset)
* 1960: function euc_char2byte_pos($str,$pos,$charset)
* 2001: function euc_char_mapping($str,$charset,$mode,$opt='')
* 1885: function euc_strtrunc($str,$len,$charset)
* 1914: function euc_substr($str,$start,$charset,$len=null)
* 1939: function euc_strlen($str,$charset)
* 1966: function euc_char2byte_pos($str,$pos,$charset)
* 2007: function euc_char_mapping($str,$charset,$mode,$opt='')
*
* TOTAL FUNCTIONS: 35
* (This index is automatically created/updated by the extension "extdeveval")
@@ -245,85 +245,114 @@ class t3lib_cs {
'ucs4' => 'ucs-4',
);
// mapping of iso-639:2 language codes to language (family) names
var $lang_to_langfamily=array(
// mapping of iso-639:2 language codes to script names
var $lang_to_script=array(
// iso-639:2 language codes, see:
// http://www.w3.org/WAI/ER/IG/ert/iso639.htm
// http://www.loc.gov/standards/iso639-2/langcodes.html
// http://www.unicode.org/onlinedat/languages.html
'ar' => 'arabic',
'bg' => 'cyrillic',
'cs' => 'east_european',
'da' => 'west_european',
'de' => 'west_european',
'es' => 'west_european',
'bg' => 'cyrillic', // Bulgarian
'bs' => 'east_european', // Bosnian
'cs' => 'east_european', // Czech
'da' => 'west_european', // Danish
'de' => 'west_european', // German
'es' => 'west_european', // Spanish
'et' => 'estonian',
'eu' => 'west_european',
'fi' => 'west_european',
'fr' => 'west_european',
'eo' => 'unicode', // Esperanto
'eu' => 'west_european', // Basque
'fa' => 'arabic', // Persian
'fi' => 'west_european', // Finish
'fo' => 'west_european', // Faroese
'fr' => 'west_european', // French
'gr' => 'greek',
'hr' => 'east_european',
'hu' => 'east_european',
'iw' => 'hebrew',
'is' => 'west_european',
'it' => 'west_european',
'he' => 'hebrew', // Hebrew (since 1998)
'hi' => 'unicode', // Hindi
'hr' => 'east_european', // Croatian
'hu' => 'east_european', // Hungarian
'iw' => 'hebrew', // Hebrew (til 1998)
'is' => 'west_european', // Icelandic
'it' => 'west_european', // Italian
'ja' => 'japanese',
'kl' => 'west_european',
'kl' => 'west_european', // Greenlandic
'ko' => 'korean',
'lt' => 'lithuanian',
'lv' => 'west_european', // Latvian/Lettish
'nl' => 'west_european',
'no' => 'west_european',
'pl' => 'east_european',
'pt' => 'west_european',
'ro' => 'east_european',
'ru' => 'cyrillic',
'sk' => 'east_european',
'sl' => 'east_european',
'sv' => 'west_european',
'lv' => 'west_european', // Latvian/Lettish
'nl' => 'west_european', // Dutch
'no' => 'west_european', // Norwegian
'pl' => 'east_european', // Polish
'pt' => 'west_european', // Portuguese
'ro' => 'east_european', // Romanian
'ru' => 'cyrillic', // Russian
'sk' => 'east_european', // Slovak
'sl' => 'east_european', // Slovenian
'sr' => 'cyrillic', // Serbian
'sv' => 'west_european', // Swedish
'th' => 'thai',
'uk' => 'cyrillic',
'uk' => 'cyrillic', // Ukranian
'vi' => 'vietnamese',
'zh' => 'chinese',
// MS language codes, see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_language_strings.asp
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceinternational5/html/wce50conLanguageIdentifiersandLocales.asp
'ara' => 'arabic',
'bgr' => 'cyrillic', // Bulgarian
'cat' => 'west_european', // Catalan
'chs' => 'simpl_chinese',
'cht' => 'trad_chinese',
'csy' => 'east_european',
'dan' => 'west_european',
'deu' => 'west_european',
'dea' => 'west_european',
'des' => 'west_european',
'ena' => 'west_european',
'enc' => 'west_european',
'eng' => 'west_european',
'enz' => 'west_european',
'enu' => 'west_european',
'nld' => 'west_european',
'nlb' => 'west_european',
'fin' => 'west_european',
'fra' => 'west_european',
'frb' => 'west_european',
'frc' => 'west_european',
'frs' => 'west_european',
'csy' => 'east_european', // Czech
'dan' => 'west_european', // Danisch
'deu' => 'west_european', // German
'dea' => 'west_european', // German (Austrian)
'des' => 'west_european', // German (Swiss)
'ena' => 'west_european', // English (Australian)
'enc' => 'west_european', // English (Canadian)
'eng' => 'west_european', // English
'enz' => 'west_european', // English (New Zealand)
'enu' => 'west_european', // English (United States)
'euq' => 'west_european', // Basque
'fos' => 'west_european', // Faroese
'far' => 'arabic', // Persian
'fin' => 'west_european', // Finish
'fra' => 'west_european', // French
'frb' => 'west_european', // French (Belgian)
'frc' => 'west_european', // French (Canadian)
'frs' => 'west_european', // French (Swiss)
'ell' => 'greek',
'hun' => 'east_european',
'isl' => 'west_euorpean',
'ita' => 'west_european',
'its' => 'west_european',
'heb' => 'hebrew',
'hin' => 'unicode', // Hindi
'hun' => 'east_european', // Hungarian
'isl' => 'west_euorpean', // Icelandic
'ita' => 'west_european', // Italian
'its' => 'west_european', // Italian (Swiss)
'jpn' => 'japanese',
'kor' => 'korean',
'nor' => 'west_european',
'non' => 'west_european',
'plk' => 'east_european',
'ptg' => 'west_european',
'ptb' => 'west_european',
'rus' => 'east_european',
'sky' => 'east_european',
'esp' => 'west_european',
'esm' => 'west_european',
'esn' => 'west_european',
'sve' => 'west_european',
'lth' => 'lithuanian',
'lvi' => 'west_european', // Latvian/Lettish
'msl' => 'west_european', // Malay
'nlb' => 'west_european', // Dutch (Belgian)
'nld' => 'west_european', // Dutch
'nor' => 'west_european', // Norwegian (bokmal)
'non' => 'west_european', // Norwegian (nynorsk)
'plk' => 'east_european', // Polish
'ptg' => 'west_european', // Portuguese
'ptb' => 'west_european', // Portuguese (Brazil)
'rom' => 'east_european', // Romanian
'rus' => 'cyrillic', // Russian
'slv' => 'east_european', // Slovenian
'sky' => 'east_european', // Slovak
'srl' => 'east_european', // Serbian (Latin)
'srb' => 'cyrillic', // Serbian (Cyrillic)
'esp' => 'west_european', // Spanish (trad. sort)
'esm' => 'west_european', // Spanish (Mexican)
'esn' => 'west_european', // Spanish (internat. sort)
'sve' => 'west_european', // Swedish
'tha' => 'thai',
'trk' => 'turkish',
'ukr' => 'cyrillic', // Ukrainian
// English language names
'arabic' => 'arabic',
'basque' => 'west_european',
'bosnian' => 'east_european',
'bulgarian' => 'east_european',
'catalan' => 'west_european',
'croatian' => 'east_european',
@@ -331,30 +360,43 @@ class t3lib_cs {
'danish' => 'west_european',
'dutch' => 'west_european',
'english' => 'west_european',
'esperanto' => 'unicode',
'estonian' => 'estonian',
'faroese' => 'west_european',
'farsi' => 'arabic',
'finnish' => 'west_european',
'french' => 'west_european',
'galician' => 'west_european',
'german' => 'west_european',
'greek' => 'greek',
'greenlandic' => 'west_european',
'hebrew' => 'hebrew',
'hindi' => 'unicode',
'hungarian' => 'east_european',
'icelandic' => 'west_european',
'italian' => 'west_european',
'latvian' => 'west_european',
'lettish' => 'west_european',
'lithuanian' => 'lithuanian',
'malay' => 'west_european',
'norwegian' => 'west_european',
'persian' => 'arabic',
'polish' => 'east_european',
'portuguese' => 'west_european',
'russian' => 'cyrillic',
'romanian' => 'east_european',
'serbian' => 'cyrillic',
'slovak' => 'east_european',
'slovenian' => 'east_european',
'spanish' => 'west_european',
'svedish' => 'west_european',
'turkish' => 'east_european',
'that' => 'thai',
'turkish' => 'turkish',
'ukrainian' => 'cyrillic',
);
// mapping of language (family) names to charsets on Unix
var $lang_to_charset_unix=array(
var $script_to_charset_unix=array(
'west_european' => 'iso-8859-1',
'estonian' => 'iso-8859-1',
'east_european' => 'iso-8859-2',
@@ -372,10 +414,11 @@ class t3lib_cs {
'simpl_chinese' => 'gb2312',
'trad_chinese' => 'big5',
'vietnamese' => '',
'unicode' => 'utf-8',
);
// mapping of language (family) names to charsets on Windows
var $lang_to_charset_windows=array(
var $script_to_charset_windows=array(
'east_european' => 'windows-1250',
'cyrillic' => 'windows-1251',
'west_european' => 'windows-1252',
@@ -400,6 +443,7 @@ class t3lib_cs {
'japanese.euc' => 'euc-jp',
'ja_jp.ujis' => 'euc-jp',
'korean.euc' => 'euc-kr',
'sr@Latn' => 'iso-8859-2',
'zh_cn' => 'gb2312',
'zh_hk' => 'big5',
'zh_tw' => 'big5',
@@ -456,47 +500,22 @@ class t3lib_cs {
);
// TYPO3 specific: Array with the iso names used for each system language in TYPO3:
// Empty values means sames as Typo3
// Missing keys means: same as Typo3
var $isoArray = array(
'dk' => 'da',
'de' => '',
'no' => '',
'it' => '',
'fr' => '',
'es' => '',
'nl' => '',
'cz' => 'cs',
'pl' => '',
'si' => 'sl',
'fi' => '',
'tr' => '',
'se' => 'sv',
'pt' => '',
'ru' => '',
'ro' => '',
'ba' => 'bs',
'br' => 'pt_BR',
'ch' => 'zh_CN',
'sk' => '',
'lt' => '',
'is' => '',
'hr' => '',
'hu' => '',
'gl' => '', // Greenlandic
'th' => '',
'cz' => 'cs',
'dk' => 'da',
'si' => 'sl',
'se' => 'sv',
'gl' => 'kl',
'gr' => 'el',
'hk' => 'zh_HK',
'eu' => '',
'bg' => '',
'br' => 'pt_BR',
'et' => '',
'ar' => '',
'he' => 'iw',
'kr' => 'ko',
'ua' => 'uk',
'jp' => 'ja',
'lv' => '',
'vn' => 'vi',
'ca' => '',
'ba' => '', // Bosnian
'kr' => '',
);
/**
@@ -543,15 +562,15 @@ class t3lib_cs {
// get language
list($language,$country) = explode('_',$locale);
if (isset($this->lang_to_langfamily[$language])) $language = $this->lang_to_langfamily[$language];
if (isset($this->lang_to_script[$language])) $script = $this->lang_to_script[$language];
if (TYPO3_OS == 'WIN') {
$cs = $this->lang_to_charset_windows[$language];
$cs = $this->script_to_charset_windows[$script] ? $this->script_to_charset_windows[$script] : 'window-1252';
} else {
$cs = $this->lang_to_charset_unix[$language];
$cs = $this->script_to_charset_unix[$script] ? $this->script_to_charset_unix[$script] : 'iso-8859-1';
}
return $cs ? $cs : 'iso-8859-1';
return $cs;
}
@@ -649,7 +668,7 @@ class t3lib_cs {
$ord=ord($chr);
if (isset($this->twoByteSets[$charset])) { // If the charset has two bytes per char
$ord2 = ord($str{$a+1});
$ord = $ord<<8 & $ord2; // assume big endian
$ord = $ord<<8 | $ord2; // assume big endian
if (isset($this->parsedCharsets[$charset]['local'][$ord])) { // If the local char-number was found in parsed conv. table then we use that, otherwise 127 (no char?)
$outStr.=$this->parsedCharsets[$charset]['local'][$ord];