summaryrefslogtreecommitdiff
path: root/languages/classes
diff options
context:
space:
mode:
Diffstat (limited to 'languages/classes')
-rw-r--r--languages/classes/LanguageAr.php28
-rw-r--r--languages/classes/LanguageAz.php3
-rw-r--r--languages/classes/LanguageBe.php8
-rw-r--r--languages/classes/LanguageBe_x_old.php88
-rw-r--r--languages/classes/LanguageBg.php6
-rw-r--r--languages/classes/LanguageBs.php3
-rw-r--r--languages/classes/LanguageCs.php3
-rw-r--r--languages/classes/LanguageCu.php3
-rw-r--r--languages/classes/LanguageEo.php3
-rw-r--r--languages/classes/LanguageEt.php3
-rw-r--r--languages/classes/LanguageFi.php10
-rw-r--r--languages/classes/LanguageFr.php3
-rw-r--r--languages/classes/LanguageGa.php3
-rw-r--r--languages/classes/LanguageGsw.php3
-rw-r--r--languages/classes/LanguageHe.php3
-rw-r--r--languages/classes/LanguageHr.php3
-rw-r--r--languages/classes/LanguageHsb.php3
-rw-r--r--languages/classes/LanguageHu.php3
-rw-r--r--languages/classes/LanguageHy.php73
-rw-r--r--languages/classes/LanguageJa.php3
-rw-r--r--languages/classes/LanguageKk.php48
-rw-r--r--languages/classes/LanguageKk_kz.php3
-rw-r--r--languages/classes/LanguageKo.php4
-rw-r--r--languages/classes/LanguageKsh.php3
-rw-r--r--languages/classes/LanguageLa.php57
-rw-r--r--languages/classes/LanguageLt.php3
-rw-r--r--languages/classes/LanguageLv.php3
-rw-r--r--languages/classes/LanguagePt_br.php3
-rw-r--r--languages/classes/LanguageRu.php3
-rw-r--r--languages/classes/LanguageSk.php3
-rw-r--r--languages/classes/LanguageSl.php111
-rw-r--r--languages/classes/LanguageSr.php5
-rw-r--r--languages/classes/LanguageSr_ec.php3
-rw-r--r--languages/classes/LanguageSr_el.php3
-rw-r--r--languages/classes/LanguageTr.php3
-rw-r--r--languages/classes/LanguageTyv.php3
-rw-r--r--languages/classes/LanguageUk.php88
-rw-r--r--languages/classes/LanguageWa.php3
-rw-r--r--languages/classes/LanguageZh.php3
-rw-r--r--languages/classes/LanguageZh_cn.php3
-rw-r--r--languages/classes/LanguageZh_yue.php3
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 ) {