diff options
Diffstat (limited to 'languages/classes')
41 files changed, 448 insertions, 165 deletions
diff --git a/languages/classes/LanguageAr.php b/languages/classes/LanguageAr.php new file mode 100644 index 00000000..c8824814 --- /dev/null +++ b/languages/classes/LanguageAr.php @@ -0,0 +1,28 @@ +<?php +/** Arabic (العربية) + * + * @addtogroup Language + * + * @author Niklas Laxström + */ +class LanguageAr extends Language { + + function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) { + $forms = array($w1, $w2, $w3, $w4, $w5); + if ( $count == 1 ) { + $index = 0; + } elseif( $count == 2 ) { + $index = 1; + } elseif( $count < 11 && $count > 2 ) { + $index = 2; + } elseif( $count % 100 == 0) { + $index = 3; + } else { + $index = 4; + } + return $forms[$index]; + } + +} + +?>
\ No newline at end of file diff --git a/languages/classes/LanguageAz.php b/languages/classes/LanguageAz.php index d5df3ecc..399014c8 100644 --- a/languages/classes/LanguageAz.php +++ b/languages/classes/LanguageAz.php @@ -1,8 +1,7 @@ <?php /** Azerbaijani (Azərbaycan) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageAz extends Language { function ucfirst ( $string ) { diff --git a/languages/classes/LanguageBe.php b/languages/classes/LanguageBe.php index 553d2ad3..d27e2835 100644 --- a/languages/classes/LanguageBe.php +++ b/languages/classes/LanguageBe.php @@ -1,8 +1,10 @@ <?php -/** Belarusian (Беларуская мова) +/** Belarusian normative (Беларуская мова) * - * @package MediaWiki - * @subpackage Language + * This is still the version from Be-x-old, only duplicated for consistency of + * plural and grammar functions. If there are errors please send a patch. + * + * @addtogroup Language * * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> * @bug 1638, 2135 diff --git a/languages/classes/LanguageBe_x_old.php b/languages/classes/LanguageBe_x_old.php new file mode 100644 index 00000000..66e45599 --- /dev/null +++ b/languages/classes/LanguageBe_x_old.php @@ -0,0 +1,88 @@ +<?php +/** Belarusian alternative (Беларуская мова) + * + * @addtogroup Language + * + * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com> + * @bug 1638, 2135 + * @link http://be.wikipedia.org/wiki/Talk:LanguageBe.php + * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License + * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License + */ + +class LanguageBe_x_old extends Language { + function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) { + $count = str_replace ('.', '', $count); + if ($count > 10 && floor(($count % 100) / 10) == 1) { + return $wordform3; + } else { + switch ($count % 10) { + case 1: return $wordform1; + case 2: + case 3: + case 4: return $wordform2; + default: return $wordform3; + } + } + } + + # Convert from the nominative form of a noun to some other case + # Invoked with {{GRAMMAR:case|word}} + /** + * Cases: родны, вінавальны, месны + */ + function convertGrammar( $word, $case ) { + switch ( $case ) { + case 'родны': # genitive + if ( $word == 'Вікіпэдыя' ) { + $word = 'Вікіпэдыі'; + } elseif ( $word == 'ВікіСлоўнік' ) { + $word = 'ВікіСлоўніка'; + } elseif ( $word == 'ВікіКнігі' ) { + $word = 'ВікіКніг'; + } elseif ( $word == 'ВікіКрыніца' ) { + $word = 'ВікіКрыніцы'; + } elseif ( $word == 'ВікіНавіны' ) { + $word = 'ВікіНавін'; + } elseif ( $word == 'ВікіВіды' ) { + $word = 'ВікіВідаў'; + } + break; + case 'вінавальны': # akusative + if ( $word == 'Вікіпэдыя' ) { + $word = 'Вікіпэдыю'; + } elseif ( $word == 'ВікіСлоўнік' ) { + $word = 'ВікіСлоўнік'; + } elseif ( $word == 'ВікіКнігі' ) { + $word = 'ВікіКнігі'; + } elseif ( $word == 'ВікіКрыніца' ) { + $word = 'ВікіКрыніцу'; + } elseif ( $word == 'ВікіНавіны' ) { + $word = 'ВікіНавіны'; + } elseif ( $word == 'ВікіВіды' ) { + $word = 'ВікіВіды'; + } + break; + case 'месны': # prepositional + if ( $word == 'Вікіпэдыя' ) { + $word = 'Вікіпэдыі'; + } elseif ( $word == 'ВікіСлоўнік' ) { + $word = 'ВікіСлоўніку'; + } elseif ( $word == 'ВікіКнігі' ) { + $word = 'ВікіКнігах'; + } elseif ( $word == 'ВікіКрыніца' ) { + $word = 'ВікіКрыніцы'; + } elseif ( $word == 'ВікіНавіны' ) { + $word = 'ВікіНавінах'; + } elseif ( $word == 'ВікіВіды' ) { + $word = 'ВікіВідах'; + } + break; + } + + return $word; # this will return the original value for 'назоўны' (nominative) and all undefined case values + } + +} + +?> diff --git a/languages/classes/LanguageBg.php b/languages/classes/LanguageBg.php index 4884c2a8..576c9385 100644 --- a/languages/classes/LanguageBg.php +++ b/languages/classes/LanguageBg.php @@ -1,13 +1,11 @@ <?php /** Bulgarian (Български) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ /** - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageBg extends Language { /** diff --git a/languages/classes/LanguageBs.php b/languages/classes/LanguageBs.php index 92d00090..6dbcbfa1 100644 --- a/languages/classes/LanguageBs.php +++ b/languages/classes/LanguageBs.php @@ -1,8 +1,7 @@ <?php /** Bosnian (bosanski) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageBs extends Language { diff --git a/languages/classes/LanguageCs.php b/languages/classes/LanguageCs.php index bd2f33a3..eff04a00 100644 --- a/languages/classes/LanguageCs.php +++ b/languages/classes/LanguageCs.php @@ -1,8 +1,7 @@ <?php /** Czech (česky) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ #-------------------------------------------------------------------------- diff --git a/languages/classes/LanguageCu.php b/languages/classes/LanguageCu.php index f30bd253..1da7c699 100644 --- a/languages/classes/LanguageCu.php +++ b/languages/classes/LanguageCu.php @@ -1,8 +1,7 @@ <?php /** Old Church Slavonic (Ѩзыкъ словѣньскъ) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ /* Please, see Language.php for general function comments */ diff --git a/languages/classes/LanguageEo.php b/languages/classes/LanguageEo.php index a62ccc9b..11b0e987 100644 --- a/languages/classes/LanguageEo.php +++ b/languages/classes/LanguageEo.php @@ -1,7 +1,6 @@ <?php /** Esperanto (Esperanto) - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageEo extends Language { diff --git a/languages/classes/LanguageEt.php b/languages/classes/LanguageEt.php index 92843406..1fc44fc0 100644 --- a/languages/classes/LanguageEt.php +++ b/languages/classes/LanguageEt.php @@ -1,8 +1,7 @@ <?php /** Estonian (Eesti) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language * */ diff --git a/languages/classes/LanguageFi.php b/languages/classes/LanguageFi.php index 8fc25499..d7363969 100644 --- a/languages/classes/LanguageFi.php +++ b/languages/classes/LanguageFi.php @@ -1,8 +1,7 @@ <?php /** Finnish (Suomi) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language * * @author Niklas Laxström */ @@ -32,6 +31,13 @@ class LanguageFi extends Language { # wovel harmony flag $aou = preg_match( '/[aou][^äöy]*$/i', $word ); + # The flag should be false for compounds where the last word has only neutral vowels (e/i). + # The general case cannot be handled without a dictionary, but there's at least one notable + # special case we should check for: + + if ( preg_match( '/wiki$/i', $word ) ) + $aou = false; + # append i after final consonant if ( preg_match( '/[bcdfghjklmnpqrstvwxz]$/i', $word ) ) $word .= 'i'; diff --git a/languages/classes/LanguageFr.php b/languages/classes/LanguageFr.php index b150ceff..ecc15317 100644 --- a/languages/classes/LanguageFr.php +++ b/languages/classes/LanguageFr.php @@ -1,8 +1,7 @@ <?php /** French (Français) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language * */ diff --git a/languages/classes/LanguageGa.php b/languages/classes/LanguageGa.php index 0779e42b..b0a5978e 100644 --- a/languages/classes/LanguageGa.php +++ b/languages/classes/LanguageGa.php @@ -1,8 +1,7 @@ <?php /** Irish (Gaeilge) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageGa extends Language { diff --git a/languages/classes/LanguageGsw.php b/languages/classes/LanguageGsw.php index ce4e0578..f8ec0c80 100644 --- a/languages/classes/LanguageGsw.php +++ b/languages/classes/LanguageGsw.php @@ -1,8 +1,7 @@ <?php /** Alemannic (Alemannisch) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageGsw extends Language { diff --git a/languages/classes/LanguageHe.php b/languages/classes/LanguageHe.php index e84d45d8..8e503fa6 100644 --- a/languages/classes/LanguageHe.php +++ b/languages/classes/LanguageHe.php @@ -2,8 +2,7 @@ /** * Hebrew (עברית) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language * * @author Rotem Liss */ diff --git a/languages/classes/LanguageHr.php b/languages/classes/LanguageHr.php index 537c142d..48908735 100644 --- a/languages/classes/LanguageHr.php +++ b/languages/classes/LanguageHr.php @@ -1,8 +1,7 @@ <?php /** Croatian (hrvatski) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageHr extends Language { diff --git a/languages/classes/LanguageHsb.php b/languages/classes/LanguageHsb.php index 08163b72..7cbc17de 100644 --- a/languages/classes/LanguageHsb.php +++ b/languages/classes/LanguageHsb.php @@ -1,8 +1,7 @@ <?php /** Upper Sorbian (Hornjoserbsce) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageHsb extends Language { diff --git a/languages/classes/LanguageHu.php b/languages/classes/LanguageHu.php index ac6555dc..0dc4ac4c 100644 --- a/languages/classes/LanguageHu.php +++ b/languages/classes/LanguageHu.php @@ -1,7 +1,6 @@ <?php /** - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ # # Hungarian localisation for MediaWiki diff --git a/languages/classes/LanguageHy.php b/languages/classes/LanguageHy.php new file mode 100644 index 00000000..b3a46b0f --- /dev/null +++ b/languages/classes/LanguageHy.php @@ -0,0 +1,73 @@ +<?php +/** Armenian (Հայերեն) + * + * @addtogroup Language + * @author Ruben Vardanyan (Me@RubenVardanyan.com) + */ + +/* Please, see Language.php for general function comments */ +class LanguageHy extends Language { + # Convert from the nominative form of a noun to some other case + # Invoked with {{grammar:case|word}} + function convertGrammar( $word, $case ) { + global $wgGrammarForms; + if ( isset($wgGrammarForms['hy'][$case][$word]) ) { + return $wgGrammarForms['hy'][$case][$word]; + } + + # These rules are not perfect, but they are currently only used for site names so it doesn't + # matter if they are wrong sometimes. Just add a special case for your site name if necessary. + + #join and array_slice instead mb_substr + $ar = array(); + preg_match_all( '/./us', $word, $ar ); + if (!preg_match("/[a-zA-Z_]/us", $word)) + switch ( $case ) { + case 'genitive': #սեռական հոլով + if (join('',array_slice($ar[0],-1))=='ա') + $word = join('',array_slice($ar[0],0,-1)).'այի'; + elseif (join('',array_slice($ar[0],-1))=='ո') + $word=join('',array_slice($ar[0],0,-1)).'ոյի'; + elseif (join('',array_slice($ar[0],-4))=='գիրք') + $word=join('',array_slice($ar[0],0,-4)).'գրքի'; + else + $word.='ի'; + break; + case 'dative': #Տրական հոլով + #stub + break; + case 'accusative': #Հայցական հոլով + #stub + break; + case 'instrumental': # + #stub + break; + case 'prepositional': # + #stub + break; + } + return $word; + } + + function convertPlural( $count, $wordform1, $wordform2) { + $count = str_replace (' ', '', $count); + if (abs($count) <= 1) { + return $wordform1; + } else { + return $wordform2; + } + } + + /* + * Armenian numeric format is "12 345,67" but "1234,56" + */ + + function commafy($_) { + if (!preg_match('/^\d{1,4}$/',$_)) { + return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_))); + } else { + return $_; + } + } +} +?> diff --git a/languages/classes/LanguageJa.php b/languages/classes/LanguageJa.php index 800650b0..7f681639 100644 --- a/languages/classes/LanguageJa.php +++ b/languages/classes/LanguageJa.php @@ -2,8 +2,7 @@ /** * Japanese (日本語) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageJa extends Language { function stripForSearch( $string ) { diff --git a/languages/classes/LanguageKk.php b/languages/classes/LanguageKk.php index 46162e01..3591d11a 100644 --- a/languages/classes/LanguageKk.php +++ b/languages/classes/LanguageKk.php @@ -2,8 +2,7 @@ /** Kazakh (Қазақша) * converter routines * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ require_once( dirname(__FILE__).'/../LanguageConverter.php' ); @@ -69,23 +68,28 @@ class KkConverter extends LanguageConverter { ); var $mCyrillicToArabic = array( - 'ла' => 'لا', 'ЛА' => 'لا', 'Ла' => 'لا', + 'ла' => 'لا', 'лА' => 'لا', 'ЛА' => 'لا', 'Ла' => 'لا', - 'а' => 'ا', 'ә' => 'ٴا', 'б' => 'ب', 'в' => 'ۆ', 'г' => 'گ', 'ғ' => 'ع', + 'а' => 'ا', 'ә' => 'ٵ', 'б' => 'ب', 'в' => 'ۆ', 'г' => 'گ', 'ғ' => 'ع', 'д' => 'د', 'е' => 'ە', 'ё' => 'يو', 'ж' => 'ج', 'з' => 'ز', 'и' => 'ي', 'й' => 'ي', 'к' => 'ك', 'қ' => 'ق', 'л' => 'ل', 'м' => 'م', 'н' => 'ن', - 'ң' => 'ڭ', 'о' => 'و', 'ө' => 'ٴو', 'п' => 'پ', 'р' => 'ر', 'с' => 'س', - 'т' => 'ت', 'у' => 'ۋ', 'ұ' => 'ۇ', 'ү' => 'ٴۇ', 'ф' => 'ف', 'х' => 'ح', + 'ң' => 'ڭ', 'о' => 'و', 'ө' => 'ٶ', 'п' => 'پ', 'р' => 'ر', 'с' => 'س', + 'т' => 'ت', 'у' => 'ۋ', 'ұ' => 'ۇ', 'ү' => 'ٷ', 'ф' => 'ف', 'х' => 'ح', 'һ' => 'ھ', 'ц' => 'تس', 'ч' => 'چ', 'ш' => 'ش', 'щ' => 'شش', 'ъ' => 'ي', - 'ы' => 'ى', 'ь' => 'ي', 'і' => 'ٴى', 'э' => 'ە', 'ю' => 'يۋ', 'я' => 'يا', + 'ы' => 'ى', 'ь' => 'ي', 'і' => 'ٸ', 'э' => 'ە', 'ю' => 'يۋ', 'я' => 'يا', - 'А' => 'ا', 'Ә' => 'ٴا', 'Б' => 'ب', 'В' => 'ۆ', 'Г' => 'گ', 'Ғ' => 'ع', - 'Д' => 'د', 'Е' => 'ە', 'Ё' => 'يو', 'Ж' => 'ج', 'З' => 'ز', 'И' => 'ي', + 'А' => 'ا', 'Ә' => 'ٵ', 'Б' => 'ب', 'В' => 'ۆ', 'Г' => 'گ', 'Ғ' => 'ع', + 'Д' => 'د', 'Е' => 'ە', 'Ё' => 'يو', 'Ж' => 'ج', 'З' => 'ز', 'И' => 'ي', 'Й' => 'ي', 'К' => 'ك', 'Қ' => 'ق', 'Л' => 'ل', 'М' => 'م', 'Н' => 'ن', - 'Ң' => 'ڭ', 'О' => 'و', 'Ө' => 'ٴو', 'П' => 'پ', 'Р' => 'ر', 'С' => 'س', - 'Т' => 'ت', 'У' => 'ۋ', 'Ұ' => 'ۇ', 'Ү' => 'ٴۇ', 'Ф' => 'ف', 'Х' => 'ح', + 'Ң' => 'ڭ', 'О' => 'و', 'Ө' => 'ٶ', 'П' => 'پ', 'Р' => 'ر', 'С' => 'س', + 'Т' => 'ت', 'У' => 'ۋ', 'Ұ' => 'ۇ', 'Ү' => 'ٷ', 'Ф' => 'ف', 'Х' => 'ح', 'Һ' => 'ھ', 'Ц' => 'تس', 'Ч' => 'چ', 'Ш' => 'ش', 'Щ' => 'شش', 'Ъ' => 'ي', - 'Ы' => 'ى', 'Ь' => 'ي', 'І' => 'ٴى', 'Э' => 'ە', 'Ю' => 'يۋ', 'Я' => 'يا', + 'Ы' => 'ى', 'Ь' => 'ي', 'І' => 'ٸ', 'Э' => 'ە', 'Ю' => 'يۋ', 'Я' => 'يا', + + '?' => '؟', + '%' => '٪', + ',' => '،', + ';' => '؛' ); function loadDefaultTables() { @@ -100,7 +104,7 @@ class KkConverter extends LanguageConverter { // Do not convert content on talk pages function parserConvert( $text, &$parser ){ - if(is_object($parser->mTitle) && $parser->mTitle->isTalkPage()) + if(is_object($parser->getTitle() ) && $parser->getTitle()->isTalkPage()) $this->mDoContentConvert=false; else $this->mDoContentConvert=true; @@ -109,10 +113,19 @@ class KkConverter extends LanguageConverter { } /* - * A function wrapper, if there is no selected variant, - * leave the link names as they were + * A function wrapper: + * - if there is no selected variant, leave the link + * names as they were + * - do not try to find variants for usernames */ function findVariantLink( &$link, &$nt ) { + // 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); if($this->getPreferredVariant()==$this->mMainLanguageCode) @@ -135,7 +148,7 @@ class KkConverter extends LanguageConverter { */ function autoConvert($text, $toVariant=false) { global $wgTitle; - if($wgTitle->getNameSpace()==NS_IMAGE){ + if(is_object($wgTitle) && $wgTitle->getNameSpace()==NS_IMAGE){ $imagename = $wgTitle->getNsText(); if(preg_match("/^$imagename:/",$text)) return $text; } @@ -157,6 +170,9 @@ class KkConverter extends LanguageConverter { $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) { diff --git a/languages/classes/LanguageKk_kz.php b/languages/classes/LanguageKk_kz.php index f01251c0..d1f4bfd2 100644 --- a/languages/classes/LanguageKk_kz.php +++ b/languages/classes/LanguageKk_kz.php @@ -2,8 +2,7 @@ /** Kazakh (Қазақша) * * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ diff --git a/languages/classes/LanguageKo.php b/languages/classes/LanguageKo.php index 55d28117..ae09d111 100644 --- a/languages/classes/LanguageKo.php +++ b/languages/classes/LanguageKo.php @@ -1,12 +1,12 @@ <?php /** Korean (한국어) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageKo extends Language { function firstChar( $s ) { + $matches = array(); preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' . '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})/', $s, $matches); diff --git a/languages/classes/LanguageKsh.php b/languages/classes/LanguageKsh.php index 5b8c10d9..b15f97e3 100644 --- a/languages/classes/LanguageKsh.php +++ b/languages/classes/LanguageKsh.php @@ -1,8 +1,7 @@ <?php /** Ripuarian (Ripoarėsh) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language * * @author Purodha Blissenbach */ diff --git a/languages/classes/LanguageLa.php b/languages/classes/LanguageLa.php index b9f69925..0e34b5c5 100644 --- a/languages/classes/LanguageLa.php +++ b/languages/classes/LanguageLa.php @@ -1,8 +1,7 @@ <?php /** Latin (lingua Latina) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageLa extends Language { @@ -12,7 +11,7 @@ class LanguageLa extends Language { * Just used in a couple places for sitenames; special-case as necessary. * Rules are far from complete. * - * Cases: genitive + * Cases: genitive, accusative, ablative */ function convertGrammar( $word, $case ) { global $wgGrammarForms; @@ -22,9 +21,55 @@ class LanguageLa extends Language { switch ( $case ) { case 'genitive': - // 1st and 2nd declension singular only. - $in = array( '/a$/', '/u[ms]$/', '/tio$/' ); - $out = array( 'ae', 'i', 'tionis' ); + // only a few declensions, and even for those mostly the singular only + $in = array( '/u[ms]$/', # 2nd declension singular + '/ommunia$/', # 3rd declension neuter plural (partly) + '/a$/', # 1st declension singular + '/libri$/', '/nuntii$/', # 2nd declension plural (partly) + '/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly) + '/es$/' # 5th declension singular + ); + $out = array( 'i', + 'ommunium', + 'ae', + 'librorum', 'nuntiorum', + 'tionis', 'ntis', 'atis', + 'ei' + ); + return preg_replace( $in, $out, $word ); + case 'accusative': + // only a few declensions, and even for those mostly the singular only + $in = array( '/u[ms]$/', # 2nd declension singular + '/a$/', # 1st declension singular + '/ommuniam$/', # 3rd declension neuter plural (partly) + '/libri$/', '/nuntii$/', # 2nd declension plural (partly) + '/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly) + '/es$/' # 5th declension singular + ); + $out = array( 'um', + 'am', + 'ommunia', + 'libros', 'nuntios', + 'tionem', 'ntem', 'atem', + 'em' + ); + return preg_replace( $in, $out, $word ); + case 'ablative': + // only a few declensions, and even for those mostly the singular only + $in = array( '/u[ms]$/', # 2nd declension singular + '/ommunia$/', # 3rd declension neuter plural (partly) + '/a$/', # 1st declension singular + '/libri$/', '/nuntii$/', # 2nd declension plural (partly) + '/tio$/', '/ns$/', '/as$/', # 3rd declension singular (partly) + '/es$/' # 5th declension singular + ); + $out = array( 'o', + 'ommunibus', + 'a', + 'libris', 'nuntiis', + 'tione', 'nte', 'ate', + 'e' + ); return preg_replace( $in, $out, $word ); default: return $word; diff --git a/languages/classes/LanguageLt.php b/languages/classes/LanguageLt.php index 14031feb..b09520c5 100644 --- a/languages/classes/LanguageLt.php +++ b/languages/classes/LanguageLt.php @@ -1,8 +1,7 @@ <?php /** Lithuanian (Lietuvių) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language * */ diff --git a/languages/classes/LanguageLv.php b/languages/classes/LanguageLv.php index c45d96e4..ef1f6237 100644 --- a/languages/classes/LanguageLv.php +++ b/languages/classes/LanguageLv.php @@ -1,8 +1,7 @@ <?php /** Latvian (Latviešu) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language * * @author Niklas Laxström * diff --git a/languages/classes/LanguagePt_br.php b/languages/classes/LanguagePt_br.php index 06dc4d9c..813c9ad6 100644 --- a/languages/classes/LanguagePt_br.php +++ b/languages/classes/LanguagePt_br.php @@ -1,8 +1,7 @@ <?php /** Brazilian Portugese (Portuguêsi do Brasil) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language * */ diff --git a/languages/classes/LanguageRu.php b/languages/classes/LanguageRu.php index a251aa52..3ca5fd65 100644 --- a/languages/classes/LanguageRu.php +++ b/languages/classes/LanguageRu.php @@ -3,8 +3,7 @@ * * You can contact Alexander Sigachov (alexander.sigachov at Googgle Mail) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ /* Please, see Language.php for general function comments */ diff --git a/languages/classes/LanguageSk.php b/languages/classes/LanguageSk.php index 5b71c6aa..06f44a33 100644 --- a/languages/classes/LanguageSk.php +++ b/languages/classes/LanguageSk.php @@ -2,8 +2,7 @@ /** * Slovak (Slovenčina) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageSk extends Language { # Convert from the nominative form of a noun to some other case diff --git a/languages/classes/LanguageSl.php b/languages/classes/LanguageSl.php index 35991caa..e8f94567 100644 --- a/languages/classes/LanguageSl.php +++ b/languages/classes/LanguageSl.php @@ -1,8 +1,7 @@ <?php /** Slovenian (Slovenščina) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language * */ class LanguageSl extends Language { @@ -19,84 +18,54 @@ class LanguageSl extends Language { switch ( $case ) { case 'rodilnik': # genitive - if ( $word == 'Wikipedija' ) { - $word = 'Wikipedije'; - } elseif ( $word == 'Wikiknjige' ) { - $word = 'Wikiknjig'; - } elseif ( $word == 'Wikinovice' ) { - $word = 'Wikinovic'; - } elseif ( $word == 'Wikinavedek' ) { - $word = 'Wikinavedka'; - } elseif ( $word == 'Wikivir' ) { - $word = 'Wikivira'; - } elseif ( $word == 'Wikislovar' ) { - $word = 'Wikislovarja'; + switch ( $word ) { + case 'Wikipedija': $word = 'Wikipedije'; break 2; + case 'Wikiknjige': $word = 'Wikiknjig'; break 2; + case 'Wikinovice': $word = 'Wikinovic'; break 2; + case 'Wikinavedek': $word = 'Wikinavedka'; break 2; + case 'Wikivir': $word = 'Wikivira'; break 2; + case 'Wikislovar': $word = 'Wikislovarja'; break 2; } - break; case 'dajalnik': # dativ - if ( $word == 'Wikipedija' ) { - $word = 'Wikipediji'; - } elseif ( $word == 'Wikiknjige' ) { - $word = 'Wikiknjigam'; - } elseif ( $word == 'Wikinovice' ) { - $word = 'Wikinovicam'; - } elseif ( $word == 'Wikinavedek' ) { - $word = 'Wikinavedku'; - } elseif ( $word == 'Wikivir' ) { - $word = 'Wikiviru'; - } elseif ( $word == 'Wikislovar' ) { - $word = 'Wikislovarju'; + switch ( $word ) { + case 'Wikipedija': $word = 'Wikipediji'; break 2; + case 'Wikiknjige': $word = 'Wikiknjigam'; break 2; + case 'Wikinovice': $word = 'Wikinovicam'; break 2; + case 'Wikinavedek': $word = 'Wikinavedku'; break 2; + case 'Wikivir': $word = 'Wikiviru'; break 2; + case 'Wikislovar': $word = 'Wikislovarju'; break 2; } - break; case 'tožilnik': # akuzatív - if ( $word == 'Wikipedija' ) { - $word = 'Wikipedijo'; - } elseif ( $word == 'Wikiknjige' ) { - $word = 'Wikiknjige'; - } elseif ( $word == 'Wikinovice' ) { - $word = 'Wikinovice'; - } elseif ( $word == 'Wikinavedek' ) { - $word = 'Wikinavedek'; - } elseif ( $word == 'Wikivir' ) { - $word = 'Wikivir'; - } elseif ( $word == 'Wikislovar' ) { - $word = 'Wikislovar'; + switch ( $word ) { + case 'Wikipedija': $word = 'Wikipedijo'; break 2; + case 'Wikiknjige': + case 'Wikinovice': + case 'Wikinavedek': + case 'Wikivir': + case 'Wikislovar': + // Don't change, just fall through + break 2; } - break; case 'mestnik': # locative - if ( $word == 'Wikipedija' ) { - $word = 'o Wikipediji'; - } elseif ( $word == 'Wikiknjige' ) { - $word = 'o Wikiknjigah'; - } elseif ( $word == 'Wikinovice' ) { - $word = 'o Wikinovicah'; - } elseif ( $word == 'Wikinavedek' ) { - $word = 'o Wikinavedku'; - } elseif ( $word == 'Wikivir' ) { - $word = 'o Wikiviru'; - } elseif ( $word == 'Wikislovar' ) { - $word = 'o Wikislovarju'; - } else { - $word = 'o ' . $word; + switch ( $word ) { + case 'Wikipedija': $word = 'o Wikipediji'; break 2; + case 'Wikiknjige': $word = 'o Wikiknjigah'; break 2; + case 'Wikinovice': $word = 'o Wikinovicah'; break 2; + case 'Wikinavedek': $word = 'o Wikinavedku'; break 2; + case 'Wikivir': $word = 'o Wikiviru'; break 2; + case 'Wikislovar': $word = 'o Wikislovarju'; break 2; + default: $word = 'o ' . $word; break 2; } - break; case 'orodnik': # instrumental - if ( $word == 'Wikipedija' ) { - $word = 'z Wikipedijo'; - } elseif ( $word == 'Wikiknjige' ) { - $word = 'z Wikiknjigami'; - } elseif ( $word == 'Wikinovice' ) { - $word = 'z Wikinovicami'; - } elseif ( $word == 'Wikinavedek' ) { - $word = 'z Wikinavedkom'; - } elseif ( $word == 'Wikivir' ) { - $word = 'z Wikivirom'; - } elseif ( $word == 'Wikislovar' ) { - $word = 'z Wikislovarjem'; - } else { - $word = 'z ' . $word; + switch ( $word ) { + case 'Wikipedija': $word = 'z Wikipedijo'; break 2; + case 'Wikiknjige': $word = 'z Wikiknjigami'; break 2; + case 'Wikinovice': $word = 'z Wikinovicami'; break 2; + case 'Wikinavedek': $word = 'z Wikinavedkom'; break 2; + case 'Wikivir': $word = 'z Wikivirom'; break 2; + case 'Wikislovar': $word = 'z Wikislovarjem'; break 2; + default: $word = 'z ' . $word; } - break; } return $word; # this will return the original value for 'imenovalnik' (nominativ) and all undefined case values diff --git a/languages/classes/LanguageSr.php b/languages/classes/LanguageSr.php index 59d31cab..07982658 100644 --- a/languages/classes/LanguageSr.php +++ b/languages/classes/LanguageSr.php @@ -1,7 +1,6 @@ <?php /** - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ /* @@ -82,7 +81,7 @@ class SrConverter extends LanguageConverter { // Do not convert content on talk pages function parserConvert( $text, &$parser ){ - if(is_object($parser->mTitle) && $parser->mTitle->isTalkPage()) + if(is_object($parser->getTitle() ) && $parser->getTitle()->isTalkPage()) $this->mDoContentConvert=false; else $this->mDoContentConvert=true; diff --git a/languages/classes/LanguageSr_ec.php b/languages/classes/LanguageSr_ec.php index 72f56b8c..914080da 100644 --- a/languages/classes/LanguageSr_ec.php +++ b/languages/classes/LanguageSr_ec.php @@ -1,7 +1,6 @@ <?php /** - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ #-------------------------------------------------------------------------- diff --git a/languages/classes/LanguageSr_el.php b/languages/classes/LanguageSr_el.php index 1ecacc0e..57c78b84 100644 --- a/languages/classes/LanguageSr_el.php +++ b/languages/classes/LanguageSr_el.php @@ -1,7 +1,6 @@ <?php /** - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ #-------------------------------------------------------------------------- diff --git a/languages/classes/LanguageTr.php b/languages/classes/LanguageTr.php index 67d68f60..45c7f022 100644 --- a/languages/classes/LanguageTr.php +++ b/languages/classes/LanguageTr.php @@ -2,8 +2,7 @@ /** * Turkish (Türkçe) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageTr extends Language { function ucfirst ( $string ) { diff --git a/languages/classes/LanguageTyv.php b/languages/classes/LanguageTyv.php index aacfaff5..e912fe80 100644 --- a/languages/classes/LanguageTyv.php +++ b/languages/classes/LanguageTyv.php @@ -1,7 +1,6 @@ <?php /** Tyvan localization (Тыва дыл) - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ # From friends at tyvawiki.org diff --git a/languages/classes/LanguageUk.php b/languages/classes/LanguageUk.php new file mode 100644 index 00000000..a16576ec --- /dev/null +++ b/languages/classes/LanguageUk.php @@ -0,0 +1,88 @@ +<?php +/** Ukrainian (українська мова) + * + * @package MediaWiki + * @subpackage Language + */ + +/* Please, see Language.php for general function comments */ +class LanguageUk extends Language { + # Convert from the nominative form of a noun to some other case + # Invoked with {{grammar:case|word}} + function convertGrammar( $word, $case ) { + global $wgGrammarForms; + if ( isset($wgGrammarForms['uk'][$case][$word]) ) { + return $wgGrammarForms['uk'][$case][$word]; + } + + # These rules are not perfect, but they are currently only used for site names so it doesn't + # matter if they are wrong sometimes. Just add a special case for your site name if necessary. + + #join and array_slice instead mb_substr + $ar = array(); + preg_match_all( '/./us', $word, $ar ); + if (!preg_match("/[a-zA-Z_]/us", $word)) + switch ( $case ) { + case 'genitive': #родовий відмінок + if ((join('',array_slice($ar[0],-4))=='вікі') || (join('',array_slice($ar[0],-4))=='Вікі')) + {} + elseif (join('',array_slice($ar[0],-1))=='ь') + $word = join('',array_slice($ar[0],0,-1)).'я'; + elseif (join('',array_slice($ar[0],-2))=='ія') + $word=join('',array_slice($ar[0],0,-2)).'ії'; + elseif (join('',array_slice($ar[0],-2))=='ка') + $word=join('',array_slice($ar[0],0,-2)).'ки'; + elseif (join('',array_slice($ar[0],-2))=='ти') + $word=join('',array_slice($ar[0],0,-2)).'тей'; + elseif (join('',array_slice($ar[0],-2))=='ди') + $word=join('',array_slice($ar[0],0,-2)).'дів'; + elseif (join('',array_slice($ar[0],-3))=='ник') + $word=join('',array_slice($ar[0],0,-3)).'ника'; + break; + case 'dative': #давальний відмінок + #stub + break; + case 'accusative': #знахідний відмінок + if ((join('',array_slice($ar[0],-4))=='вікі') || (join('',array_slice($ar[0],-4))=='Вікі')) + {} + elseif (join('',array_slice($ar[0],-2))=='ія') + $word=join('',array_slice($ar[0],0,-2)).'ію'; + break; + case 'instrumental': #орудний відмінок + #stub + break; + case 'prepositional': #місцевий відмінок + #stub + break; + } + return $word; + } + + function convertPlural( $count, $wordform1, $wordform2, $wordform3, $w4, $w5) { + $count = str_replace (' ', '', $count); + if ($count > 10 && floor(($count % 100) / 10) == 1) { + return $wordform3; + } else { + switch ($count % 10) { + case 1: return $wordform1; + case 2: + case 3: + case 4: return $wordform2; + default: return $wordform3; + } + } + } + + /* + * Ukrainian numeric format is "12 345,67" but "1234,56" + */ + + function commafy($_) { + if (!preg_match('/^\d{1,4}$/',$_)) { + return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_))); + } else { + return $_; + } + } +} +?> diff --git a/languages/classes/LanguageWa.php b/languages/classes/LanguageWa.php index 541c6de8..aef063db 100644 --- a/languages/classes/LanguageWa.php +++ b/languages/classes/LanguageWa.php @@ -2,8 +2,7 @@ /** * Walloon (Walon) * - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ # NOTE: cweri après "NOTE:" po des racsegnes so des ratournaedjes diff --git a/languages/classes/LanguageZh.php b/languages/classes/LanguageZh.php index d4fbaf30..9fa04985 100644 --- a/languages/classes/LanguageZh.php +++ b/languages/classes/LanguageZh.php @@ -1,7 +1,6 @@ <?php /** - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ require_once( dirname(__FILE__).'/../LanguageConverter.php' ); require_once( dirname(__FILE__).'/LanguageZh_cn.php' ); diff --git a/languages/classes/LanguageZh_cn.php b/languages/classes/LanguageZh_cn.php index af94cb99..1f40388c 100644 --- a/languages/classes/LanguageZh_cn.php +++ b/languages/classes/LanguageZh_cn.php @@ -1,7 +1,6 @@ <?php /** - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageZh_cn extends Language { function stripForSearch( $string ) { diff --git a/languages/classes/LanguageZh_yue.php b/languages/classes/LanguageZh_yue.php index 0e45508c..dd2d30a5 100644 --- a/languages/classes/LanguageZh_yue.php +++ b/languages/classes/LanguageZh_yue.php @@ -1,7 +1,6 @@ <?php /** - * @package MediaWiki - * @subpackage Language + * @addtogroup Language */ class LanguageZh_yue extends Language { function stripForSearch( $string ) { |