00001 <?php
00002 require_once( dirname(__FILE__).'/../LanguageConverter.php' );
00003 require_once( dirname(__FILE__).'/LanguageKu_ku.php' );
00004
00010 class KuConverter extends LanguageConverter {
00011 var $mArabicToLatin = array(
00012 'ب' => 'b', 'ج' => 'c', 'چ' => 'ç', 'د' => 'd', 'ف' => 'f', 'گ' => 'g', 'ھ' => 'h',
00013 'ہ' => 'h', 'ه' => 'h', 'ح' => 'h', 'ژ' => 'j', 'ك' => 'k', 'ک' => 'k', 'ل' => 'l',
00014 'م' => 'm', 'ن' => 'n', 'پ' => 'p', 'ق' => 'q', 'ر' => 'r', 'س' => 's', 'ش' => 'ş',
00015 'ت' => 't', 'ڤ' => 'v', 'خ' => 'x', 'غ' => 'x', 'ز' => 'z',
00016
00017
00018
00019
00020
00021 'ڵ' => 'll', #ll
00022 'ڕ' => 'rr', #rr
00023 'ا' => 'a',
00024 # 'ئێ' => 'ê', # initial e
00025 'ە' => 'e',
00026 'ه' => 'e', # with one non-joiner
00027 'ه' => 'e', # with two non-joiner
00028 'ة' => 'e',
00029 'ێ' => 'ê',
00030 'ي' => 'î',
00031 'ی' => 'î', # U+06CC db 8c ARABIC LETTER FARSI YEH
00032 'ى' => 'î', # U+0649 d9 89 ARABIC LETTER ALEF MAKSURA
00033 'ۆ' => 'o',
00034 'و' => 'w',
00035 'ئ' => '', # initial hemze should not be shown
00036 '،' => ',',
00037 'ع' => '\'', # ayn
00038 '؟' => '?',
00039
00040 # digits
00041 '٠' => '0', # ٠
00042 '١' => '1', # ١
00043 '٢' => '2', # ٢
00044 '٣' => '3', # ٣
00045 '٤' => '4', # ٤
00046 '٥' => '5', # ٥
00047 '٦' => '6', # ٦
00048 '٧' => '7', # ٧
00049 '٨' => '8', # ٨
00050 '٩' => '9', # ٩
00051 );
00052
00053 var $mLatinToArabic = array(
00054 'b' => 'ب', 'c' => 'ج', 'ç' => 'چ', 'd' => 'د', 'f' => 'ف', 'g' => 'گ',
00055 'h' => 'ه', 'j' => 'ژ', 'k' => 'ک', 'l' => 'ل',
00056 'm' => 'م', 'n' => 'ن', 'p' => 'پ', 'q' => 'ق', 'r' => 'ر', 's' => 'س', 'ş' => 'ش',
00057 't' => 'ت', 'v' => 'ڤ',
00058 'x' => 'خ', 'y' => 'ی', 'z' => 'ز',
00059
00060
00061 'B' => 'ب', 'C' => 'ج', 'Ç' => 'چ', 'D' => 'د', 'F' => 'ف', 'G' => 'گ', 'H' => 'ھ',
00062 'H' => 'ہ', 'H' => 'ه', 'H' => 'ح', 'J' => 'ژ', 'K' => 'ك', 'K' => 'ک', 'L' => 'ل',
00063 'M' => 'م', 'N' => 'ن', 'P' => 'پ', 'Q' => 'ق', 'R' => 'ر', 'S' => 'س', 'Ş' => 'ش',
00064 'T' => 'ت', 'V' => 'ڤ', 'W' => 'و', 'X' => 'خ',
00065 'Y' => 'ی', 'Z' => 'ز',
00066
00067
00068 # 'll' => 'ڵ', # wenn es geht, doppel-l und l getrennt zu behandeln
00069 # 'rr' => 'ڕ', # selbiges für doppel-r
00070
00071
00072
00073
00074
00075 'a' => 'ا',
00076 'e' => 'ە',
00077 'ê' => 'ێ',
00078 'i' => '',
00079 'î' => 'ی',
00080 'o' => 'ۆ',
00081 'u' => 'و',
00082 'û' => 'وو',
00083 'w' => 'و',
00084 ',' => '،',
00085 '?' => '؟',
00086
00087 # Try to replace the leading vowel
00088 ' a' => 'ئا ',
00089 ' e' => 'ئە ',
00090 ' ê' => 'ئێ ',
00091 ' î' => 'ئی ',
00092 ' o' => 'ئۆ ',
00093 ' u' => 'ئو ',
00094 ' û' => 'ئوو ',
00095 'A' => 'ئا',
00096 'E' => 'ئە',
00097 'Ê' => 'ئێ',
00098 'Î' => 'ئی',
00099 'O' => 'ئۆ',
00100 'U' => 'ئو',
00101 'Û' => 'ئوو',
00102 ' A' => 'ئا ',
00103 ' E' => 'ئە ',
00104 ' Ê' => 'ئێ ',
00105 ' Î' => 'ئی ',
00106 ' O' => 'ئۆ ',
00107 ' U' => 'ئو ',
00108 ' Û' => 'ئوو ',
00109 # eyn erstmal deaktivieren, einfache Anführungsstriche sind einfach zu häufig, um sie als eyn zu interpretieren
00110 # '\'' => 'ع',
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125 );
00126
00127 function loadDefaultTables() {
00128 $this->mTables = array(
00129 'ku-latn' => new ReplacementArray( $this->mArabicToLatin ),
00130 'ku-arab' => new ReplacementArray( $this->mLatinToArabic ),
00131 'ku' => new ReplacementArray()
00132 );
00133 }
00134
00135
00136 function parserConvert( $text, &$parser ){
00137 if(is_object($parser->getTitle() ) && $parser->getTitle()->isTalkPage())
00138 $this->mDoContentConvert=false;
00139 else
00140 $this->mDoContentConvert=true;
00141
00142 return parent::parserConvert($text, $parser );
00143 }
00144
00145
00146
00147
00148
00149
00150
00151 function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
00152
00153 if(is_object($nt)){
00154 $ns = $nt->getNamespace();
00155 if($ns==NS_USER || $ns==NS_USER_TALK)
00156 return;
00157 }
00158
00159 $oldlink=$link;
00160 parent::findVariantLink( $link, $nt, $ignoreOtherCond );
00161 if( $this->getPreferredVariant() == $this->mMainLanguageCode )
00162 $link=$oldlink;
00163 }
00164
00165
00166
00167
00168
00169 function markNoConversion($text, $noParse=false) {
00170 if($noParse || preg_match("/^https?:\/\/|ftp:\/\/|irc:\/\//",$text))
00171 return parent::markNoConversion($text);
00172 return $text;
00173 }
00174
00175
00176
00177
00178
00179 function autoConvert($text, $toVariant=false) {
00180 global $wgTitle;
00181 if(is_object($wgTitle) && $wgTitle->getNameSpace()==NS_FILE){
00182 $imagename = $wgTitle->getNsText();
00183 if(preg_match("/^$imagename:/",$text)) return $text;
00184 }
00185 return parent::autoConvert($text,$toVariant);
00186 }
00187
00192 function translate($text, $toVariant){
00193 $breaks = '[^\w\x80-\xff]';
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220 if( !isset( $this->mTables[$toVariant] ) ) {
00221 throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) );
00222 }
00223
00224 return parent::translate( $text, $toVariant );
00225 }
00226 }
00227
00231 class LanguageKu extends LanguageKu_ku {
00232
00233 function __construct() {
00234 global $wgHooks;
00235 parent::__construct();
00236
00237 $variants = array( 'ku', 'ku-arab', 'ku-latn' );
00238 $variantfallbacks = array(
00239 'ku' => 'ku-latn',
00240 'ku-arab' => 'ku-latn',
00241 'ku-latn' => 'ku-arab',
00242 );
00243
00244 $this->mConverter = new KuConverter( $this, 'ku', $variants, $variantfallbacks );
00245 $wgHooks['ArticleSaveComplete'][] = $this->mConverter;
00246 }
00247 }