fixed typo
[lhc/web/wiklou.git] / languages / LanguageZh.php
1 <?php
2 require_once( "LanguageZh_cn.php");
3 require_once( "LanguageZh_tw.php");
4 require_once( "LanguageZh_sg.php");
5 require_once( "LanguageZh_hk.php");
6 /* caching the conversion tables */
7 $zh2TW = $wgMemc->get($key1 = "$wgDBname:zhConvert:tw");
8 $zh2CN = $wgMemc->get($key2 = "$wgDBname:zhConvert:cn");
9 $zh2SG = $wgMemc->get($key3 = "$wgDBname:zhConvert:sg");
10 $zh2HK = $wgMemc->get($key4 = "$wgDBname:zhConvert:hk");
11 if(empty($zh2TW) || empty($zh2CN) || empty($zh2SG) || empty($zh2HK)) {
12 require_once("includes/ZhConversion.php");
13 $wgMemc->set($key1, $zh2TW);
14 $wgMemc->set($key2, $zh2CN);
15 $wgMemc->set($key3, $zh2SG);
16 $wgMemc->set($key4, $zh2HK);
17 }
18
19 /* class that handles both Traditional and Simplified Chinese
20 right now it only distinguish zh_cn and zh_tw (actuall, zh_cn and
21 non-zh_cn), will add support for zh_sg, zh_hk, etc, later.
22 */
23 class LanguageZh extends LanguageZh_cn {
24
25 var $mZhLanguageCode=false;
26
27 function LanguageZh() {
28 $this->mZhLanguageCode = $this->getPreferredVariant();
29 }
30
31 /*
32 get preferred language variants. eventually this will check the
33 user's preference setting as well, once the language option in
34 the setting pages is finalized.
35 */
36 function getPreferredVariant() {
37 global $wgUser;
38
39 if($this->mZhLanguageCode)
40 return $this->mZhLanguageCode;
41
42 // get language variant preference for logged in users
43 if($wgUser->getID()!=0) {
44 $this->mZhLanguageCode = $wgUser->getOption('variant');
45 }
46 else {
47 // see if some zh- variant is set in the http header,
48 $this->mZhLanguageCode="zh-cn";
49 $header = str_replace( '_', '-', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]));
50 $zh = strstr($header, 'zh-');
51 if($zh) {
52 $this->mZhLanguageCode = substr($zh,0,5);
53 }
54 }
55 return $this->mZhLanguageCode;
56 }
57
58
59 /* the Simplified/Traditional conversion stuff */
60
61 function zh2tw($text) {
62 global $zh2TW;
63 return strtr($text, $zh2TW);
64 }
65
66 function zh2cn($text) {
67 global $zh2CN;
68 return strtr($text, $zh2CN);
69 }
70
71 function zh2sg($text) {
72 global $zh2SG, $zh2CN;
73 return strtr(strtr($text, $zh2CN), $zh2SG);
74 }
75
76 function zh2hk($text) {
77 global $zh2HK, $zh2TW;
78 return strtr(strtr($text, $zh2TW), $zh2HK);
79 }
80
81 function autoConvert($text, $toVariant=false) {
82 if(!$toVariant)
83 $toVariant = $this->getPreferredVariant();
84 $fname="zhconvert";
85 wfProfileIn( $fname );
86 $t = $text;
87 switch($toVariant) {
88 case 'zh-cn':
89 $t = $this->zh2cn($text);
90 break;
91 case 'zh-tw':
92 $t = $this->zh2tw($text);
93 break;
94 case 'zh-sg':
95 $t = $this->zh2sg($text);
96 break;
97 case 'zh-hk':
98 $t = $this->zh2hk($text);
99 break;
100 }
101 wfProfileOut( $fname );
102 return $t;
103 }
104
105 # only convert titles having more than one character
106 function convertTitle($text) {
107 $len=0;
108 if( function_exists( 'mb_strlen' ) )
109 $len = mb_strlen($text);
110 else
111 $len = strlen($text)/3;
112 if($len>1)
113 return $this->autoConvert( $text);
114 return $text;
115 }
116
117 function getVariants() {
118 return array("zh-cn", "zh-tw", "zh-sg", "zh-hk");
119 }
120
121 function getVariantFallback($v) {
122 switch ($v) {
123 case 'zh-cn': return 'zh-sg'; break;
124 case 'zh-sg': return 'zh-cn'; break;
125 case 'zh-tw': return 'zh-hk'; break;
126 case 'zh-hk': return 'zh-tw'; break;
127 }
128 return false;
129 }
130 }
131 ?>