MediaWiki  REL1_20
LanguageIu.php
Go to the documentation of this file.
00001 <?php
00024 require_once( __DIR__ . '/../LanguageConverter.php' );
00025 
00038 class IuConverter extends LanguageConverter {
00039 
00040         protected $mDoContentConvert;
00041         var $mToLatin = array(
00042                 'ᐦ' => 'h',   'ᐃ' => 'i',    'ᐄ' => 'ii',    'ᐅ' => 'u',    'ᐆ' => 'uu',    'ᐊ' => 'a',    'ᐋ' => 'aa',
00043                 'ᑉ' => 'p',   'ᐱ' => 'pi',   'ᐲ' => 'pii',   'ᐳ' => 'pu',   'ᐴ' => 'puu',   'ᐸ' => 'pa',   'ᐹ' => 'paa',
00044                 'ᑦ' => 't',   'ᑎ' => 'ti',   'ᑏ' => 'tii',   'ᑐ' => 'tu',   'ᑑ' => 'tuu',   'ᑕ' => 'ta',   'ᑖ' => 'taa',
00045                 'ᒃ' => 'k',   'ᑭ' => 'ki',   'ᑮ' => 'kii',   'ᑯ' => 'ku',   'ᑰ' => 'kuu',   'ᑲ' => 'ka',   'ᑳ' => 'kaa',
00046                 'ᖅᒃ' => 'qq', 'ᖅᑭ' => 'qqi', 'ᖅᑮ' => 'qqii', 'ᖅᑯ' => 'qqu', 'ᖅᑰ' => 'ᖅqquu', 'ᖅᑲ' => 'qqa', 'ᖅᑳ' => 'qqaa',
00047                 'ᒡ' => 'g',   'ᒋ' => 'gi',   'ᒌ' => 'gii',   'ᒍ' => 'gu',   'ᒎ' => 'guu',   'ᒐ' => 'ga',   'ᒑ' => 'gaa',
00048                 'ᒻ' => 'm',   'ᒥ' => 'mi',   'ᒦ' => 'mii',   'ᒧ' => 'mu',   'ᒨ' => 'muu',   'ᒪ' => 'ma',   'ᒫ' => 'maa',
00049                 'ᓐ' => 'n',   'ᓂ' => 'ni',  'ᓃ' => 'nii',   'ᓄ' => 'nu',   'ᓅ' => 'nuu',   'ᓇ' => 'na',   'ᓈ' => 'naa',
00050                 'ᔅ' => 's',   'ᓯ' => 'si',   'ᓰ' => 'sii',   'ᓱ' => 'su',   'ᓲ' => 'suu',   'ᓴ' => 'sa',   'ᓵ' => 'saa',
00051                 'ᓪ' => 'l',   'ᓕ' => 'li',  'ᓖ' => 'lii',   'ᓗ' => 'lu',   'ᓘ' => 'luu',   'ᓚ' => 'la',   'ᓛ' => 'laa',
00052                 'ᔾ' => 'j',   'ᔨ' => 'ji',   'ᔩ' => 'jii',   'ᔪ' => 'ju',   'ᔫ' => 'juu',   'ᔭ' => 'ja',   'ᔮ' => 'jaa',
00053                 'ᕝ' => 'v',   'ᕕ' => 'vi',   'ᕖ' => 'vii',   'ᕗ' => 'vu',   'ᕘ' => 'vuu',   'ᕙ' => 'va',   'ᕚ' => 'vaa',
00054                 'ᕐ' => 'r',   'ᕆ' => 'ri',   'ᕇ' => 'rii',   'ᕈ' => 'ru',   'ᕉ' => 'ruu',   'ᕋ' => 'ra',   'ᕌ' => 'raa',
00055                 'ᖅ' => 'q',   'ᕿ' => 'qi',   'ᖀ' => 'qii',   'ᖁ' => 'qu',   'ᖂ' => 'quu',   'ᖃ' => 'qa',   'ᖄ' => 'qaa',
00056                 'ᖕ' => 'ng',  'ᖏ' => 'ngi',  'ᖐ' => 'ngii',  'ᖑ' => 'ngu',  'ᖒ' => 'nguu',  'ᖓ' => 'nga',  'ᖔ' => 'ngaa',
00057                 'ᖖ' => 'nng', 'ᙱ' => 'nngi', 'ᙲ' => 'nngii', 'ᙳ' => 'nngu', 'ᙴ' => 'nnguu', 'ᙵ' => 'nnga', 'ᙶ' => 'nngaa',
00058                 'ᖦ' => 'ɫ',   'ᖠ' => 'ɫi',    'ᖡ' => 'ɫii',   'ᖢ' => 'ɫu',    'ᖣ' => 'ɫuu',   'ᖤ' => 'ɫa',    'ᖥ' => 'ɫaa',
00059         );
00060 
00061         var $mUpperToLowerCaseLatin = array(
00062                 'A' => 'a',     'B' => 'b',     'C' => 'c',     'D' => 'd',     'E' => 'e',
00063                 'F' => 'f',     'G' => 'g',     'H' => 'h',     'I' => 'i',     'J' => 'j',
00064                 'K' => 'k',     'L' => 'l',     'M' => 'm',     'N' => 'n',     'O' => 'o',
00065                 'P' => 'p',     'Q' => 'q',     'R' => 'r',     'S' => 's',     'T' => 't',
00066                 'U' => 'u',     'V' => 'v',     'W' => 'w',     'X' => 'x',     'Y' => 'y',
00067                 'Z' => 'z',
00068         );
00069 
00070         var $mToSyllabics = array(
00071                 'h' => 'ᐦ',   'i' => 'ᐃ',    'ii' => 'ᐄ',    'u' => 'ᐅ',    'uu' => 'ᐆ',    'a' => 'ᐊ',    'aa' => 'ᐋ',
00072                 'p' => 'ᑉ',   'pi' => 'ᐱ',   'pii' => 'ᐲ',   'pu' => 'ᐳ',   'puu' => 'ᐴ',   'pa' => 'ᐸ',   'paa' => 'ᐹ',
00073                 't' => 'ᑦ',   'ti' => 'ᑎ',   'tii' => 'ᑏ',   'tu' => 'ᑐ',   'tuu' => 'ᑑ',   'ta' => 'ᑕ',   'taa' => 'ᑖ',
00074                 'k' => 'ᒃ',   'ki' => 'ᑭ',   'kii' => 'ᑮ',   'ku' => 'ᑯ',   'kuu' => 'ᑰ',   'ka' => 'ᑲ',   'kaa' => 'ᑳ',
00075                 'g' => 'ᒡ',   'gi' => 'ᒋ',   'gii' => 'ᒌ',   'gu' => 'ᒍ',   'guu' => 'ᒎ',   'ga' => 'ᒐ',   'gaa' => 'ᒑ',
00076                 'm' => 'ᒻ',   'mi' => 'ᒥ',   'mii' => 'ᒦ',   'mu' => 'ᒧ',   'muu' => 'ᒨ',   'ma' => 'ᒪ',   'maa' => 'ᒫ',
00077                 'n' => 'ᓐ',   'ni' => 'ᓂ',   'nii' => 'ᓃ',   'nu' => 'ᓄ',   'nuu' => 'ᓅ',   'na' => 'ᓇ',   'naa' => 'ᓈ',
00078                 's' => 'ᔅ',   'si' => 'ᓯ',   'sii' => 'ᓰ',   'su' => 'ᓱ',   'suu' => 'ᓲ',   'sa' => 'ᓴ',   'saa' => 'ᓵ',
00079                 'l' => 'ᓪ',   'li' => 'ᓕ',   'lii' => 'ᓖ',   'lu' => 'ᓗ',   'luu' => 'ᓘ',   'la' => 'ᓚ',   'laa' => 'ᓛ',
00080                 'j' => 'ᔾ',   'ji' => 'ᔨ',   'jii' => 'ᔩ',   'ju' => 'ᔪ',   'juu' => 'ᔫ',   'ja' => 'ᔭ',   'jaa' => 'ᔮ',
00081                 'v' => 'ᕝ',   'vi' => 'ᕕ',   'vii' => 'ᕖ',   'vu' => 'ᕗ',   'vuu' => 'ᕘ',   'va' => 'ᕙ',   'vaa' => 'ᕚ',
00082                 'r' => 'ᕐ',   'ri' => 'ᕆ',   'rii' => 'ᕇ',   'ru' => 'ᕈ',   'ruu' => 'ᕉ',   'ra' => 'ᕋ',   'raa' => 'ᕌ',
00083                 'qq' => 'ᖅᒃ',  'qqi' => 'ᖅᑭ',  'qqii' => 'ᖅᑮ',  'qqu' => 'ᖅᑯ',  'qquu' => 'ᖅᑰ',  'qqa' => 'ᖅᑲ',  'qqaa' => 'ᖅᑳ',
00084                 'q' => 'ᖅ',   'qi' => 'ᕿ',   'qii' => 'ᖀ',   'qu' => 'ᖁ',   'quu' => 'ᖂ',   'qa' => 'ᖃ',   'qaa' => 'ᖄ',
00085                 'ng' => 'ᖕ',  'ngi' => 'ᖏ',  'ngii' => 'ᖐ',  'ngu' => 'ᖑ',  'nguu' => 'ᖒ',  'nga' => 'ᖓ',  'ngaa' => 'ᖔ',
00086                 'nng' => 'ᖖ', 'nngi' => 'ᙱ', 'nngii' => 'ᙲ', 'nngu' => 'ᙳ', 'nnguu' => 'ᙴ', 'nnga' => 'ᙵ', 'nngaa' => 'ᙶ',
00087                 'ɫ' => 'ᖦ',   'ɫi' => 'ᖠ',    'ɫii' => 'ᖡ',   'ɫu' => 'ᖢ',    'ɫuu' => 'ᖣ',   'ɫa' => 'ᖤ',    'ɫaa' => 'ᖥ',
00088         );
00089 
00090         function loadDefaultTables() {
00091                 $this->mTables = array(
00092                         'lowercase' => new ReplacementArray( $this->mUpperToLowerCaseLatin ),
00093                         'ike-cans' => new ReplacementArray( $this->mToSyllabics ),
00094                         'ike-latn' => new ReplacementArray( $this->mToLatin ),
00095                         'iu'    => new ReplacementArray()
00096                 );
00097         }
00098 
00109         function parseManualRule( $rule, $flags = array() ) {
00110                 if ( in_array( 'T', $flags ) ) {
00111                         return parent::parseManualRule( $rule, $flags );
00112                 }
00113 
00114                 $carray = array();
00115                 // otherwise ignore all formatting
00116                 foreach ( $this->mVariants as $v ) {
00117                         $carray[$v] = $rule;
00118                 }
00119 
00120                 return $carray;
00121         }
00122 
00130         function parserConvert( $text, &$parser ) {
00131                 $this->mDoContentConvert = !( is_object( $parser->getTitle() ) && $parser->getTitle()->isTalkPage() );
00132 
00133                 return parent::parserConvert( $text, $parser );
00134         }
00135 
00146         function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
00147                  // check for user namespace
00148                 if ( is_object( $nt ) ) {
00149                         $ns = $nt->getNamespace();
00150                         if ( $ns == NS_USER || $ns == NS_USER_TALK )
00151                                 return;
00152                 }
00153 
00154                 $oldlink = $link;
00155                 parent::findVariantLink( $link, $nt, $ignoreOtherCond );
00156                 if ( $this->getPreferredVariant() == $this->mMainLanguageCode )
00157                         $link = $oldlink;
00158         }
00159 
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 
00184         function autoConvert( $text, $toVariant = false ) {
00185                 global $wgTitle;
00186                 if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) {
00187                         $imagename = $wgTitle->getNsText();
00188                         if ( preg_match( "/^$imagename:/", $text ) ) return $text;
00189                 }
00190                 return parent::autoConvert( $text, $toVariant );
00191         }
00192 
00201         function translate( $text, $toVariant ) {
00202                 // If $text is empty or only includes spaces, do nothing
00203                 // Otherwise translate it
00204                 if ( trim( $text ) ) {
00205                         $this->loadTables();
00206                         // To syllabics, first translate uppercase to lowercase Latin
00207                         if($toVariant == 'ike-cans') {
00208                                 $text = $this->mTables['lowercase']->replace( $text );
00209                         }
00210                         $text = $this->mTables[$toVariant]->replace( $text );
00211                 }
00212                 return $text;
00213         }
00214 }
00215 
00221 class LanguageIu extends Language {
00222         function __construct() {
00223                 global $wgHooks;
00224 
00225                 parent::__construct();
00226 
00227                 $variants = array( 'iu', 'ike-cans', 'ike-latn' );
00228                 $variantfallbacks = array(
00229                         'iu'    => 'ike-cans',
00230                         'ike-cans' => 'iu',
00231                         'ike-latn' => 'iu',
00232                 );
00233 
00234                 $flags = array();
00235                 $this->mConverter = new IuConverter( $this, 'iu', $variants, $variantfallbacks, $flags );
00236                 $wgHooks['ArticleSaveComplete'][] = $this->mConverter;
00237         }
00238 }