Beispiel #1
0
 /**
  * @param Language $langobj
  * @param string $maincode
  * @param array $variants
  * @param array $variantfallbacks
  * @param array $flags
  * @param array $manualLevel
  */
 function __construct($langobj, $maincode, $variants = array(), $variantfallbacks = array(), $flags = array(), $manualLevel = array())
 {
     $this->mDescCodeSep = ':';
     $this->mDescVarSep = ';';
     parent::__construct($langobj, $maincode, $variants, $variantfallbacks, $flags, $manualLevel);
     $names = array('gan' => '原文', 'gan-hans' => '简体', 'gan-hant' => '繁體');
     $this->mVariantNames = array_merge($this->mVariantNames, $names);
 }
Beispiel #2
0
 function __construct($langobj, $maincode, $variants = array(), $variantfallbacks = array(), $flags = array(), $manualLevel = array())
 {
     $this->mDescCodeSep = ':';
     $this->mDescVarSep = ';';
     parent::__construct($langobj, $maincode, $variants, $variantfallbacks, $flags, $manualLevel);
     $names = array('zh' => '原文', 'zh-hans' => '简体', 'zh-hant' => '繁體', 'zh-cn' => '大陆', 'zh-tw' => '台灣', 'zh-hk' => '香港', 'zh-mo' => '澳門', 'zh-sg' => '新加坡', 'zh-my' => '大马');
     $this->mVariantNames = array_merge($this->mVariantNames, $names);
 }
Beispiel #3
0
 function translate($text, $toVariant)
 {
     if ($toVariant == 'uz-cyrl') {
         $text = str_replace('ye', 'е', $text);
         $text = str_replace('Ye', 'Е', $text);
         $text = str_replace('YE', 'Е', $text);
         // "е" after consonants, otherwise "э" (see above)
         $text = preg_replace('/([BVGDJZYKLMNPRSTFXCWQʻ‘H])E/u', '$1Е', $text);
         $text = preg_replace('/([bvgdjzyklmnprstfxcwqʻ‘h])e/ui', '$1е', $text);
     }
     return parent::translate($text, $toVariant);
 }
Beispiel #4
0
 /**
  *  It translates text into variant, specials:
  *    - ommiting roman numbers
  */
 function translate($text, $toVariant)
 {
     $breaks = '[^\\w\\x80-\\xff]';
     // regexp for roman numbers
     $roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
     $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks . $roman . '$|' . $breaks . $roman . $breaks . '/';
     $matches = preg_split($reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE);
     $m = array_shift($matches);
     $ret = $this->mTables[$toVariant]->replace($m[0]);
     $mstart = $m[1] + strlen($m[0]);
     foreach ($matches as $m) {
         $ret .= substr($text, $mstart, $m[1] - $mstart);
         $ret .= parent::translate($m[0], $toVariant);
         $mstart = $m[1] + strlen($m[0]);
     }
     return $ret;
 }
Beispiel #5
0
 /**
  * An ugly function wrapper for parsing Image titles
  * (to prevent image name conversion)
  *
  * @param $text string
  * @param $toVariant bool
  *
  * @return string
  */
 function autoConvert($text, $toVariant = false)
 {
     global $wgTitle;
     if (is_object($wgTitle) && $wgTitle->getNameSpace() == NS_FILE) {
         $imagename = $wgTitle->getNsText();
         if (preg_match("/^{$imagename}:/", $text)) {
             return $text;
         }
     }
     return parent::autoConvert($text, $toVariant);
 }
 /**
  * A function wrapper:
  *   - if there is no selected variant, leave the link
  *     names as they were
  *   - do not try to find variants for usernames
  *
  * @param string &$link
  * @param Title &$nt
  * @param bool $ignoreOtherCond
  */
 function findVariantLink(&$link, &$nt, $ignoreOtherCond = false)
 {
     // check for user namespace
     if (is_object($nt)) {
         $ns = $nt->getNamespace();
         if ($ns == NS_USER || $ns == NS_USER_TALK) {
             return;
         }
     }
     $oldlink = $link;
     parent::findVariantLink($link, $nt, $ignoreOtherCond);
     if ($this->getPreferredVariant() == $this->mMainLanguageCode) {
         $link = $oldlink;
     }
 }
Beispiel #7
0
 /**
  * Get the conversion rule title, if any.
  *
  * @return string
  */
 public function getConvRuleTitle()
 {
     return $this->mConverter->getConvRuleTitle();
 }
Beispiel #8
0
 /**
  *  It translates text into variant, specials:
  *    - ommiting roman numbers
  *
  * @param string $text
  * @param bool $toVariant
  *
  * @throws MWException
  * @return string
  */
 function translate($text, $toVariant)
 {
     $this->loadTables();
     /* From Kazakh interface, maybe we need it later
     		$breaks = '[^\w\x80-\xff]';
     		// regexp for roman numbers
     		$roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
     		$roman = '';
     
     		$reg = '/^'.$roman.'$|^'.$roman.$breaks.'|'.$breaks.$roman.'$|'.$breaks.$roman.$breaks.'/';
     
     		$matches = preg_split($reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE);
     
     		$m = array_shift($matches);
     		if( !isset( $this->mTables[$toVariant] ) ) {
     			throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) );
     		}
     		$ret = $this->mTables[$toVariant]->replace( $m[0] );
     		$mstart = $m[1]+strlen($m[0]);
     		foreach($matches as $m) {
     			$ret .= substr($text, $mstart, $m[1]-$mstart);
     			$ret .= parent::translate($m[0], $toVariant);
     			$mstart = $m[1] + strlen($m[0]);
     		}
     
     		return $ret;
     		*/
     if (!isset($this->mTables[$toVariant])) {
         throw new MWException("Broken variant table: " . implode(',', array_keys($this->mTables)));
     }
     return parent::translate($text, $toVariant);
 }
Beispiel #9
0
<?php

require_once 'classes/LanguageConverter.php';
$languageConverter = new LanguageConverter();
$str = "Gamarjoba samyaro!";
echo $languageConverter->convertString($str, 'geolat2utf8') . "\n";
$languageConverter->addCharMap('geolat2utf8MixTest', array('a' => 'A', 'b' => 'B', 'g' => 'G', 'd' => 'დ', 'e' => 'ე', 'v' => 'ვ', 'z' => 'ზ', 'T' => 'თ', 'i' => 'ი', 'k' => 'კ', 'l' => 'ლ', 'm' => 'მ', 'n' => 'ნ', 'o' => 'ო', 'p' => 'პ', 'J' => 'ჟ', 'r' => 'რ', 's' => 'ს', 't' => 'ტ', 'u' => 'უ', 'f' => 'ფ', 'q' => 'ქ', 'R' => 'ღ', 'y' => 'ყ', 'S' => 'შ', 'C' => 'ჩ', 'c' => 'ც', 'Z' => 'ძ', 'w' => 'წ', 'W' => 'ჭ', 'x' => 'ხ', 'j' => 'ჯ', 'h' => 'ჰ'));
echo $languageConverter->convertString($str, 'geolat2utf8MixTest', 'utf-8') . "\n";
echo "\n";
echo $languageConverter->convertStringByIndex($str, 'georgia', 'ascii', 'utf8') . "\n";
$languageConverter->addCharMapByIndex('georgia', 'ascii_1', array('A', 'B', 'G', 'D', 'E', 'V', 'Z', 'T', 'I', 'K', 'L', 'M', 'N', 'O', 'P', 'J', 'R', 'S', 'T', 'U', 'F', 'Q', 'R', 'Y', 'S', 'C', 'C', 'Z', 'W', 'W', 'X', 'J', 'H'));
echo "\n";
echo $languageConverter->convertStringByIndex('ÂÀÌÀÒãÏÁÀ ÓÀÌÚÀÒÏ', 'georgia', 'ascii_1', 'stlat') . "\n";
Beispiel #10
0
 /**
  *  It translates text into variant
  *
  * @param string $text
  * @param string $toVariant
  *
  * @return string
  */
 function translate($text, $toVariant)
 {
     $text = parent::translate($text, $toVariant);
     switch ($toVariant) {
         case 'kk-cyrl':
         case 'kk-kz':
             $letters = KK_L_UC . KK_L_LC . 'ʺʹ#0123456789';
             break;
         case 'kk-latn':
         case 'kk-tr':
             $letters = KK_C_UC . KK_C_LC . '№0123456789';
             break;
         case 'kk-arab':
         case 'kk-cn':
             $letters = KK_C_UC . KK_C_LC . ',;\\?%\\*№0123456789';
             break;
         default:
             return $text;
     }
     // disable conversion variables like $1, $2...
     $varsfix = '\\$[0-9]';
     $matches = preg_split('/' . $varsfix . '[^' . $letters . ']+/u', $text, -1, PREG_SPLIT_OFFSET_CAPTURE);
     $mstart = 0;
     $ret = '';
     foreach ($matches as $m) {
         $ret .= substr($text, $mstart, $m[1] - $mstart);
         $ret .= $this->regsConverter($m[0], $toVariant);
         $mstart = $m[1] + strlen($m[0]);
     }
     return $ret;
 }
Beispiel #11
0
 function markNoConversion($text, $noParse = false)
 {
     if ($noParse || preg_match("/^https?:\\/\\/|ftp:\\/\\/|irc:\\/\\//", $text)) {
         return parent::markNoConversion($text);
     }
     return $text;
 }