summaryrefslogtreecommitdiff
path: root/languages
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2006-10-11 18:12:39 +0000
committerPierre Schmitz <pierre@archlinux.de>2006-10-11 18:12:39 +0000
commit183851b06bd6c52f3cae5375f433da720d410447 (patch)
treea477257decbf3360127f6739c2f9d0ec57a03d39 /languages
MediaWiki 1.7.1 wiederhergestellt
Diffstat (limited to 'languages')
-rw-r--r--languages/.htaccess1
-rw-r--r--languages/Language.php1226
-rw-r--r--languages/LanguageAb.deps.php9
-rw-r--r--languages/LanguageAb.php30
-rw-r--r--languages/LanguageAf.php90
-rw-r--r--languages/LanguageAn.php49
-rw-r--r--languages/LanguageAr.php165
-rw-r--r--languages/LanguageArc.php22
-rw-r--r--languages/LanguageAs.php27
-rw-r--r--languages/LanguageAst.php49
-rw-r--r--languages/LanguageAv.deps.php9
-rw-r--r--languages/LanguageAv.php30
-rw-r--r--languages/LanguageAy.deps.php9
-rw-r--r--languages/LanguageAy.php28
-rw-r--r--languages/LanguageAz.php87
-rw-r--r--languages/LanguageBa.deps.php9
-rw-r--r--languages/LanguageBa.php30
-rw-r--r--languages/LanguageBat_smg.deps.php10
-rw-r--r--languages/LanguageBat_smg.php26
-rw-r--r--languages/LanguageBe.php277
-rw-r--r--languages/LanguageBg.php193
-rw-r--r--languages/LanguageBm.deps.php9
-rw-r--r--languages/LanguageBm.php24
-rw-r--r--languages/LanguageBn.php75
-rw-r--r--languages/LanguageBo.php35
-rw-r--r--languages/LanguageBr.php126
-rw-r--r--languages/LanguageBs.php294
-rw-r--r--languages/LanguageCa.php103
-rw-r--r--languages/LanguageCe.deps.php9
-rw-r--r--languages/LanguageCe.php36
-rw-r--r--languages/LanguageConverter.php660
-rw-r--r--languages/LanguageCs.php265
-rw-r--r--languages/LanguageCsb.php48
-rw-r--r--languages/LanguageCv.deps.php9
-rw-r--r--languages/LanguageCv.php99
-rw-r--r--languages/LanguageCy.php137
-rw-r--r--languages/LanguageDa.php111
-rw-r--r--languages/LanguageDe.php115
-rw-r--r--languages/LanguageDv.php18
-rw-r--r--languages/LanguageDz.php30
-rw-r--r--languages/LanguageEl.php95
-rw-r--r--languages/LanguageEn.php16
-rw-r--r--languages/LanguageEo.php177
-rw-r--r--languages/LanguageEs.php100
-rw-r--r--languages/LanguageEt.php253
-rw-r--r--languages/LanguageEu.php83
-rw-r--r--languages/LanguageFa.php113
-rw-r--r--languages/LanguageFi.php327
-rw-r--r--languages/LanguageFo.php109
-rw-r--r--languages/LanguageFr.php119
-rw-r--r--languages/LanguageFur.php105
-rw-r--r--languages/LanguageFy.php121
-rw-r--r--languages/LanguageGa.php219
-rw-r--r--languages/LanguageGn.deps.php9
-rw-r--r--languages/LanguageGn.php28
-rw-r--r--languages/LanguageGsw.deps.php9
-rw-r--r--languages/LanguageGsw.php115
-rw-r--r--languages/LanguageGu.php27
-rw-r--r--languages/LanguageHe.php309
-rw-r--r--languages/LanguageHi.php80
-rw-r--r--languages/LanguageHr.php132
-rw-r--r--languages/LanguageHu.php132
-rw-r--r--languages/LanguageIa.php82
-rw-r--r--languages/LanguageId.php118
-rw-r--r--languages/LanguageIi.deps.php9
-rw-r--r--languages/LanguageIi.php27
-rw-r--r--languages/LanguageIs.php176
-rw-r--r--languages/LanguageIt.php84
-rw-r--r--languages/LanguageJa.php172
-rw-r--r--languages/LanguageJv.php115
-rw-r--r--languages/LanguageKa.php46
-rw-r--r--languages/LanguageKm.php30
-rw-r--r--languages/LanguageKn.php90
-rw-r--r--languages/LanguageKo.php182
-rw-r--r--languages/LanguageKs.php18
-rw-r--r--languages/LanguageKu.php65
-rw-r--r--languages/LanguageKv.deps.php9
-rw-r--r--languages/LanguageKv.php29
-rw-r--r--languages/LanguageLa.php120
-rw-r--r--languages/LanguageLi.php93
-rw-r--r--languages/LanguageLo.php30
-rw-r--r--languages/LanguageLt.php108
-rw-r--r--languages/LanguageLv.php118
-rw-r--r--languages/LanguageMk.php156
-rw-r--r--languages/LanguageMl.php30
-rw-r--r--languages/LanguageMs.php80
-rw-r--r--languages/LanguageNah.deps.php9
-rw-r--r--languages/LanguageNah.php52
-rw-r--r--languages/LanguageNap.deps.php9
-rw-r--r--languages/LanguageNap.php22
-rw-r--r--languages/LanguageNds.php155
-rw-r--r--languages/LanguageNds_nl.php76
-rw-r--r--languages/LanguageNl.php101
-rw-r--r--languages/LanguageNn.php233
-rw-r--r--languages/LanguageNo.php114
-rw-r--r--languages/LanguageNon.deps.php9
-rw-r--r--languages/LanguageNon.php24
-rw-r--r--languages/LanguageNv.php88
-rw-r--r--languages/LanguageOc.php101
-rw-r--r--languages/LanguageOr.php30
-rw-r--r--languages/LanguageOs.deps.php9
-rw-r--r--languages/LanguageOs.php102
-rw-r--r--languages/LanguagePa.php97
-rw-r--r--languages/LanguagePl.php133
-rw-r--r--languages/LanguagePms.deps.php9
-rw-r--r--languages/LanguagePms.php75
-rw-r--r--languages/LanguagePs.php26
-rw-r--r--languages/LanguagePt.php202
-rw-r--r--languages/LanguagePt_br.deps.php9
-rw-r--r--languages/LanguagePt_br.php80
-rw-r--r--languages/LanguageQu.deps.php9
-rw-r--r--languages/LanguageQu.php28
-rw-r--r--languages/LanguageRmy.deps.php9
-rw-r--r--languages/LanguageRmy.php52
-rw-r--r--languages/LanguageRo.php130
-rw-r--r--languages/LanguageRu.php245
-rw-r--r--languages/LanguageSc.php55
-rw-r--r--languages/LanguageSd.php18
-rw-r--r--languages/LanguageSk.php263
-rw-r--r--languages/LanguageSl.php223
-rw-r--r--languages/LanguageSq.php112
-rw-r--r--languages/LanguageSr.deps.php10
-rw-r--r--languages/LanguageSr.php224
-rw-r--r--languages/LanguageSr_ec.php281
-rw-r--r--languages/LanguageSr_el.deps.php9
-rw-r--r--languages/LanguageSr_el.php281
-rw-r--r--languages/LanguageSr_jc.deps.php9
-rw-r--r--languages/LanguageSr_jc.php11
-rw-r--r--languages/LanguageSr_jl.deps.php9
-rw-r--r--languages/LanguageSr_jl.php11
-rw-r--r--languages/LanguageSu.php53
-rw-r--r--languages/LanguageSv.php114
-rw-r--r--languages/LanguageTa.php105
-rw-r--r--languages/LanguageTe.php83
-rw-r--r--languages/LanguageTh.php75
-rw-r--r--languages/LanguageTlh.php38
-rw-r--r--languages/LanguageTr.php87
-rw-r--r--languages/LanguageTt.php131
-rw-r--r--languages/LanguageTy.deps.php9
-rw-r--r--languages/LanguageTy.php28
-rw-r--r--languages/LanguageTyv.php312
-rw-r--r--languages/LanguageUdm.deps.php9
-rw-r--r--languages/LanguageUdm.php81
-rw-r--r--languages/LanguageUg.php22
-rw-r--r--languages/LanguageUk.php98
-rw-r--r--languages/LanguageUr.php45
-rw-r--r--languages/LanguageUtf8.php199
-rw-r--r--languages/LanguageVec.deps.php9
-rw-r--r--languages/LanguageVec.php77
-rw-r--r--languages/LanguageVi.php216
-rw-r--r--languages/LanguageWa.php165
-rw-r--r--languages/LanguageXal.php51
-rw-r--r--languages/LanguageYi.php106
-rw-r--r--languages/LanguageZa.deps.php9
-rw-r--r--languages/LanguageZa.php28
-rw-r--r--languages/LanguageZh.deps.php10
-rw-r--r--languages/LanguageZh.php103
-rw-r--r--languages/LanguageZh_cn.php141
-rw-r--r--languages/LanguageZh_hk.deps.php10
-rw-r--r--languages/LanguageZh_hk.php11
-rw-r--r--languages/LanguageZh_sg.deps.php9
-rw-r--r--languages/LanguageZh_sg.php11
-rw-r--r--languages/LanguageZh_tw.deps.php9
-rw-r--r--languages/LanguageZh_tw.php101
-rw-r--r--languages/Messages.php2060
-rw-r--r--languages/MessagesAf.php688
-rw-r--r--languages/MessagesAr.php505
-rw-r--r--languages/MessagesAz.php659
-rw-r--r--languages/MessagesBe.php581
-rw-r--r--languages/MessagesBg.php1401
-rw-r--r--languages/MessagesBn.php107
-rw-r--r--languages/MessagesBr.php1085
-rw-r--r--languages/MessagesBs.php1059
-rw-r--r--languages/MessagesCa.php1205
-rw-r--r--languages/MessagesCs.php1839
-rw-r--r--languages/MessagesCsb.php311
-rw-r--r--languages/MessagesCv.php218
-rw-r--r--languages/MessagesCy.php798
-rw-r--r--languages/MessagesDa.php1398
-rw-r--r--languages/MessagesDe.php1810
-rw-r--r--languages/MessagesEl.php1859
-rw-r--r--languages/MessagesEo.php1223
-rw-r--r--languages/MessagesEs.php1879
-rw-r--r--languages/MessagesEt.php831
-rw-r--r--languages/MessagesEu.php171
-rw-r--r--languages/MessagesFa.php896
-rw-r--r--languages/MessagesFi.php1736
-rw-r--r--languages/MessagesFo.php69
-rw-r--r--languages/MessagesFr.php1496
-rw-r--r--languages/MessagesFur.php718
-rw-r--r--languages/MessagesFy.php837
-rw-r--r--languages/MessagesGa.php1792
-rw-r--r--languages/MessagesGsw.php799
-rw-r--r--languages/MessagesHe.php1873
-rw-r--r--languages/MessagesHi.php102
-rw-r--r--languages/MessagesHr.php1518
-rw-r--r--languages/MessagesHu.php765
-rw-r--r--languages/MessagesIa.php802
-rw-r--r--languages/MessagesId.php1805
-rw-r--r--languages/MessagesIs.php637
-rw-r--r--languages/MessagesIt.php1814
-rw-r--r--languages/MessagesJa.php1545
-rw-r--r--languages/MessagesJv.php6
-rw-r--r--languages/MessagesKn.php339
-rw-r--r--languages/MessagesKo.php867
-rw-r--r--languages/MessagesKu.php751
-rw-r--r--languages/MessagesLa.php667
-rw-r--r--languages/MessagesLi.php902
-rw-r--r--languages/MessagesLt.php949
-rw-r--r--languages/MessagesLv.php951
-rw-r--r--languages/MessagesMk.php1542
-rw-r--r--languages/MessagesMs.php800
-rw-r--r--languages/MessagesNah.php37
-rw-r--r--languages/MessagesNds.php1116
-rw-r--r--languages/MessagesNl.php1563
-rw-r--r--languages/MessagesNn.php1537
-rw-r--r--languages/MessagesNo.php1318
-rw-r--r--languages/MessagesOc.php780
-rw-r--r--languages/MessagesOs.php180
-rw-r--r--languages/MessagesPa.php372
-rw-r--r--languages/MessagesPl.php1585
-rw-r--r--languages/MessagesPms.php1684
-rw-r--r--languages/MessagesPt.php1765
-rw-r--r--languages/MessagesPt_br.php791
-rw-r--r--languages/MessagesRmy.php302
-rw-r--r--languages/MessagesRo.php1570
-rw-r--r--languages/MessagesRu.php1955
-rw-r--r--languages/MessagesSc.php652
-rw-r--r--languages/MessagesSk.php1660
-rw-r--r--languages/MessagesSl.php1539
-rw-r--r--languages/MessagesSq.php1368
-rw-r--r--languages/MessagesSr_ec.php1506
-rw-r--r--languages/MessagesSr_el.php1506
-rw-r--r--languages/MessagesSu.php1060
-rw-r--r--languages/MessagesSv.php1405
-rw-r--r--languages/MessagesTa.php716
-rw-r--r--languages/MessagesTe.php801
-rw-r--r--languages/MessagesTh.php190
-rw-r--r--languages/MessagesTr.php1091
-rw-r--r--languages/MessagesTt.php42
-rw-r--r--languages/MessagesTyv.php262
-rw-r--r--languages/MessagesUdm.php19
-rw-r--r--languages/MessagesUk.php816
-rw-r--r--languages/MessagesVec.php1157
-rw-r--r--languages/MessagesVi.php1308
-rw-r--r--languages/MessagesWa.php2030
-rw-r--r--languages/MessagesXal.php30
-rw-r--r--languages/MessagesYi.php423
-rw-r--r--languages/MessagesZh_cn.php834
-rw-r--r--languages/MessagesZh_tw.php829
-rw-r--r--languages/Names.php255
251 files changed, 102272 insertions, 0 deletions
diff --git a/languages/.htaccess b/languages/.htaccess
new file mode 100644
index 00000000..3a428827
--- /dev/null
+++ b/languages/.htaccess
@@ -0,0 +1 @@
+Deny from all
diff --git a/languages/Language.php b/languages/Language.php
new file mode 100644
index 00000000..cbb5e316
--- /dev/null
+++ b/languages/Language.php
@@ -0,0 +1,1226 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+if( defined( 'MEDIAWIKI' ) ) {
+
+#
+# In general you should not make customizations in these language files
+# directly, but should use the MediaWiki: special namespace to customize
+# user interface messages through the wiki.
+# See http://meta.wikipedia.org/wiki/MediaWiki_namespace
+#
+# NOTE TO TRANSLATORS: Do not copy this whole file when making translations!
+# A lot of common constants and a base class with inheritable methods are
+# defined here, which should not be redefined. See the other LanguageXx.php
+# files for examples.
+#
+
+#--------------------------------------------------------------------------
+# Language-specific text
+#--------------------------------------------------------------------------
+
+if($wgMetaNamespace === FALSE)
+ $wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
+
+/* private */ $wgNamespaceNamesEn = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_MAIN => '',
+ NS_TALK => 'Talk',
+ NS_USER => 'User',
+ NS_USER_TALK => 'User_talk',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_talk',
+ NS_IMAGE => 'Image',
+ NS_IMAGE_TALK => 'Image_talk',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Template_talk',
+ NS_HELP => 'Help',
+ NS_HELP_TALK => 'Help_talk',
+ NS_CATEGORY => 'Category',
+ NS_CATEGORY_TALK => 'Category_talk',
+);
+
+if(isset($wgExtraNamespaces)) {
+ $wgNamespaceNamesEn=$wgNamespaceNamesEn+$wgExtraNamespaces;
+}
+
+/* private */ $wgDefaultUserOptionsEn = array(
+ 'quickbar' => 1,
+ 'underline' => 2,
+ 'cols' => 80,
+ 'rows' => 25,
+ 'searchlimit' => 20,
+ 'contextlines' => 5,
+ 'contextchars' => 50,
+ 'skin' => $wgDefaultSkin,
+ 'math' => 1,
+ 'rcdays' => 7,
+ 'rclimit' => 50,
+ 'wllimit' => 250,
+ 'highlightbroken' => 1,
+ 'stubthreshold' => 0,
+ 'previewontop' => 1,
+ 'editsection' => 1,
+ 'editsectiononrightclick'=> 0,
+ 'showtoc' => 1,
+ 'showtoolbar' => 1,
+ 'date' => 0,
+ 'imagesize' => 2,
+ 'thumbsize' => 2,
+ 'rememberpassword' => 0,
+ 'enotifwatchlistpages' => 0,
+ 'enotifusertalkpages' => 1,
+ 'enotifminoredits' => 0,
+ 'enotifrevealaddr' => 0,
+ 'shownumberswatching' => 1,
+ 'fancysig' => 0,
+ 'externaleditor' => 0,
+ 'externaldiff' => 0,
+ 'showjumplinks' => 1,
+ 'numberheadings' => 0,
+ 'uselivepreview' => 0,
+ 'watchlistdays' => 3.0,
+);
+
+/* private */ $wgQuickbarSettingsEn = array(
+ 'None', 'Fixed left', 'Fixed right', 'Floating left', 'Floating right'
+);
+
+/* private */ $wgSkinNamesEn = array(
+ 'standard' => 'Classic',
+ 'nostalgia' => 'Nostalgia',
+ 'cologneblue' => 'Cologne Blue',
+ 'davinci' => 'DaVinci',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ 'myskin' => 'MySkin',
+ 'chick' => 'Chick'
+);
+
+/* private */ $wgMathNamesEn = array(
+ MW_MATH_PNG => 'mw_math_png',
+ MW_MATH_SIMPLE => 'mw_math_simple',
+ MW_MATH_HTML => 'mw_math_html',
+ MW_MATH_SOURCE => 'mw_math_source',
+ MW_MATH_MODERN => 'mw_math_modern',
+ MW_MATH_MATHML => 'mw_math_mathml'
+);
+
+/**
+ * Whether to use user or default setting in Language::date()
+ *
+ * NOTE: the array string values are no longer important!
+ * The actual date format functions are now called for the selection in
+ * Special:Preferences, and the 'datedefault' message for MW_DATE_DEFAULT.
+ *
+ * The array keys make up the set of formats which this language allows
+ * the user to select. It's exposed via Language::getDateFormats().
+ *
+ * @private
+ */
+$wgDateFormatsEn = array(
+ MW_DATE_DEFAULT => 'No preference',
+ MW_DATE_DMY => '16:12, 15 January 2001',
+ MW_DATE_MDY => '16:12, January 15, 2001',
+ MW_DATE_YMD => '16:12, 2001 January 15',
+ MW_DATE_ISO => '2001-01-15 16:12:34'
+);
+
+/* private */ $wgUserTogglesEn = array(
+ 'highlightbroken',
+ 'justify',
+ 'hideminor',
+ 'extendwatchlist',
+ 'usenewrc',
+ 'numberheadings',
+ 'showtoolbar',
+ 'editondblclick',
+ 'editsection',
+ 'editsectiononrightclick',
+ 'showtoc',
+ 'rememberpassword',
+ 'editwidth',
+ 'watchcreations',
+ 'watchdefault',
+ 'minordefault',
+ 'previewontop',
+ 'previewonfirst',
+ 'nocache',
+ 'enotifwatchlistpages',
+ 'enotifusertalkpages',
+ 'enotifminoredits',
+ 'enotifrevealaddr',
+ 'shownumberswatching',
+ 'fancysig',
+ 'externaleditor',
+ 'externaldiff',
+ 'showjumplinks',
+ 'uselivepreview',
+ 'autopatrol',
+ 'forceeditsummary',
+ 'watchlisthideown',
+ 'watchlisthidebots',
+);
+
+/* private */ $wgBookstoreListEn = array(
+ 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN',
+ 'PriceSCAN' => 'http://www.pricescan.com/books/bookDetail.asp?isbn=$1',
+ 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1',
+ 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1'
+);
+
+# Read language names
+global $wgLanguageNames;
+/** */
+require_once( 'Names.php' );
+
+$wgLanguageNamesEn =& $wgLanguageNames;
+
+
+/* private */ $wgWeekdayNamesEn = array(
+ 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday',
+ 'friday', 'saturday'
+);
+
+
+/* private */ $wgMonthNamesEn = array(
+ 'january', 'february', 'march', 'april', 'may_long', 'june',
+ 'july', 'august', 'september', 'october', 'november',
+ 'december'
+);
+/* private */ $wgMonthNamesGenEn = array(
+ 'january-gen', 'february-gen', 'march-gen', 'april-gen', 'may-gen', 'june-gen',
+ 'july-gen', 'august-gen', 'september-gen', 'october-gen', 'november-gen',
+ 'december-gen'
+);
+
+/* private */ $wgMonthAbbreviationsEn = array(
+ 'jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug',
+ 'sep', 'oct', 'nov', 'dec'
+);
+
+# Note to translators:
+# Please include the English words as synonyms. This allows people
+# from other wikis to contribute more easily.
+#
+/* private */ $wgMagicWordsEn = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#REDIRECT' ),
+ MAG_NOTOC => array( 0, '__NOTOC__' ),
+ MAG_NOGALLERY => array( 0, '__NOGALLERY__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__' ),
+ MAG_TOC => array( 0, '__TOC__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__' ),
+ MAG_START => array( 0, '__START__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY' ),
+ MAG_CURRENTDAY2 => array( 1, 'CURRENTDAY2' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME' ),
+ MAG_NUMBEROFPAGES => array( 1, 'NUMBEROFPAGES' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES' ),
+ MAG_NUMBEROFUSERS => array( 1, 'NUMBEROFUSERS' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE' ),
+ MAG_NAMESPACEE => array( 1, 'NAMESPACEE' ),
+ MAG_TALKSPACE => array( 1, 'TALKSPACE' ),
+ MAG_TALKSPACEE => array( 1, 'TALKSPACEE' ),
+ MAG_SUBJECTSPACE => array( 1, 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ MAG_SUBJECTSPACEE => array( 1, 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ MAG_FULLPAGENAME => array( 1, 'FULLPAGENAME' ),
+ MAG_FULLPAGENAMEE => array( 1, 'FULLPAGENAMEE' ),
+ MAG_SUBPAGENAME => array( 1, 'SUBPAGENAME' ),
+ MAG_SUBPAGENAMEE => array( 1, 'SUBPAGENAMEE' ),
+ MAG_BASEPAGENAME => array( 1, 'BASEPAGENAME' ),
+ MAG_BASEPAGENAMEE => array( 1, 'BASEPAGENAMEE' ),
+ MAG_TALKPAGENAME => array( 1, 'TALKPAGENAME' ),
+ MAG_TALKPAGENAMEE => array( 1, 'TALKPAGENAMEE' ),
+ MAG_SUBJECTPAGENAME => array( 1, 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ MAG_SUBJECTPAGENAMEE => array( 1, 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ MAG_MSG => array( 0, 'MSG:' ),
+ MAG_SUBST => array( 0, 'SUBST:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:' ),
+ MAG_END => array( 0, '__END__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1'),
+ MAG_IMG_RIGHT => array( 1, 'right' ),
+ MAG_IMG_LEFT => array( 1, 'left' ),
+ MAG_IMG_NONE => array( 1, 'none' ),
+ MAG_IMG_WIDTH => array( 1, '$1px' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame' ),
+ MAG_INT => array( 0, 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME' ),
+ MAG_NS => array( 0, 'NS:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:' ),
+ MAG_SERVER => array( 0, 'SERVER' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__'),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__'),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID' ),
+ MAG_PLURAL => array( 0, 'PLURAL:' ),
+ MAG_FULLURL => array( 0, 'FULLURL:' ),
+ MAG_FULLURLE => array( 0, 'FULLURLE:' ),
+ MAG_LCFIRST => array( 0, 'LCFIRST:' ),
+ MAG_UCFIRST => array( 0, 'UCFIRST:' ),
+ MAG_LC => array( 0, 'LC:' ),
+ MAG_UC => array( 0, 'UC:' ),
+ MAG_RAW => array( 0, 'RAW:' ),
+ MAG_DISPLAYTITLE => array( 1, 'DISPLAYTITLE' ),
+ MAG_RAWSUFFIX => array( 1, 'R' ),
+ MAG_NEWSECTIONLINK => array( 1, '__NEWSECTIONLINK__' ),
+ MAG_CURRENTVERSION => array( 1, 'CURRENTVERSION' ),
+ MAG_URLENCODE => array( 0, 'URLENCODE:' ),
+ MAG_CURRENTTIMESTAMP => array( 1, 'CURRENTTIMESTAMP' ),
+ MAG_DIRECTIONMARK => array( 1, 'DIRECTIONMARK', 'DIRMARK' ),
+ MAG_LANGUAGE => array( 0, '#LANGUAGE:' ),
+ MAG_CONTENTLANGUAGE => array( 1, 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ MAG_PAGESINNAMESPACE => array( 1, 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ MAG_NUMBEROFADMINS => array( 1, 'NUMBEROFADMINS' ),
+ MAG_FORMATNUM => array( 0, 'FORMATNUM' ),
+
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('Messages.php');
+}
+
+/* a fake language converter */
+class fakeConverter {
+ var $mLang;
+ function fakeConverter($langobj) {$this->mLang = $langobj;}
+ function convert($t, $i) {return $t;}
+ function parserConvert($t, $p) {return $t;}
+ function getVariants() { return array( $this->mLang->getCode() ); }
+ function getPreferredVariant() {return $this->mLang->getCode(); }
+ function findVariantLink(&$l, &$n) {}
+ function getExtraHashOptions() {return '';}
+ function getParsedTitle() {return '';}
+ function markNoConversion($text) {return $text;}
+ function convertCategoryKey( $key ) {return $key; }
+
+}
+
+#--------------------------------------------------------------------------
+# Internationalisation code
+#--------------------------------------------------------------------------
+
+class Language {
+ var $mConverter;
+ function __construct() {
+ $this->mConverter = new fakeConverter($this);
+ }
+
+ /**
+ * Exports the default user options as defined in
+ * $wgDefaultUserOptionsEn, user preferences can override some of these
+ * depending on what's in (Local|Default)Settings.php and some defines.
+ *
+ * @return array
+ */
+ function getDefaultUserOptions() {
+ global $wgDefaultUserOptionsEn;
+ return $wgDefaultUserOptionsEn;
+ }
+
+ /**
+ * Exports $wgBookstoreListEn
+ * @return array
+ */
+ function getBookstoreList() {
+ global $wgBookstoreListEn;
+ return $wgBookstoreListEn;
+ }
+
+ /**
+ * @return array
+ */
+ function getNamespaces() {
+ global $wgNamespaceNamesEn;
+ return $wgNamespaceNamesEn;
+ }
+
+ /**
+ * A convenience function that returns the same thing as
+ * getNamespaces() except with the array values changed to ' '
+ * where it found '_', useful for producing output to be displayed
+ * e.g. in <select> forms.
+ *
+ * @return array
+ */
+ function getFormattedNamespaces() {
+ $ns = $this->getNamespaces();
+ foreach($ns as $k => $v) {
+ $ns[$k] = strtr($v, '_', ' ');
+ }
+ return $ns;
+ }
+
+ /**
+ * Get a namespace value by key
+ * <code>
+ * $mw_ns = $wgContLang->getNsText( NS_MEDIAWIKI );
+ * echo $mw_ns; // prints 'MediaWiki'
+ * </code>
+ *
+ * @param int $index the array key of the namespace to return
+ * @return mixed, string if the namespace value exists, otherwise false
+ */
+ function getNsText( $index ) {
+ $ns = $this->getNamespaces();
+ return isset( $ns[$index] ) ? $ns[$index] : false;
+ }
+
+ /**
+ * A convenience function that returns the same thing as
+ * getNsText() except with '_' changed to ' ', useful for
+ * producing output.
+ *
+ * @return array
+ */
+ function getFormattedNsText( $index ) {
+ $ns = $this->getNsText( $index );
+ return strtr($ns, '_', ' ');
+ }
+
+ /**
+ * Get a namespace key by value, case insensetive.
+ *
+ * @param string $text
+ * @return mixed An integer if $text is a valid value otherwise false
+ */
+ function getNsIndex( $text ) {
+ $ns = $this->getNamespaces();
+
+ foreach ( $ns as $i => $n ) {
+ if ( strcasecmp( $n, $text ) == 0)
+ return $i;
+ }
+ return false;
+ }
+
+ /**
+ * short names for language variants used for language conversion links.
+ *
+ * @param string $code
+ * @return string
+ */
+ function getVariantname( $code ) {
+ return wfMsg( "variantname-$code" );
+ }
+
+ function specialPage( $name ) {
+ return $this->getNsText(NS_SPECIAL) . ':' . $name;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsEn;
+ return $wgQuickbarSettingsEn;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesEn;
+ return $wgSkinNamesEn;
+ }
+
+ function getMathNames() {
+ global $wgMathNamesEn;
+ return $wgMathNamesEn;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsEn;
+ return $wgDateFormatsEn;
+ }
+
+ function getUserToggles() {
+ global $wgUserTogglesEn;
+ return $wgUserTogglesEn;
+ }
+
+ function getUserToggle( $tog ) {
+ return wfMsg( "tog-$tog" );
+ }
+
+ function getLanguageNames() {
+ global $wgLanguageNamesEn;
+ return $wgLanguageNamesEn;
+ }
+
+ function getLanguageName( $code ) {
+ global $wgLanguageNamesEn;
+ if ( ! array_key_exists( $code, $wgLanguageNamesEn ) ) {
+ return '';
+ }
+ return $wgLanguageNamesEn[$code];
+ }
+
+ function getMonthName( $key ) {
+ global $wgMonthNamesEn, $wgContLang;
+ // see who called us and use the correct message function
+ if( get_class( $wgContLang->getLangObj() ) == get_class( $this ) )
+ return wfMsgForContent($wgMonthNamesEn[$key-1]);
+ else
+ return wfMsg($wgMonthNamesEn[$key-1]);
+ }
+
+ /* by default we just return base form */
+ function getMonthNameGen( $key ) {
+ return $this->getMonthName( $key );
+ }
+
+ function getMonthAbbreviation( $key ) {
+ global $wgMonthAbbreviationsEn, $wgContLang;
+ // see who called us and use the correct message function
+ if( get_class( $wgContLang->getLangObj() ) == get_class( $this ) )
+ return wfMsgForContent(@$wgMonthAbbreviationsEn[$key-1]);
+ else
+ return wfMsg(@$wgMonthAbbreviationsEn[$key-1]);
+ }
+
+ function getWeekdayName( $key ) {
+ global $wgWeekdayNamesEn, $wgContLang;
+ // see who called us and use the correct message function
+ if( get_class( $wgContLang->getLangObj() ) == get_class( $this ) )
+ return wfMsgForContent($wgWeekdayNamesEn[$key-1]);
+ else
+ return wfMsg($wgWeekdayNamesEn[$key-1]);
+ }
+
+ /**
+ * Used by date() and time() to adjust the time output.
+ * @public
+ * @param int $ts the time in date('YmdHis') format
+ * @param mixed $tz adjust the time by this amount (default false,
+ * mean we get user timecorrection setting)
+ * @return int
+
+ */
+ function userAdjust( $ts, $tz = false ) {
+ global $wgUser, $wgLocalTZoffset;
+
+ if (!$tz) {
+ $tz = $wgUser->getOption( 'timecorrection' );
+ }
+
+ # minutes and hours differences:
+ $minDiff = 0;
+ $hrDiff = 0;
+
+ if ( $tz === '' ) {
+ # Global offset in minutes.
+ if( isset($wgLocalTZoffset) ) {
+ $hrDiff = $wgLocalTZoffset % 60;
+ $minDiff = $wgLocalTZoffset - ($hrDiff * 60);
+ }
+ } elseif ( strpos( $tz, ':' ) !== false ) {
+ $tzArray = explode( ':', $tz );
+ $hrDiff = intval($tzArray[0]);
+ $minDiff = intval($hrDiff < 0 ? -$tzArray[1] : $tzArray[1]);
+ } else {
+ $hrDiff = intval( $tz );
+ }
+
+ # No difference ? Return time unchanged
+ if ( 0 == $hrDiff && 0 == $minDiff ) { return $ts; }
+
+ # Generate an adjusted date
+ $t = mktime( (
+ (int)substr( $ts, 8, 2) ) + $hrDiff, # Hours
+ (int)substr( $ts, 10, 2 ) + $minDiff, # Minutes
+ (int)substr( $ts, 12, 2 ), # Seconds
+ (int)substr( $ts, 4, 2 ), # Month
+ (int)substr( $ts, 6, 2 ), # Day
+ (int)substr( $ts, 0, 4 ) ); #Year
+ return date( 'YmdHis', $t );
+ }
+
+ /**
+ * This is meant to be used by time(), date(), and timeanddate() to get
+ * the date preference they're supposed to use, it should be used in
+ * all children.
+ *
+ *<code>
+ * function timeanddate([...], $format = true) {
+ * $datePreference = $this->dateFormat($format);
+ * [...]
+ *</code>
+ *
+ * @param mixed $usePrefs: if true, the user's preference is used
+ * if false, the site/language default is used
+ * if int/string, assumed to be a format.
+ * @return string
+ */
+ function dateFormat( $usePrefs = true ) {
+ global $wgUser;
+
+ if( is_bool( $usePrefs ) ) {
+ if( $usePrefs ) {
+ $datePreference = $wgUser->getOption( 'date' );
+ } else {
+ $options = $this->getDefaultUserOptions();
+ $datePreference = (string)$options['date'];
+ }
+ } else {
+ $datePreference = (string)$usePrefs;
+ }
+
+ // return int
+ if( $datePreference == '' ) {
+ return MW_DATE_DEFAULT;
+ }
+
+ return $datePreference;
+ }
+
+ /**
+ * @public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format true to use user's date format preference
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+ global $wgUser, $wgAmericanDates;
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+ $datePreference = $this->dateFormat( $format );
+ if( $datePreference == MW_DATE_DEFAULT ) {
+ $datePreference = $wgAmericanDates ? MW_DATE_MDY : MW_DATE_DMY;
+ }
+
+ $month = $this->formatMonth( substr( $ts, 4, 2 ), $datePreference );
+ $day = $this->formatDay( substr( $ts, 6, 2 ), $datePreference );
+ $year = $this->formatNum( substr( $ts, 0, 4 ), true );
+
+ switch( $datePreference ) {
+ case MW_DATE_DMY: return "$day $month $year";
+ case MW_DATE_YMD: return "$year $month $day";
+ case MW_DATE_ISO: return substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' .substr($ts, 6, 2);
+ default: return "$month $day, $year";
+ }
+ }
+
+ /**
+ * @public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format true to use user's date format preference
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function time( $ts, $adj = false, $format = true, $timecorrection = false ) {
+ global $wgUser;
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+ $datePreference = $this->dateFormat( $format );
+
+ $sep = $this->timeSeparator( $format );
+
+ $hh = substr( $ts, 8, 2 );
+ $mm = substr( $ts, 10, 2 );
+ $ss = substr( $ts, 12, 2 );
+
+ if ( $datePreference != MW_DATE_ISO ) {
+ $hh = $this->formatNum( $hh, true );
+ $mm = $this->formatNum( $mm, true );
+ //$ss = $this->formatNum( $ss, true );
+ return $hh . $sep . $mm;
+ } else {
+ return $hh . ':' . $mm . ':' . $ss;
+ }
+ }
+
+ /**
+ * Default separator character between hours, minutes, and seconds.
+ * Will be used by Language::time() for non-ISO formats.
+ * (ISO will always use a colon.)
+ * @return string
+ */
+ function timeSeparator( $format ) {
+ return ':';
+ }
+
+ /**
+ * String to insert between the time and the date in a combined
+ * string. Should include any relevant whitespace.
+ * @return string
+ */
+ function timeDateSeparator( $format ) {
+ return ', ';
+ }
+
+ /**
+ * Return true if the time should display before the date.
+ * @return bool
+ * @private
+ */
+ function timeBeforeDate() {
+ return true;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthName( $month );
+ }
+
+ function formatDay( $day, $format ) {
+ return $this->formatNum( 0 + $day, true );
+ }
+
+ /**
+ * @public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+
+ * @param mixed $format what format to return, if it's false output the
+ * default one (default true)
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false) {
+ global $wgUser;
+
+ $datePreference = $this->dateFormat($format);
+ switch ( $datePreference ) {
+ case MW_DATE_ISO: return $this->date( $ts, $adj, $format, $timecorrection ) . ' ' .
+ $this->time( $ts, $adj, $format, $timecorrection );
+ default:
+ $time = $this->time( $ts, $adj, $format, $timecorrection );
+ $sep = $this->timeDateSeparator( $datePreference );
+ $date = $this->date( $ts, $adj, $format, $timecorrection );
+ return $this->timeBeforeDate( $datePreference )
+ ? $time . $sep . $date
+ : $date . $sep . $time;
+ }
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesEn;
+ return @$wgAllMessagesEn[$key];
+ }
+
+ function getAllMessages() {
+ global $wgAllMessagesEn;
+ return $wgAllMessagesEn;
+ }
+
+ function iconv( $in, $out, $string ) {
+ # For most languages, this is a wrapper for iconv
+ return iconv( $in, $out, $string );
+ }
+
+ function ucfirst( $string ) {
+ # For most languages, this is a wrapper for ucfirst()
+ return ucfirst( $string );
+ }
+
+ function uc( $str ) {
+ return strtoupper( $str );
+ }
+
+ function lcfirst( $s ) {
+ return strtolower( $s{0} ). substr( $s, 1 );
+ }
+
+ function lc( $str ) {
+ return strtolower( $str );
+ }
+
+ function checkTitleEncoding( $s ) {
+ global $wgInputEncoding;
+
+ # Check for UTF-8 URLs; Internet Explorer produces these if you
+ # type non-ASCII chars in the URL bar or follow unescaped links.
+ $ishigh = preg_match( '/[\x80-\xff]/', $s);
+ $isutf = ($ishigh ? preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s ) : true );
+
+ if( ($wgInputEncoding != 'utf-8') and $ishigh and $isutf )
+ return @iconv( 'UTF-8', $wgInputEncoding, $s );
+
+ if( ($wgInputEncoding == 'utf-8') and $ishigh and !$isutf )
+ return utf8_encode( $s );
+
+ # Other languages can safely leave this function, or replace
+ # it with one to detect and convert another legacy encoding.
+ return $s;
+ }
+
+ /**
+ * Some languages have special punctuation to strip out
+ * or characters which need to be converted for MySQL's
+ * indexing to grok it correctly. Make such changes here.
+ *
+ * @param string $in
+ * @return string
+ */
+ function stripForSearch( $in ) {
+ return strtolower( $in );
+ }
+
+ function convertForSearchResult( $termsArray ) {
+ # some languages, e.g. Chinese, need to do a conversion
+ # in order for search results to be displayed correctly
+ return $termsArray;
+ }
+
+ /**
+ * Get the first character of a string. In ASCII, return
+ * first byte of the string. UTF8 and others have to
+ * overload this.
+ *
+ * @param string $s
+ * @return string
+ */
+ function firstChar( $s ) {
+ return $s[0];
+ }
+
+ function initEncoding() {
+ # Some languages may have an alternate char encoding option
+ # (Esperanto X-coding, Japanese furigana conversion, etc)
+ # If this language is used as the primary content language,
+ # an override to the defaults can be set here on startup.
+ #global $wgInputEncoding, $wgOutputEncoding, $wgEditEncoding;
+ }
+
+ function setAltEncoding() {
+ # Some languages may have an alternate char encoding option
+ # (Esperanto X-coding, Japanese furigana conversion, etc)
+ # If 'altencoding' is checked in user prefs, this gives a
+ # chance to swap out the default encoding settings.
+ #global $wgInputEncoding, $wgOutputEncoding, $wgEditEncoding;
+ }
+
+ function recodeForEdit( $s ) {
+ # For some languages we'll want to explicitly specify
+ # which characters make it into the edit box raw
+ # or are converted in some way or another.
+ # Note that if wgOutputEncoding is different from
+ # wgInputEncoding, this text will be further converted
+ # to wgOutputEncoding.
+ global $wgInputEncoding, $wgEditEncoding;
+ if( $wgEditEncoding == '' or
+ $wgEditEncoding == $wgInputEncoding ) {
+ return $s;
+ } else {
+ return $this->iconv( $wgInputEncoding, $wgEditEncoding, $s );
+ }
+ }
+
+ function recodeInput( $s ) {
+ # Take the previous into account.
+ global $wgInputEncoding, $wgOutputEncoding, $wgEditEncoding;
+ if($wgEditEncoding != "") {
+ $enc = $wgEditEncoding;
+ } else {
+ $enc = $wgOutputEncoding;
+ }
+ if( $enc == $wgInputEncoding ) {
+ return $s;
+ } else {
+ return $this->iconv( $enc, $wgInputEncoding, $s );
+ }
+ }
+
+ /**
+ * For right-to-left language support
+ *
+ * @return bool
+ */
+ function isRTL() { return false; }
+
+ /**
+ * A hidden direction mark (LRM or RLM), depending on the language direction
+ *
+ * @return string
+ */
+ function getDirMark() { return $this->isRTL() ? "\xE2\x80\x8F" : "\xE2\x80\x8E"; }
+
+ /**
+ * To allow "foo[[bar]]" to extend the link over the whole word "foobar"
+ *
+ * @return bool
+ */
+ function linkPrefixExtension() { return false; }
+
+ function &getMagicWords() {
+ global $wgMagicWordsEn;
+ return $wgMagicWordsEn;
+ }
+
+ # Fill a MagicWord object with data from here
+ function getMagic( &$mw ) {
+ if ( !isset( $this->mMagicExtensions ) ) {
+ $this->mMagicExtensions = array();
+ wfRunHooks( 'LanguageGetMagic', array( &$this->mMagicExtensions, $this->getCode() ) );
+ }
+ if ( isset( $this->mMagicExtensions[$mw->mId] ) ) {
+ $rawEntry = $this->mMagicExtensions[$mw->mId];
+ } else {
+ $magicWords =& $this->getMagicWords();
+ if ( isset( $magicWords[$mw->mId] ) ) {
+ $rawEntry = $magicWords[$mw->mId];
+ } else {
+ # Fall back to English if local list is incomplete
+ $magicWords =& Language::getMagicWords();
+ $rawEntry = $magicWords[$mw->mId];
+ }
+ }
+
+ $mw->mCaseSensitive = $rawEntry[0];
+ $mw->mSynonyms = array_slice( $rawEntry, 1 );
+ }
+
+ /**
+ * Italic is unsuitable for some languages
+ *
+ * @public
+ *
+ * @param string $text The text to be emphasized.
+ * @return string
+ */
+ function emphasize( $text ) {
+ return "<em>$text</em>";
+ }
+
+ /**
+ * Normally we output all numbers in plain en_US style, that is
+ * 293,291.235 for twohundredninetythreethousand-twohundredninetyone
+ * point twohundredthirtyfive. However this is not sutable for all
+ * languages, some such as Pakaran want ੨੯੩,੨੯੫.੨੩੫ and others such as
+ * Icelandic just want to use commas instead of dots, and dots instead
+ * of commas like "293.291,235".
+ *
+ * An example of this function being called:
+ * <code>
+ * wfMsg( 'message', $wgLang->formatNum( $num ) )
+ * </code>
+ *
+ * See LanguageGu.php for the Gujarati implementation and
+ * LanguageIs.php for the , => . and . => , implementation.
+ *
+ * @todo check if it's viable to use localeconv() for the decimal
+ * seperator thing.
+ * @public
+ * @param mixed $number the string to be formatted, should be an integer or
+ * a floating point number.
+ * @param bool $nocommafy Set to true for special numbers like dates
+ * @return string
+ */
+ function formatNum( $number, $nocommafy = false ) {
+ global $wgTranslateNumerals;
+ if (!$nocommafy) {
+ $number = $this->commafy($number);
+ $s = $this->separatorTransformTable();
+ if (!is_null($s)) { $number = strtr($number, $s); }
+ }
+
+ if ($wgTranslateNumerals) {
+ $s = $this->digitTransformTable();
+ if (!is_null($s)) { $number = strtr($number, $s); }
+ }
+
+ return $number;
+ }
+
+ /**
+ * Adds commas to a given number
+ *
+ * @param mixed $_
+ * @return string
+ */
+ function commafy($_) {
+ return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_)));
+ }
+
+ function digitTransformTable() {
+ return null;
+ }
+
+ function separatorTransformTable() {
+ return null;
+ }
+
+
+ /**
+ * For the credit list in includes/Credits.php (action=credits)
+ *
+ * @param array $l
+ * @return string
+ */
+ function listToText( $l ) {
+ $s = '';
+ $m = count($l) - 1;
+ for ($i = $m; $i >= 0; $i--) {
+ if ($i == $m) {
+ $s = $l[$i];
+ } else if ($i == $m - 1) {
+ $s = $l[$i] . ' ' . wfMsg('and') . ' ' . $s;
+ } else {
+ $s = $l[$i] . ', ' . $s;
+ }
+ }
+ return $s;
+ }
+
+ # Crop a string from the beginning or end to a certain number of bytes.
+ # (Bytes are used because our storage has limited byte lengths for some
+ # columns in the database.) Multibyte charsets will need to make sure that
+ # only whole characters are included!
+ #
+ # $length does not include the optional ellipsis.
+ # If $length is negative, snip from the beginning
+ function truncate( $string, $length, $ellipsis = '' ) {
+ if( $length == 0 ) {
+ return $ellipsis;
+ }
+ if ( strlen( $string ) <= abs( $length ) ) {
+ return $string;
+ }
+ if( $length > 0 ) {
+ $string = substr( $string, 0, $length );
+ return $string . $ellipsis;
+ } else {
+ $string = substr( $string, $length );
+ return $ellipsis . $string;
+ }
+ }
+
+ /**
+ * Grammatical transformations, needed for inflected languages
+ * Invoked by putting {{grammar:case|word}} in a message
+ *
+ * @param string $word
+ * @param string $case
+ * @return string
+ */
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['en'][$case][$word]) ) {
+ return $wgGrammarForms['en'][$case][$word];
+ }
+ return $word;
+ }
+
+ /**
+ * Plural form transformations, needed for some languages.
+ * For example, where are 3 form of plural in Russian and Polish,
+ * depending on "count mod 10". See [[w:Plural]]
+ * For English it is pretty simple.
+ *
+ * Invoked by putting {{plural:count|wordform1|wordform2}}
+ * or {{plural:count|wordform1|wordform2|wordform3}}
+ *
+ * Example: {{plural:{{NUMBEROFARTICLES}}|article|articles}}
+ *
+ * @param integer $count
+ * @param string $wordform1
+ * @param string $wordform2
+ * @param string $wordform3 (optional)
+ * @return string
+ */
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ return $count == '1' ? $wordform1 : $wordform2;
+ }
+
+ /**
+ * For translaing of expiry times
+ * @param string The validated block time in English
+ * @return Somehow translated block time
+ * @see LanguageFi.php for example implementation
+ */
+ function translateBlockExpiry( $str ) {
+
+ $scBlockExpiryOptions = wfMsg( 'ipboptions' );
+
+ if ( $scBlockExpiryOptions == '-') {
+ return $str;
+ }
+
+ foreach (explode(',', $scBlockExpiryOptions) as $option) {
+ if ( strpos($option, ":") === false )
+ continue;
+ list($show, $value) = explode(":", $option);
+ if ( strcmp ( $str, $value) == 0 )
+ return '<span title="' . htmlspecialchars($str). '">' .
+ htmlspecialchars( trim( $show ) ) . '</span>';
+ }
+
+ return $str;
+ }
+
+ /**
+ * languages like Chinese need to be segmented in order for the diff
+ * to be of any use
+ *
+ * @param string $text
+ * @return string
+ */
+ function segmentForDiff( $text ) {
+ return $text;
+ }
+
+ /**
+ * and unsegment to show the result
+ *
+ * @param string $text
+ * @return string
+ */
+ function unsegmentForDiff( $text ) {
+ return $text;
+ }
+
+ # convert text to different variants of a language.
+ function convert( $text, $isTitle = false) {
+ return $this->mConverter->convert($text, $isTitle);
+ }
+
+ # Convert text from within Parser
+ function parserConvert( $text, &$parser ) {
+ return $this->mConverter->parserConvert( $text, $parser );
+ }
+
+ /**
+ * Perform output conversion on a string, and encode for safe HTML output.
+ * @param string $text
+ * @param bool $isTitle -- wtf?
+ * @return string
+ * @todo this should get integrated somewhere sane
+ */
+ function convertHtml( $text, $isTitle = false ) {
+ return htmlspecialchars( $this->convert( $text, $isTitle ) );
+ }
+
+ function convertCategoryKey( $key ) {
+ return $this->mConverter->convertCategoryKey( $key );
+ }
+
+ /**
+ * get the list of variants supported by this langauge
+ * see sample implementation in LanguageZh.php
+ *
+ * @return array an array of language codes
+ */
+ function getVariants() {
+ return $this->mConverter->getVariants();
+ }
+
+
+ function getPreferredVariant() {
+ return $this->mConverter->getPreferredVariant();
+ }
+
+ /**
+ * if a language supports multiple variants, it is
+ * possible that non-existing link in one variant
+ * actually exists in another variant. this function
+ * tries to find it. See e.g. LanguageZh.php
+ *
+ * @param string $link the name of the link
+ * @param mixed $nt the title object of the link
+ * @return null the input parameters may be modified upon return
+ */
+ function findVariantLink( &$link, &$nt ) {
+ $this->mConverter->findVariantLink($link, $nt);
+ }
+
+ /**
+ * returns language specific options used by User::getPageRenderHash()
+ * for example, the preferred language variant
+ *
+ * @return string
+ * @public
+ */
+ function getExtraHashOptions() {
+ return $this->mConverter->getExtraHashOptions();
+ }
+
+ /**
+ * for languages that support multiple variants, the title of an
+ * article may be displayed differently in different variants. this
+ * function returns the apporiate title defined in the body of the article.
+ *
+ * @return string
+ */
+ function getParsedTitle() {
+ return $this->mConverter->getParsedTitle();
+ }
+
+ /**
+ * Enclose a string with the "no conversion" tag. This is used by
+ * various functions in the Parser
+ *
+ * @param string $text text to be tagged for no conversion
+ * @return string the tagged text
+ */
+ function markNoConversion( $text ) {
+ return $this->mConverter->markNoConversion( $text );
+ }
+
+ /**
+ * A regular expression to match legal word-trailing characters
+ * which should be merged onto a link of the form [[foo]]bar.
+ *
+ * @return string
+ * @public
+ */
+ function linkTrail() {
+ return $this->getMessage( 'linktrail' );
+ }
+
+ function getLangObj() {
+ return $this;
+ }
+
+ /**
+ * Get the RFC 3066 code for this language object
+ */
+ function getCode() {
+ return str_replace( '_', '-', strtolower( substr( get_class( $this ), 8 ) ) );
+ }
+
+
+}
+
+# FIXME: Merge all UTF-8 support code into Language base class.
+# We no longer support Latin-1 charset.
+require_once( 'LanguageUtf8.php' );
+
+# This should fail gracefully if there's not a localization available
+wfSuppressWarnings();
+// Preload base classes to work around APC/PHP5 bug
+include_once( 'Language' . str_replace( '-', '_', ucfirst( $wgLanguageCode ) ) . '.deps.php' );
+include_once( 'Language' . str_replace( '-', '_', ucfirst( $wgLanguageCode ) ) . '.php' );
+wfRestoreWarnings();
+
+}
+?>
diff --git a/languages/LanguageAb.deps.php b/languages/LanguageAb.deps.php
new file mode 100644
index 00000000..d9a31cdd
--- /dev/null
+++ b/languages/LanguageAb.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageAb.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageRu.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageAb.php b/languages/LanguageAb.php
new file mode 100644
index 00000000..d1d31b7a
--- /dev/null
+++ b/languages/LanguageAb.php
@@ -0,0 +1,30 @@
+<?php
+/** Abkhaz (Аҧсуа)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @author Ashar Voultoiz <hashar@altern.org>
+ *
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason, Ashar Voultoiz
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageRu.php';
+
+class LanguageAb extends LanguageRu {
+
+ function getFallbackLanguage() {
+ return 'ru';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageAf.php b/languages/LanguageAf.php
new file mode 100644
index 00000000..db04fae9
--- /dev/null
+++ b/languages/LanguageAf.php
@@ -0,0 +1,90 @@
+<?php
+/** Afrikaans (Afrikaans)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesAf.php');
+}
+
+class LanguageAf extends LanguageUtf8 {
+ private $mMessagesAf, $mNamespaceNamesAf = null;
+
+ private $mQuickbarSettingsAf = array(
+ "Geen.", "Links vas.", "Regs vas.", "Dryf links."
+ );
+
+ private $mSkinNamesAf = array(
+ 'standard' => "Standaard",
+ 'nostalgia' => "Nostalgie",
+ 'cologneblue' => "Keulen blou",
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesAf;
+ $this->mMessagesAf =& $wgAllMessagesAf;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesAf = array(
+ NS_MEDIA => "Media",
+ NS_SPECIAL => "Spesiaal",
+ NS_MAIN => "",
+ NS_TALK => "Bespreking",
+ NS_USER => "Gebruiker",
+ NS_USER_TALK => "Gebruikerbespreking",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace."bespreking",
+ NS_IMAGE => "Beeld",
+ NS_IMAGE_TALK => "Beeldbespreking",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWikibespreking",
+ NS_TEMPLATE => 'Sjabloon',
+ NS_TEMPLATE_TALK => 'Sjabloonbespreking',
+ NS_HELP => 'Hulp',
+ NS_HELP_TALK => 'Hulpbespreking',
+ NS_CATEGORY => 'Kategorie',
+ NS_CATEGORY_TALK => 'Kategoriebespreking'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesAf + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsAf;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesAf + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesAf[$key] ) ) {
+ return $this->mMessagesAf[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesAf;
+ }
+
+ # South Africa uses space for thousands and comma for decimal
+ # Reference: AWS Reël 7.4 p. 52, 2002 edition
+ # glibc is wrong in this respect in some versions
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageAn.php b/languages/LanguageAn.php
new file mode 100644
index 00000000..5ba31457
--- /dev/null
+++ b/languages/LanguageAn.php
@@ -0,0 +1,49 @@
+<?php
+/** Aragonese (Aragonés)
+*
+* @package MediaWiki
+* @subpackage Language
+*/
+
+require_once( "LanguageUtf8.php" );
+
+class LanguageAn extends LanguageUtf8 {
+ private $mNamespaceNamesAn = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesAn = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Espezial',
+ NS_MAIN => '',
+ NS_TALK => 'Descusión',
+ NS_USER => 'Usuario',
+ NS_USER_TALK => 'Descusión_usuario',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => "Descusión_{$wgMetaNamespace}",
+ NS_IMAGE => 'Imachen',
+ NS_IMAGE_TALK => 'Descusión_imachen',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Descusión_MediaWiki',
+ NS_TEMPLATE => 'Plantilla',
+ NS_TEMPLATE_TALK => 'Descusión_plantilla',
+ NS_HELP => 'Aduya',
+ NS_HELP_TALK => 'Descusión_aduya',
+ NS_CATEGORY => 'Categoría',
+ NS_CATEGORY_TALK => 'Descusión_categoría',
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesAn + parent::getNamespaces();
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageAr.php b/languages/LanguageAr.php
new file mode 100644
index 00000000..f56053d8
--- /dev/null
+++ b/languages/LanguageAr.php
@@ -0,0 +1,165 @@
+<?php
+/** Arabic (العربية)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+/** This is an UTF-8 language */
+require_once('LanguageUtf8.php');
+
+/* private */ $wgNamespaceNamesAr = array(
+ NS_MEDIA => 'ملف',
+ NS_SPECIAL => 'خاص',
+ NS_MAIN => '',
+ NS_TALK => 'نقاش',
+ NS_USER => 'مستخدم',
+ NS_USER_TALK => 'نقاش_المستخدم',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'نقاش' . '_' . $wgMetaNamespace,
+ NS_IMAGE => 'صورة',
+ NS_IMAGE_TALK => 'نقاش_الصورة',
+ NS_MEDIAWIKI => 'ميدياويكي',
+ NS_MEDIAWIKI_TALK => 'نقاش_ميدياويكي',
+ NS_TEMPLATE => 'قالب',
+ NS_TEMPLATE_TALK => 'نقاش_قالب',
+ NS_HELP => 'مساعدة',
+ NS_HELP_TALK => 'نقاش_المساعدة',
+ NS_CATEGORY => 'تصنيف',
+ NS_CATEGORY_TALK => 'نقاش_التصنيف'
+) + $wgNamespaceNamesEn;
+
+
+/* private */ $wgMagicWordsAr = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#REDIRECT' , '#تحويل' ),
+ MAG_NOTOC => array( 0, '__NOTOC__' , '__لافهرس__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__' , '__لصق_فهرس__' ),
+ MAG_TOC => array( 0, '__TOC__' , '__فهرس__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__' , '__لاتحريرقسم__' ),
+ MAG_START => array( 0, '__START__' , '__ابدأ__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH' , 'شهر' , 'شهر_حالي' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME' , 'اسم_شهر', 'اسم_شهر_حالي'),
+# MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN' ),
+# MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY' , 'يوم' ),
+# MAG_CURRENTDAY2 => array( 1, 'CURRENTDAY2' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME' , 'اسم_يوم' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR' , 'عام' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME' , 'وقت' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES' ,'عددالمقالات' , 'عدد_المقالات'),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES' , 'عددالملفات' , 'عدد_الملفات'),
+ MAG_PAGENAME => array( 1, 'PAGENAME' , 'اسم_صفحة' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE' , 'عنوان_صفحة' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE' , 'نطاق' ),
+ MAG_NAMESPACEE => array( 1, 'NAMESPACEE' , 'عنوان_نطاق' ),
+ MAG_FULLPAGENAME => array( 1, 'FULLPAGENAME', 'اسم_كامل' ),
+ MAG_FULLPAGENAMEE => array( 1, 'FULLPAGENAMEE' , 'عنوان_كامل' ),
+ MAG_MSG => array( 0, 'MSG:' , 'رسالة:' ),
+ MAG_SUBST => array( 0, 'SUBST:' , 'نسخ:' , 'نسخ_قالب:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:' , 'مصدر:' , 'مصدر_قالب:' ),
+ MAG_END => array( 0, '__END__' , '__نهاية__', '__إنهاء__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb' , 'تصغير' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1' ,'تصغير=$1' ),
+ MAG_IMG_RIGHT => array( 1, 'right' , 'يمين' ),
+ MAG_IMG_LEFT => array( 1, 'left' , 'يسار' ),
+ MAG_IMG_NONE => array( 1, 'none' , 'بدون' ),
+ MAG_IMG_WIDTH => array( 1, '$1px' , '$1بك' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre' , 'وسط' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame' , 'إطار', 'اطار'),
+ MAG_INT => array( 0, 'INT:' , 'محتوى:' ),
+ MAG_SITENAME => array( 1, 'SITENAME' , 'اسم_الموقع' ),
+ MAG_NS => array( 0, 'NS:' , 'نط:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:' , 'عنوان:' ),
+# MAG_LOCALURLE => array( 0, 'LOCALURLE:' ),
+ MAG_SERVER => array( 0, 'SERVER' , 'العنوان' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME' , 'اسم_عنوان' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH' , 'مسار' ),
+# MAG_GRAMMAR => array( 0, 'GRAMMAR:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__', 'لاتحويل_عنوان'),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', 'لاتحويل_محتوى' ),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK' , 'أسبوع' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW' , 'رقم_يوم' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID' , 'نسخة' ),
+# MAG_PLURAL => array( 0, 'PLURAL:' ),
+ MAG_FULLURL => array( 0, 'FULLURL:', 'عنوان_كامل:' ),
+# MAG_FULLURLE => array( 0, 'FULLURLE:' ),
+# MAG_LCFIRST => array( 0, 'LCFIRST:' ),
+# MAG_UCFIRST => array( 0, 'UCFIRST:' ),
+# MAG_LC => array( 0, 'LC:' ),
+# MAG_UC => array( 0, 'UC:' ),
+# MAG_RAW => array( 0, 'RAW:' ),
+);
+
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesAr.php');
+}
+
+class LanguageAr extends LanguageUtf8 {
+ function digitTransformTable() {
+ return array(
+ '0' => '٠',
+ '1' => '١',
+ '2' => '٢',
+ '3' => '٣',
+ '4' => '٤',
+ '5' => '٥',
+ '6' => '٦',
+ '7' => '٧',
+ '8' => '٨',
+ '9' => '٩',
+ '.' => '٫', // wrong table?
+ ',' => '٬'
+ );
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesAr;
+ return $wgNamespaceNamesAr;
+ }
+
+ function getMonthAbbreviation( $key ) {
+ /* No abbreviations in Arabic */
+ return $this->getMonthName( $key );
+ }
+
+ function isRTL() {
+ return true;
+ }
+
+ function linkPrefixExtension() {
+ return true;
+ }
+
+ function getDefaultUserOptions() {
+ $opt = parent::getDefaultUserOptions();
+
+ # Swap sidebar to right side by default
+ $opt['quickbar'] = 2;
+
+ # Underlines seriously harm legibility. Force off:
+ $opt['underline'] = 0;
+ return $opt ;
+ }
+
+ function fallback8bitEncoding() {
+ return 'windows-1256';
+ }
+
+ function getMagicWords() {
+ global $wgMagicWordsAr;
+ return $wgMagicWordsAr;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesAr;
+ if( isset( $wgAllMessagesAr[$key] ) ) {
+ return $wgAllMessagesAr[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+}
+?>
diff --git a/languages/LanguageArc.php b/languages/LanguageArc.php
new file mode 100644
index 00000000..2446e348
--- /dev/null
+++ b/languages/LanguageArc.php
@@ -0,0 +1,22 @@
+<?php
+/** Aramaic ( ܕܥܒܪܸܝܛ )
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageArc extends LanguageUtf8 {
+
+ function getAllMessages() {
+ return null;
+ }
+
+ function isRTL() {
+ return true;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageAs.php b/languages/LanguageAs.php
new file mode 100644
index 00000000..3d977aba
--- /dev/null
+++ b/languages/LanguageAs.php
@@ -0,0 +1,27 @@
+<?php
+/** Assamese (অসমীয়া)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageAs extends LanguageUtf8 {
+ function digitTransformTable() {
+ return array(
+ '0' => '০',
+ '1' => '১',
+ '2' => '২',
+ '3' => '৩',
+ '4' => '৪',
+ '5' => '৫',
+ '6' => '৬',
+ '7' => '৭',
+ '8' => '৮',
+ '9' => '৯'
+ );
+ }
+
+}
+?>
diff --git a/languages/LanguageAst.php b/languages/LanguageAst.php
new file mode 100644
index 00000000..698dd26f
--- /dev/null
+++ b/languages/LanguageAst.php
@@ -0,0 +1,49 @@
+<?php
+/** Asturian (Asturianu)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageAst extends LanguageUtf8 {
+ private $mNamespaceNamesAst = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesAst = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Especial',
+ NS_MAIN => '',
+ NS_TALK => 'Discusión',
+ NS_USER => 'Usuariu',
+ NS_USER_TALK => 'Usuariu_discusión',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_discusión',
+ NS_IMAGE => 'Imaxen',
+ NS_IMAGE_TALK => 'Imaxen_discusión',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_discusión',
+ NS_TEMPLATE => 'Plantilla',
+ NS_TEMPLATE_TALK => 'Plantilla_discusión',
+ NS_HELP => 'Ayuda',
+ NS_HELP_TALK => 'Ayuda_discusión',
+ NS_CATEGORY => 'Categoría',
+ NS_CATEGORY_TALK => 'Categoría_discusión',
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesAst + parent::getNamespaces();
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageAv.deps.php b/languages/LanguageAv.deps.php
new file mode 100644
index 00000000..217e9582
--- /dev/null
+++ b/languages/LanguageAv.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageAv.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageRu.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageAv.php b/languages/LanguageAv.php
new file mode 100644
index 00000000..cc3096b4
--- /dev/null
+++ b/languages/LanguageAv.php
@@ -0,0 +1,30 @@
+<?php
+/** Avar (Авар)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @author Ashar Voultoiz <hashar@altern.org>
+ *
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason, Ashar Voultoiz
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageRu.php';
+
+class LanguageAv extends LanguageRu {
+
+ function getFallbackLanguage() {
+ return 'ru';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageAy.deps.php b/languages/LanguageAy.deps.php
new file mode 100644
index 00000000..db7eead6
--- /dev/null
+++ b/languages/LanguageAy.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageAy.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageEs.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageAy.php b/languages/LanguageAy.php
new file mode 100644
index 00000000..309c5c84
--- /dev/null
+++ b/languages/LanguageAy.php
@@ -0,0 +1,28 @@
+<?php
+/** Aymara (Aymar aru)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageEs.php';
+
+class LanguageAy extends LanguageEs {
+
+ function getFallbackLanguage() {
+ return 'es';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageAz.php b/languages/LanguageAz.php
new file mode 100644
index 00000000..1dfc46ca
--- /dev/null
+++ b/languages/LanguageAz.php
@@ -0,0 +1,87 @@
+<?php
+/** Azerbaijani (Azərbaycan)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesAz.php');
+}
+
+class LanguageAz extends LanguageUtf8 {
+ private $mMessagesAz, $mNamespaceNamesAz = null;
+
+ private $mDateFormatsAz = array(
+ MW_DATE_DEFAULT => 'Tərcih yox',
+ MW_DATE_MDY => '16:12, Yanvar 15, 2001',
+ MW_DATE_DMY => '16:12, 15 Yanvar 2001',
+ MW_DATE_YMD => '16:12, 2001 Yanvar 15',
+ MW_DATE_ISO => '2001-01-15 16:12:34'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesAz;
+ $this->mMessagesAz =& $wgAllMessagesAz;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesAz = array(
+ NS_MEDIA => 'Mediya',
+ NS_SPECIAL => 'Xüsusi',
+ NS_MAIN => '',
+ NS_TALK => 'Müzakirə',
+ NS_USER => 'İstifadəçi',
+ NS_USER_TALK => 'İstifadəçi_müzakirəsi',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_müzakirəsi',
+ NS_IMAGE => 'Şəkil',
+ NS_IMAGE_TALK => 'Şəkil_müzakirəsi',
+ NS_MEDIAWIKI => 'MediyaViki',
+ NS_MEDIAWIKI_TALK => 'MediyaViki_müzakirəsi',
+ NS_TEMPLATE => 'Şablon',
+ NS_TEMPLATE_TALK => 'Şablon_müzakirəsi',
+ NS_HELP => 'Kömək',
+ NS_HELP_TALK => 'Kömək_müzakirəsi',
+ NS_CATEGORY => 'Kateqoriya',
+ NS_CATEGORY_TALK => 'Kateqoriya_müzakirəsi',
+ );
+
+ }
+ function getNamespaces() {
+ return $this->mNamespaceNamesAz + parent::getNamespaces();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsAz;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesAz[$key] ) ) {
+ return $this->mMessagesAz[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesAz;
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function ucfirst ( $string ) {
+ if ( $string[0] == 'i' ) {
+ return 'İ' . substr( $string, 1 );
+ } else {
+ return parent::ucfirst( $string );
+ }
+ }
+
+}
+?>
diff --git a/languages/LanguageBa.deps.php b/languages/LanguageBa.deps.php
new file mode 100644
index 00000000..aa902431
--- /dev/null
+++ b/languages/LanguageBa.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageBa.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageRu.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageBa.php b/languages/LanguageBa.php
new file mode 100644
index 00000000..45e32b74
--- /dev/null
+++ b/languages/LanguageBa.php
@@ -0,0 +1,30 @@
+<?php
+/** Bashkir (Башҡорт)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @author Ashar Voultoiz <hashar@altern.org>
+ *
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason, Ashar Voultoiz
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageRu.php';
+
+class LanguageBa extends LanguageRu {
+
+ function getFallbackLanguage() {
+ return 'ru';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageBat_smg.deps.php b/languages/LanguageBat_smg.deps.php
new file mode 100644
index 00000000..53a8cbf5
--- /dev/null
+++ b/languages/LanguageBat_smg.deps.php
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * Samogitian dependencies file
+ * See http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+ */
+
+require_once( 'LanguageLt.php' );
+
+?> \ No newline at end of file
diff --git a/languages/LanguageBat_smg.php b/languages/LanguageBat_smg.php
new file mode 100644
index 00000000..aa6c5417
--- /dev/null
+++ b/languages/LanguageBat_smg.php
@@ -0,0 +1,26 @@
+<?php
+/** Samogitian (Žemaitėška)
+ *
+ * Inherits Lithuanian
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Rob Church <robchur@gmail.com>
+ */
+
+require_once( 'LanguageLt.php' );
+
+class LanguageBat_smg extends LanguageLt {
+
+ function getFallbackLanguage() {
+ return 'lt';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/languages/LanguageBe.php b/languages/LanguageBe.php
new file mode 100644
index 00000000..e55b1e7a
--- /dev/null
+++ b/languages/LanguageBe.php
@@ -0,0 +1,277 @@
+<?php
+/** Belarusian (Беларуская мова)
+ *
+ * @package MediaWiki
+ * @subpackage 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
+ */
+
+require_once('LanguageUtf8.php');
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesBe.php');
+}
+
+class LanguageBe extends LanguageUtf8 {
+ private $mMessagesBe, $mNamespaceNamesBe = null;
+
+ private $mQuickbarSettingsBe = array(
+ 'Не паказваць', 'Замацаваная зьлева', 'Замацаваная справа', 'Рухомая зьлева'
+ );
+
+ private $mSkinNamesBe = array(
+ 'standard' => 'Клясычны',
+ 'nostalgia' => 'Настальгія',
+ 'cologneblue' => 'Кёльнскі смутак',
+ 'davinci' => 'Да Вінчы',
+ 'mono' => 'Мона',
+ 'monobook' => 'Монакніга',
+ 'myskin' => 'MySkin',
+ 'chick' => 'Цыпа'
+ );
+
+ private $mDateFormatsBe = array(
+ MW_DATE_DEFAULT,
+ '16:12, 15.01.2001',
+ MW_DATE_ISO,
+ );
+
+ private $mMagicWordsBe = array(
+ MAG_REDIRECT => array( 0, '#перанакіраваньне', '#redirect' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__БЯЗЬ_ЗЬМЕСТУ__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__ЗЬМЕСТ_ПРЫМУСАМ__' ),
+ MAG_TOC => array( 0, '__TOC__', '__ЗЬМЕСТ__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__БЕЗ_РЭДАГАВАНЬНЯ_СЭКЦЫІ__' ),
+ MAG_START => array( 0, '__START__', '__ПАЧАТАК__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'БЯГУЧЫ_МЕСЯЦ' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'НАЗВА_БЯГУЧАГА_МЕСЯЦА' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'НАЗВА_БЯГУЧАГА_МЕСЯЦА_Ў_РОДНЫМ_СКЛОНЕ' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'СКАРОЧАНАЯ_НАЗВА_БЯГУЧАГА_МЕСЯЦА' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'БЯГУЧЫ_ДЗЕНЬ' ),
+ MAG_CURRENTDAY2 => array( 1, 'CURRENTDAY2', 'БЯГУЧЫ_ДЗЕНЬ_2' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'НАЗВА_БЯГУЧАГА_ДНЯ' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'БЯГУЧЫ_ГОД' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'БЯГУЧЫ_ЧАС' ),
+ MAG_NUMBEROFPAGES => array( 1, 'NUMBEROFPAGES', 'КОЛЬКАСЬЦЬ_СТАРОНАК' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'КОЛЬКАСЬЦЬ_АРТЫКУЛАЎ' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES', 'КОЛЬКАСЬЦЬ_ФАЙЛАЎ' ),
+ MAG_NUMBEROFUSERS => array( 1, 'NUMBEROFUSERS', 'КОЛЬКАСЬЦЬ_УДЗЕЛЬНІКАЎ' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'НАЗВА_СТАРОНКІ' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'НАЗВА_СТАРОНКІ_2' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'ПРАСТОРА_НАЗВАЎ' ),
+ MAG_NAMESPACEE => array( 1, 'NAMESPACEE', 'ПРАСТОРА_НАЗВАЎ_2' ),
+ MAG_TALKSPACE => array( 1, 'TALKSPACE', 'ПРАСТОРА_НАЗВАЎ_АБМЕРКАВАНЬНЯ' ),
+ MAG_TALKSPACEE => array( 1, 'TALKSPACEE', 'ПРАСТОРА_НАЗВАЎ_АБМЕРКАВАНЬНЯ_2' ),
+ MAG_SUBJECTSPACE => array( 1, 'SUBJECTSPACE', 'ARTICLESPACE', 'ПРАСТОРА_НАЗВАЎ_ПРАДМЕТУ', 'ПРАСТОРА_НАЗВАЎ_АРТЫКУЛА' ),
+ MAG_SUBJECTSPACEE => array( 1, 'SUBJECTSPACEE', 'ARTICLESPACEE', 'ПРАСТОРА_НАЗВАЎ_ПРАДМЕТУ_2', 'ПРАСТОРА_НАЗВАЎ_АРТЫКУЛА_2' ),
+ MAG_FULLPAGENAME => array( 1, 'FULLPAGENAME', 'ПОЎНАЯ_НАЗВА_СТАРОНКІ' ),
+ MAG_FULLPAGENAMEE => array( 1, 'FULLPAGENAMEE', 'ПОЎНАЯ_НАЗВА_СТАРОНКІ_2' ),
+ MAG_SUBPAGENAME => array( 1, 'SUBPAGENAME', 'НАЗВА_ПАДСТАРОНКІ' ),
+ MAG_SUBPAGENAMEE => array( 1, 'SUBPAGENAMEE', 'НАЗВА_ПАДСТАРОНКІ_2' ),
+ MAG_BASEPAGENAME => array( 1, 'BASEPAGENAME', 'НАЗВА_БАЗАВАЙ_СТАРОНКІ' ),
+ MAG_BASEPAGENAMEE => array( 1, 'BASEPAGENAMEE', 'НАЗВА_БАЗАВАЙ_СТАРОНКІ_2' ),
+ MAG_TALKPAGENAME => array( 1, 'TALKPAGENAME', 'НАЗВА_СТАРОНКІ_АБМЕРКАВАНЬНЯ' ),
+ MAG_TALKPAGENAMEE => array( 1, 'TALKPAGENAMEE', 'НАЗВА_СТАРОНКІ_АБМЕРКАВАНЬНЯ_2' ),
+ MAG_SUBJECTPAGENAME => array( 1, 'SUBJECTPAGENAME', 'ARTICLEPAGENAME', 'НАЗВА_СТАРОНКІ_ПРАДМЕТУ', 'НАЗВА_СТАРОНКІ_АРТЫКУЛА' ),
+ MAG_SUBJECTPAGENAMEE => array( 1, 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE', 'НАЗВА_СТАРОНКІ_ПРАДМЕТУ_2', 'НАЗВА_СТАРОНКІ_АРТЫКУЛА_2' ),
+ MAG_MSG => array( 0, 'MSG:', 'ПАВЕДАМЛЕНЬНЕ:' ),
+ MAG_SUBST => array( 0, 'SUBST:', 'ПАДСТАНОЎКА:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'ПАВЕДАМЛЕНЬНЕ_БЯЗЬ_ВІКІ:' ),
+ MAG_END => array( 0, '__END__', '__КАНЕЦ__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'значак', 'міні' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1', 'значак=$1', 'міні=$1' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'справа' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'зьлева' ),
+ MAG_IMG_NONE => array( 1, 'none', 'няма' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1пкс' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'цэнтар' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'рамка' ),
+ MAG_INT => array( 0, 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'НАЗВА_САЙТУ' ),
+ MAG_NS => array( 0, 'NS:', 'ПН:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'ЛЯКАЛЬНЫ_АДРАС:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'ЛЯКАЛЬНЫ_АДРАС_2:' ),
+ MAG_SERVER => array( 0, 'SERVER', 'СЭРВЭР' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME', 'НАЗВА_СЭРВЭРА' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH', 'ШЛЯХ_ДА_СКРЫПТА' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'ГРАМАТЫКА:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__БЕЗ_КАНВЭРТАЦЫІ_НАЗВЫ__' ),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__БЕЗ_КАНВЭРТАЦЫІ_ТЭКСТУ__' ),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK', 'БЯГУЧЫ_ТЫДЗЕНЬ' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW', 'БЯГУЧЫ_ДЗЕНЬ_ТЫДНЯ' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID', 'ID_ВЭРСІІ' ),
+ MAG_PLURAL => array( 0, 'PLURAL:', 'МНОЖНЫ_ЛІК:'),
+ MAG_FULLURL => array( 0, 'FULLURL:', 'ПОЎНЫ_АДРАС:' ),
+ MAG_FULLURLE => array( 0, 'FULLURLE:', 'ПОЎНЫ_АДРАС_2:' ),
+ MAG_LCFIRST => array( 0, 'LCFIRST:', 'ПЕРШАЯ_ЛІТАРА_МАЛАЯ:' ),
+ MAG_UCFIRST => array( 0, 'UCFIRST:', 'ПЕРШАЯ_ЛІТАРА_ВЯЛІКАЯ:' ),
+ MAG_LC => array( 0, 'LC:', 'МАЛЫМІ_ЛІТАРАМІ:' ),
+ MAG_UC => array( 0, 'UC:', 'ВЯЛІКІМІ_ЛІТАРАМІ:' ),
+ MAG_RAW => array( 0, 'RAW:', 'НЕАПРАЦАВАНЫ' ),
+ MAG_DISPLAYTITLE => array( 1, 'DISPLAYTITLE', 'АДЛЮСТРАВАНАЯ_НАЗВА' ),
+ MAG_RAWSUFFIX => array( 1, 'R', 'Н' ),
+ MAG_NEWSECTIONLINK => array( 1, '__NEWSECTIONLINK__', '__СПАСЫЛКА_НА_НОВУЮ_СЭКЦЫЮ__' ),
+ MAG_CURRENTVERSION => array( 1, 'CURRENTVERSION', 'БЯГУЧАЯ_ВЭРСІЯ' ),
+ MAG_URLENCODE => array( 0, 'URLENCODE:' ),
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesBe;
+ $this->mMessagesBe =& $wgAllMessagesBe;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesBe = array(
+ NS_MEDIA => 'Мэдыя',
+ NS_SPECIAL => 'Спэцыяльныя',
+ NS_MAIN => '',
+ NS_TALK => 'Абмеркаваньне',
+ NS_USER => 'Удзельнік',
+ NS_USER_TALK => 'Гутаркі_ўдзельніка',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Абмеркаваньне_' . $wgMetaNamespace,
+ NS_IMAGE => 'Выява',
+ NS_IMAGE_TALK => 'Абмеркаваньне_выявы',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Абмеркаваньне_MediaWiki',
+ NS_TEMPLATE => 'Шаблён',
+ NS_TEMPLATE_TALK => 'Абмеркаваньне_шаблёну',
+ NS_HELP => 'Дапамога',
+ NS_HELP_TALK => 'Абмеркаваньне_дапамогі',
+ NS_CATEGORY => 'Катэгорыя',
+ NS_CATEGORY_TALK => 'Абмеркаваньне_катэгорыі'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesBe + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsBe;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesBe + parent::getSkinNames();
+ }
+
+ function &getMagicWords() {
+ $t = $this->mMagicWordsBe + parent::getMagicWords();
+ return $t;
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsBe;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesBe[$key] ) ) {
+ return $this->mMessagesBe[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesBe;
+ }
+
+ // The date and time format
+ function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+ $datePreference = $this->dateFormat( $format );
+ if( $datePreference == MW_DATE_ISO ) {
+ return parent::date( $ts, $adj, $datePreference, $timecorrection );
+ } else {
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); } # Adjust based on the timezone setting.
+ // 20050310001506 => 10.03.2005
+ $date = (substr( $ts, 6, 2 )) . '.' . substr( $ts, 4, 2 ) . '.' . substr( $ts, 0, 4 );
+ return $date;
+ }
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ $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/LanguageBg.php b/languages/LanguageBg.php
new file mode 100644
index 00000000..da600989
--- /dev/null
+++ b/languages/LanguageBg.php
@@ -0,0 +1,193 @@
+<?php
+/** Bulgarian (Български)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+/* private */ $wgNamespaceNamesBg = array(
+ NS_MEDIA => 'Медия',
+ NS_SPECIAL => 'Специални',
+ NS_MAIN => '',
+ NS_TALK => 'Беседа',
+ NS_USER => 'Потребител',
+ NS_USER_TALK => 'Потребител_беседа',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_беседа',
+ NS_IMAGE => 'Картинка',
+ NS_IMAGE_TALK => 'Картинка_беседа',
+ NS_MEDIAWIKI => 'МедияУики',
+ NS_MEDIAWIKI_TALK => 'МедияУики_беседа',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Шаблон_беседа',
+ NS_HELP => 'Помощ',
+ NS_HELP_TALK => 'Помощ_беседа',
+ NS_CATEGORY => 'Категория',
+ NS_CATEGORY_TALK => 'Категория_беседа'
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsBg = array(
+ 'Без меню', 'Неподвижно вляво', 'Неподвижно вдясно', 'Плаващо вляво', 'Плаващо вдясно'
+);
+
+/* private */ $wgSkinNamesBg = array(
+ 'standard' => 'Класика',
+ 'nostalgia' => 'Носталгия',
+ 'cologneblue' => 'Кьолнско синьо',
+ 'smarty' => 'Падингтън',
+ 'montparnasse' => 'Монпарнас',
+ 'davinci' => 'ДаВинчи',
+ 'mono' => 'Моно',
+ 'monobook' => 'Монобук',
+ 'myskin' => 'Мой облик',
+);
+
+/* private */ $wgDateFormatsBg = array();
+
+/* private */ $wgBookstoreListBg = array(
+ 'books.bg' => 'http://www.books.bg/ISBN/$1',
+);
+
+/* private */ $wgMagicWordsBg = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#redirect', '#пренасочване', '#виж' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__БЕЗСЪДЪРЖАНИЕ__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__СЪССЪДЪРЖАНИЕ__' ),
+ MAG_TOC => array( 0, '__TOC__', '__СЪДЪРЖАНИЕ__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__БЕЗ_РЕДАКТИРАНЕ_НА_РАЗДЕЛИ__' ),
+ MAG_START => array( 0, '__START__', '__НАЧАЛО__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'ТЕКУЩМЕСЕЦ' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'ТЕКУЩМЕСЕЦИМЕ' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'ТЕКУЩМЕСЕЦИМЕРОД' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'ТЕКУЩМЕСЕЦСЪКР' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'ТЕКУЩДЕН' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'ТЕКУЩДЕНИМЕ' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'ТЕКУЩАГОДИНА' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'ТЕКУЩОВРЕМЕ' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'БРОЙСТАТИИ' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES', 'БРОЙФАЙЛОВЕ' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'СТРАНИЦА' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'СТРАНИЦАИ' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'ИМЕННОПРОСТРАНСТВО' ),
+ MAG_SUBST => array( 0, 'SUBST:', 'ЗАМЕСТ:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'СЪОБЩNW:' ),
+ MAG_END => array( 0, '__END__', '__КРАЙ__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'мини' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1', 'мини=$1'),
+ MAG_IMG_RIGHT => array( 1, 'right', 'вдясно', 'дясно', 'д' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'вляво', 'ляво', 'л' ),
+ MAG_IMG_NONE => array( 1, 'none', 'н' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1пкс' , '$1п' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'център', 'центр', 'ц' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'рамка', 'врамка' ),
+ MAG_INT => array( 0, 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'ИМЕНАСАЙТА' ),
+ MAG_NS => array( 0, 'NS:', 'ИП:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'ЛОКАЛЕНАДРЕС:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'ЛОКАЛЕНАДРЕСИ:' ),
+ MAG_SERVER => array( 0, 'SERVER', 'СЪРВЪР' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME', 'ИМЕНАСЪРВЪРА' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH', 'ПЪТДОСКРИПТА' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'ГРАМАТИКА:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__'),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__'),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK', 'ТЕКУЩАСЕДМИЦА'),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID' ),
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesBg.php');
+}
+
+/** This is an UTF-8 language */
+require_once( 'LanguageUtf8.php' );
+
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+class LanguageBg extends LanguageUtf8 {
+
+ /**
+ * Exports $wgBookstoreListBg
+ * @return array
+ */
+ function getBookstoreList () {
+ global $wgBookstoreListBg;
+ return $wgBookstoreListBg;
+ }
+
+ /**
+ * Exports $wgNamespaceNamesBg
+ * @return array
+ */
+ function getNamespaces() {
+ global $wgNamespaceNamesBg;
+ return $wgNamespaceNamesBg;
+ }
+
+ /**
+ * Exports $wgQuickbarSettingsBg
+ * @return array
+ */
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsBg;
+ return $wgQuickbarSettingsBg;
+ }
+
+ /**
+ * Exports $wgSkinNamesBg
+ * @return array
+ */
+ function getSkinNames() {
+ global $wgSkinNamesBg;
+ return $wgSkinNamesBg;
+ }
+
+ /**
+ * Exports $wgDateFormatsBg
+ * @return array
+ */
+ function getDateFormats() {
+ global $wgDateFormatsBg;
+ return $wgDateFormatsBg;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesBg;
+ if ( isset( $wgAllMessagesBg[$key] ) ) {
+ return $wgAllMessagesBg[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ /**
+ * Exports $wgMagicWordsBg
+ * @return array
+ */
+ function getMagicWords() {
+ global $wgMagicWordsBg;
+ return $wgMagicWordsBg;
+ }
+
+
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+ /**
+ * ISO number formatting: 123 456 789,99.
+ * Avoid tripple grouping by numbers with whole part up to 4 digits.
+ */
+ 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/LanguageBm.deps.php b/languages/LanguageBm.deps.php
new file mode 100644
index 00000000..86ea46b0
--- /dev/null
+++ b/languages/LanguageBm.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageBm.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageFr.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageBm.php b/languages/LanguageBm.php
new file mode 100644
index 00000000..09a016f4
--- /dev/null
+++ b/languages/LanguageBm.php
@@ -0,0 +1,24 @@
+<?php
+/** Bambara (Bamanankan)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+# Stub for Bambara; import French (official language of Mali)
+
+require_once( 'LanguageFr.php' );
+
+class LanguageBm extends LanguageFr {
+
+ function getFallbackLanguage() {
+ return 'fr';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageBn.php b/languages/LanguageBn.php
new file mode 100644
index 00000000..d61c995e
--- /dev/null
+++ b/languages/LanguageBn.php
@@ -0,0 +1,75 @@
+<?php
+/** Bengali (বাংলা)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesBn.php');
+}
+
+class LanguageBn extends LanguageUtf8 {
+ private $mMessagesBn, $mNamespaceNamesBn = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesBn;
+ $this->mMessagesBn =& $wgAllMessagesBn;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesBn = array(
+ NS_SPECIAL => 'বিশেষ',
+ NS_MAIN => '',
+ NS_TALK => 'আলাপ',
+ NS_USER => 'ব্যবহারকারী',
+ NS_USER_TALK => 'ব্যবহারকারী_আলাপ',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_আলাপ',
+ NS_IMAGE => 'চিত্র',
+ NS_IMAGE_TALK => 'চিত্র_আলাপ',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_আলাপ'
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesBn + parent::getNamespaces();
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesBn[$key] ) ) {
+ return $this->mMessagesBn[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesBn;
+ }
+
+ function digitTransformTable() {
+ return array(
+ '0' => '০',
+ '1' => '১',
+ '2' => '২',
+ '3' => '৩',
+ '4' => '৪',
+ '5' => '৫',
+ '6' => '৬',
+ '7' => '৭',
+ '8' => '৮',
+ '9' => '৯'
+ );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageBo.php b/languages/LanguageBo.php
new file mode 100644
index 00000000..2157083a
--- /dev/null
+++ b/languages/LanguageBo.php
@@ -0,0 +1,35 @@
+<?php
+/** Tibetan (བོད་ཡིག)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageBo extends LanguageUtf8 {
+
+ function getAllMessages() {
+ return null;
+ }
+
+ function digitTransformTable() {
+ return array(
+ '0' => '༠',
+ '1' => '༡',
+ '2' => '༢',
+ '3' => '༣',
+ '4' => '༤',
+ '5' => '༥',
+ '6' => '༦',
+ '7' => '༧',
+ '8' => '༨',
+ '9' => '༩'
+ );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageBr.php b/languages/LanguageBr.php
new file mode 100644
index 00000000..30939866
--- /dev/null
+++ b/languages/LanguageBr.php
@@ -0,0 +1,126 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+/* private */ $wgNamespaceNamesBr = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Dibar',
+ NS_MAIN => '',
+ NS_TALK => 'Kaozeal',
+ NS_USER => 'Implijer',
+ NS_USER_TALK => 'Kaozeadenn_Implijer',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Kaozeadenn_'.$wgMetaNamespace,
+ NS_IMAGE => 'Skeudenn',
+ NS_IMAGE_TALK => 'Kaozeadenn_Skeudenn',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Kaozeadenn_MediaWiki',
+ NS_TEMPLATE => 'Patrom',
+ NS_TEMPLATE_TALK => 'Kaozeadenn_Patrom',
+ NS_HELP => 'Skoazell',
+ NS_HELP_TALK => 'Kaozeadenn_Skoazell',
+ NS_CATEGORY => 'Rummad',
+ NS_CATEGORY_TALK => 'Kaozeadenn_Rummad'
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsBr = array(
+ 'Hini ebet', 'Kleiz', 'Dehou', 'War-neuñv a-gleiz'
+);
+
+/* private */ $wgSkinNamesBr = array(
+ 'standard' => 'Standard',
+ 'nostalgia' => 'Melkoni',
+ 'cologneblue' => 'Glaz Kologn',
+ 'smarty' => 'Paddington',
+ 'montparnasse' => 'Montparnasse',
+ 'davinci' => 'DaVinci',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ 'myskin' => 'MySkin'
+);
+
+
+
+/* private */ $wgBookstoreListBr = array(
+ 'Amazon.fr' => 'http://www.amazon.fr/exec/obidos/ISBN=$1',
+ 'alapage.fr' => 'http://www.alapage.com/mx/?tp=F&type=101&l_isbn=$1&donnee_appel=ALASQ&devise=&',
+ 'fnac.com' => 'http://www3.fnac.com/advanced/book.do?isbn=$1',
+ 'chapitre.com' => 'http://www.chapitre.com/frame_rec.asp?isbn=$1',
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesBr.php');
+}
+
+class LanguageBr extends LanguageUtf8 {
+
+ function getBookstoreList () {
+ global $wgBookstoreListBr ;
+ return $wgBookstoreListBr ;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesBr;
+ return $wgNamespaceNamesBr;
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getNsIndex( $text ) {
+ global $wgNamespaceNamesBr, $wgSitename;
+
+ foreach ( $wgNamespaceNamesBr as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ if( $wgSitename == "Wikipedia" ) {
+ if( 0 == strcasecmp( "Discussion_Wikipedia", $text ) ) return 5;
+ }
+ return false;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsBr;
+ return $wgQuickbarSettingsBr;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesBr;
+ return $wgSkinNamesBr;
+ }
+
+
+ function date( $ts, $adj = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+
+ $d = (0 + substr( $ts, 6, 2 )) . " " .
+ $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) .
+ " " . substr( $ts, 0, 4 );
+ return $d;
+ }
+
+ function timeanddate( $ts, $adj = false ) {
+ return $this->date( $ts, $adj ) . " da " . $this->time( $ts, $adj );
+ }
+
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesBr, $wgAllMessagesEn;
+ if( isset( $wgAllMessagesBr[$key] ) ) {
+ return $wgAllMessagesBr[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+}
+
+?>
diff --git a/languages/LanguageBs.php b/languages/LanguageBs.php
new file mode 100644
index 00000000..21dadc89
--- /dev/null
+++ b/languages/LanguageBs.php
@@ -0,0 +1,294 @@
+<?php
+/** Bosnian (bosanski)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesBs.php');
+}
+
+class LanguageBs extends LanguageUtf8 {
+ private $mMessagesBs, $mNamespaceNamesBs = null;
+
+ private $mQuickbarSettingsBs = array(
+ 'Nikakva', 'Pričvršćena lijevo', 'Pričvršćena desno', 'Plutajuća lijevo'
+ );
+
+ private $mSkinNamesBs = array(
+ 'Obična', 'Nostalgija', 'Kelnsko plavo', 'Pedington', 'Monparnas'
+ );
+
+ private $mDateFormatsBs = array(
+ 'Nije bitno',
+ '06:12, 5. januar 2001.',
+ '06:12, 5 januar 2001',
+ '06:12, 05.01.2001.',
+ '06:12, 5.1.2001.',
+ '06:12, 5. jan 2001.',
+ '06:12, 5 jan 2001',
+ '6:12, 5. januar 2001.',
+ '6:12, 5 januar 2001',
+ '6:12, 05.01.2001.',
+ '6:12, 5.1.2001.',
+ '6:12, 5. jan 2001.',
+ '6:12, 5 jan 2001',
+ );
+
+ private $mMagicWordsBs = array(
+ # ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#Preusmjeri', '#redirect', '#preusmjeri', '#PREUSMJERI' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__BEZSADRŽAJA__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__FORSIRANISADRŽAJ__' ),
+ MAG_TOC => array( 0, '__TOC__', '__SADRŽAJ__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__BEZ_IZMENA__', '__BEZIZMENA__' ),
+ MAG_START => array( 0, '__START__', '__POČETAK__' ),
+ MAG_END => array( 0, '__END__', '__KRAJ__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'TRENUTNIMJESEC' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'TRENUTNIMJESECIME' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'TRENUTNIMJESECROD' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'TRENUTNIMJESECSKR' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'TRENUTNIDAN' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'TRENUTNIDANIME' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'TRENUTNAGODINA' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'TRENUTNOVRIJEME' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'BROJČLANAKA' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES', 'BROJDATOTEKA', 'BROJFAJLOVA' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'STRANICA' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'STRANICE' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'IMENSKIPROSTOR' ),
+ MAG_NAMESPACEE => array( 1, 'NAMESPACEE', 'IMENSKIPROSTORI' ),
+ MAG_FULLPAGENAME => array( 1, 'FULLPAGENAME', 'PUNOIMESTRANE' ),
+ MAG_FULLPAGENAMEE => array( 1, 'FULLPAGENAMEE', 'PUNOIMESTRANEE' ),
+ MAG_MSG => array( 0, 'MSG:', 'POR:' ),
+ MAG_SUBST => array( 0, 'SUBST:', 'ZAMJENI:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'NVPOR:' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'mini' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1', 'mini=$1' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'desno', 'd' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'lijevo', 'l' ),
+ MAG_IMG_NONE => array( 1, 'none', 'n', 'bez' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1piksel' , '$1p' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'centar', 'c' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'okvir', 'ram' ),
+ MAG_INT => array( 0, 'INT:', 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'IMESAJTA' ),
+ MAG_NS => array( 0, 'NS:', 'IP:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'LOKALNAADRESA:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'LOKALNEADRESE:' ),
+ MAG_SERVER => array( 0, 'SERVER', 'SERVER' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME', 'IMESERVERA' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH', 'SKRIPTA' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'GRAMATIKA:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__BEZTC__' ),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__BEZCC__' ),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK', 'TRENUTNASEDMICA' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW', 'TRENUTNIDOV' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID', 'IDREVIZIJE' ),
+ MAG_PLURAL => array( 0, 'PLURAL:', 'MNOŽINA:' ),
+ MAG_FULLURL => array( 0, 'FULLURL:', 'PUNURL:' ),
+ MAG_FULLURLE => array( 0, 'FULLURLE:', 'PUNURLE:' ),
+ MAG_LCFIRST => array( 0, 'LCFIRST:', 'LCPRVI:' ),
+ MAG_UCFIRST => array( 0, 'UCFIRST:', 'UCPRVI:' ),
+ MAG_LC => array( 0, 'LC:', 'LC:' ),
+ MAG_UC => array( 0, 'UC:', 'UC:' ),
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesBs;
+ $this->mMessagesBs =& $wgAllMessagesBs;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesBs = array(
+ NS_MEDIA => 'Medija',
+ NS_SPECIAL => 'Posebno',
+ NS_MAIN => '',
+ NS_TALK => 'Razgovor',
+ NS_USER => 'Korisnik',
+ NS_USER_TALK => 'Razgovor_sa_korisnikom',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Razgovor_' . str_replace( ' ', '_',
+ $this->convertGrammar( $wgMetaNamespace, 'instrumental' ) ),
+ NS_IMAGE => 'Slika',
+ NS_IMAGE_TALK => 'Razgovor_o_slici',
+ NS_MEDIAWIKI => 'MedijaViki',
+ NS_MEDIAWIKI_TALK => 'Razgovor_o_MedijaVikiju',
+ NS_TEMPLATE => 'Šablon',
+ NS_TEMPLATE_TALK => 'Razgovor_o_šablonu',
+ NS_HELP => 'Pomoć',
+ NS_HELP_TALK => 'Razgovor_o_pomoći',
+ NS_CATEGORY => 'Kategorija',
+ NS_CATEGORY_TALK => 'Razgovor_o_kategoriji',
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesBs + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsBs;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesBs + parent::getSkinNames();
+ }
+
+ // Not implemented ??
+/* function getDateFormats() {
+ return $this->mDateFormatsBs;
+ }*/
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesBs[$key] ) ) {
+ return $this->mMessagesBs[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesBs;
+ }
+
+ function fallback8bitEncoding() {
+ return "iso-8859-2";
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ $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: genitiv, dativ, akuzativ, vokativ, instrumental, lokativ
+ */
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['bs'][$case][$word]) ) {
+ return $wgGrammarForms['bs'][$case][$word];
+ }
+ switch ( $case ) {
+ case 'genitiv': # genitive
+ if ( $word == 'Wikipedia' ) {
+ $word = 'Wikipedije';
+ } elseif ( $word == 'Wikiknjige' ) {
+ $word = 'Wikiknjiga';
+ } elseif ( $word == 'Wikivijesti' ) {
+ $word = 'Wikivijesti';
+ } elseif ( $word == 'Wikicitati' ) {
+ $word = 'Wikicitata';
+ } elseif ( $word == 'Wikiizvor' ) {
+ $word = 'Wikiizvora';
+ } elseif ( $word == 'Vikirječnik' ) {
+ $word = 'Vikirječnika';
+ }
+ break;
+ case 'dativ': # dative
+ if ( $word == 'Wikipedia' ) {
+ $word = 'Wikipediji';
+ } elseif ( $word == 'Wikiknjige' ) {
+ $word = 'Wikiknjigama';
+ } elseif ( $word == 'Wikicitati' ) {
+ $word = 'Wikicitatima';
+ } elseif ( $word == 'Wikivijesti' ) {
+ $word = 'Wikivijestima';
+ } elseif ( $word == 'Wikiizvor' ) {
+ $word = 'Wikiizvoru';
+ } elseif ( $word == 'Vikirječnik' ) {
+ $word = 'Vikirječniku';
+ }
+ break;
+ case 'akuzativ': # akusative
+ if ( $word == 'Wikipedia' ) {
+ $word = 'Wikipediju';
+ } elseif ( $word == 'Wikiknjige' ) {
+ $word = 'Wikiknjige';
+ } elseif ( $word == 'Wikicitati' ) {
+ $word = 'Wikicitate';
+ } elseif ( $word == 'Wikivijesti' ) {
+ $word = 'Wikivijesti';
+ } elseif ( $word == 'Wikiizvor' ) {
+ $word = 'Wikiizvora';
+ } elseif ( $word == 'Vikirječnik' ) {
+ $word = 'Vikirječnika';
+ }
+ break;
+ case 'vokativ': # vocative
+ if ( $word == 'Wikipedia' ) {
+ $word = 'Wikipedijo';
+ } elseif ( $word == 'Wikiknjige' ) {
+ $word = 'Wikiknjige';
+ } elseif ( $word == 'Wikicitati' ) {
+ $word = 'Wikicitati';
+ } elseif ( $word == 'Wikivijesti' ) {
+ $word = 'Wikivijesti';
+ } elseif ( $word == 'Wikiizvor' ) {
+ $word = 'Wikizivoru';
+ } elseif ( $word == 'Vikirječnik' ) {
+ $word = 'Vikirječniče';
+ }
+ break;
+ case 'instrumental': # instrumental
+ if ( $word == 'Wikipedia' ) {
+ $word = 's Wikipediom';
+ } elseif ( $word == 'Wikiknjige' ) {
+ $word = 's Wikiknjigama';
+ } elseif ( $word == 'Wikicitati' ) {
+ $word = 's Wikicitatima';
+ } elseif ( $word == 'Wikivijesti' ) {
+ $word = 's Wikivijestima';
+ } elseif ( $word == 'Wikiizvor' ) {
+ $word = 's Wikiizvorom';
+ } elseif ( $word == 'Vikirječnik' ) {
+ $word = 's Vikirječnikom';
+ } else {
+ $word = 's ' . $word;
+ }
+ break;
+ case 'lokativ': # locative
+ if ( $word == 'Wikipedia' ) {
+ $word = 'o Wikipediji';
+ } elseif ( $word == 'Wikiknjige' ) {
+ $word = 'o Wikiknjigama';
+ } elseif ( $word == 'Wikicitati' ) {
+ $word = 'o Wikicitatima';
+ } elseif ( $word == 'Wikivijesti' ) {
+ $word = 'o Wikivijestima';
+ } elseif ( $word == 'Wikiizvor' ) {
+ $word = 'o Wikiizvoru';
+ } elseif ( $word == 'Vikirječnik' ) {
+ $word = 'o Vikirječniku';
+ } else {
+ $word = 'o ' . $word;
+ }
+ break;
+ }
+
+ return $word; # this will return the original value for 'nominativ' (nominative) and all undefined case values
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/languages/LanguageCa.php b/languages/LanguageCa.php
new file mode 100644
index 00000000..caa86ed5
--- /dev/null
+++ b/languages/LanguageCa.php
@@ -0,0 +1,103 @@
+<?php
+/** Catalan (Català)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesCa.php');
+}
+
+class LanguageCa extends LanguageUtf8 {
+ private $mMessagesCa, $mNamespaceNamesCa = null;
+
+ private $mQuickbarSettingsCa = array(
+ "Cap", "Fixa a la dreta", "Fixa a l'esquerra", "Surant a l'esquerra"
+ );
+
+ private $mSkinNamesCa = array(
+ 'standard' => "Estàndard",
+ 'nostalgia' => "Nostàlgia",
+ 'cologneblue' => "Colònia blava",
+ );
+
+ private $mBookstoreListCa = array(
+ 'Catàleg Col·lectiu de les Universitats de Catalunya' => 'http://ccuc.cbuc.es/cgi-bin/vtls.web.gateway?searchtype=control+numcard&searcharg=$1',
+ 'Totselsllibres.com' => 'http://www.totselsllibres.com/tel/publi/busquedaAvanzadaLibros.do?ISBN=$1',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesCa;
+ $this->mMessagesCa =& $wgAllMessagesCa;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesCa = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Especial',
+ NS_MAIN => '',
+ NS_TALK => 'Discussió',
+ NS_USER => 'Usuari',
+ NS_USER_TALK => 'Usuari_Discussió',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace.'_Discussió',
+ NS_IMAGE => 'Imatge',
+ NS_IMAGE_TALK => 'Imatge_Discussió',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Discussió',
+ NS_TEMPLATE => 'Plantilla',
+ NS_TEMPLATE_TALK => 'Plantilla_Discussió',
+ NS_HELP => 'Ajuda',
+ NS_HELP_TALK => 'Ajuda_Discussió',
+ NS_CATEGORY => 'Categoria',
+ NS_CATEGORY_TALK => 'Categoria_Discussió'
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesCa + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsCa;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesCa + parent::getSkinNames();
+ }
+
+ function getBookstoreList () {
+ return $this->mBookstoreListCa + parent::getBookstoreList();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesCa[$key] ) ) {
+ return $this->mMessagesCa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesCa;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function linkTrail() {
+ return '/^([a-zàèéíòóúç·ïü\']+)(.*)$/sDu';
+ }
+
+}
+
+?>
diff --git a/languages/LanguageCe.deps.php b/languages/LanguageCe.deps.php
new file mode 100644
index 00000000..d6b5b19d
--- /dev/null
+++ b/languages/LanguageCe.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageCe.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageRu.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageCe.php b/languages/LanguageCe.php
new file mode 100644
index 00000000..bdaa66e4
--- /dev/null
+++ b/languages/LanguageCe.php
@@ -0,0 +1,36 @@
+<?php
+/** Chechen (Нохчийн)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @author Ashar Voultoiz <hashar@altern.org>
+ *
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason, Ashar Voultoiz
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+/**
+ *
+ */
+require_once 'LanguageRu.php';
+
+/**
+ *
+ */
+class LanguageCe extends LanguageRu {
+
+ function getFallbackLanguage() {
+ return 'ru';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php
new file mode 100644
index 00000000..9bb6715a
--- /dev/null
+++ b/languages/LanguageConverter.php
@@ -0,0 +1,660 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Zhengzhu Feng <zhengzhu@gmail.com>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
+ */
+
+class LanguageConverter {
+ var $mPreferredVariant='';
+ var $mMainLanguageCode;
+ var $mVariants, $mVariantFallbacks;
+ var $mTablesLoaded = false;
+ var $mTables;
+ var $mTitleDisplay='';
+ var $mDoTitleConvert=true, $mDoContentConvert=true;
+ var $mCacheKey;
+ var $mLangObj;
+ var $mMarkup;
+ var $mFlags;
+ var $mUcfirst = false;
+ /**
+ * Constructor
+ *
+ * @param string $maincode the main language code of this language
+ * @param array $variants the supported variants of this language
+ * @param array $variantfallback the fallback language of each variant
+ * @param array $markup array defining the markup used for manual conversion
+ * @param array $flags array defining the custom strings that maps to the flags
+ * @access public
+ */
+ function __construct($langobj, $maincode,
+ $variants=array(),
+ $variantfallbacks=array(),
+ $markup=array(),
+ $flags = array()) {
+ global $wgDBname;
+ $this->mLangObj = $langobj;
+ $this->mMainLanguageCode = $maincode;
+ $this->mVariants = $variants;
+ $this->mVariantFallbacks = $variantfallbacks;
+ $this->mCacheKey = $wgDBname . ":conversiontables";
+ $m = array('begin'=>'-{', 'flagsep'=>'|', 'codesep'=>':',
+ 'varsep'=>';', 'end'=>'}-');
+ $this->mMarkup = array_merge($m, $markup);
+ $f = array('A'=>'A', 'T'=>'T');
+ $this->mFlags = array_merge($f, $flags);
+ }
+
+ /**
+ * @access public
+ */
+ function getVariants() {
+ return $this->mVariants;
+ }
+
+ /**
+ * in case some variant is not defined in the markup, we need
+ * to have some fallback. for example, in zh, normally people
+ * will define zh-cn and zh-tw, but less so for zh-sg or zh-hk.
+ * when zh-sg is preferred but not defined, we will pick zh-cn
+ * in this case. right now this is only used by zh.
+ *
+ * @param string $v the language code of the variant
+ * @return string the code of the fallback language or false if there is no fallback
+ * @private
+ */
+ function getVariantFallback($v) {
+ return $this->mVariantFallbacks[$v];
+ }
+
+
+ /**
+ * get preferred language variants.
+ * @return string the preferred language code
+ * @access public
+ */
+ function getPreferredVariant() {
+ global $wgUser, $wgRequest;
+
+ if($this->mPreferredVariant)
+ return $this->mPreferredVariant;
+
+ // see if the preference is set in the request
+ $req = $wgRequest->getText( 'variant' );
+ if( in_array( $req, $this->mVariants ) ) {
+ $this->mPreferredVariant = $req;
+ return $req;
+ }
+
+ // get language variant preference from logged in users
+ if(is_object($wgUser) && $wgUser->isLoggedIn() ) {
+ $this->mPreferredVariant = $wgUser->getOption('variant');
+ return $this->mPreferredVariant;
+ }
+
+ # FIXME rewrite code for parsing http header. The current code
+ # is written specific for detecting zh- variants
+ if( !$this->mPreferredVariant ) {
+ // see if some supported language variant is set in the
+ // http header, but we don't set the mPreferredVariant
+ // variable in case this is called before the user's
+ // preference is loaded
+ $pv=$this->mMainLanguageCode;
+ if(array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER)) {
+ $header = str_replace( '_', '-', strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]));
+ $zh = strstr($header, 'zh-');
+ if($zh) {
+ $pv = substr($zh,0,5);
+ }
+ }
+ return $pv;
+ }
+ }
+
+ /**
+ * dictionary-based conversion
+ *
+ * @param string $text the text to be converted
+ * @param string $toVariant the target language code
+ * @return string the converted text
+ * @private
+ */
+ function autoConvert($text, $toVariant=false) {
+ $fname="LanguageConverter::autoConvert";
+
+ wfProfileIn( $fname );
+
+ if(!$this->mTablesLoaded)
+ $this->loadTables();
+
+ if(!$toVariant)
+ $toVariant = $this->getPreferredVariant();
+ if(!in_array($toVariant, $this->mVariants))
+ return $text;
+
+ /* we convert everything except:
+ 1. html markups (anything between < and >)
+ 2. html entities
+ 3. place holders created by the parser
+ */
+ global $wgParser;
+ if (isset($wgParser))
+ $marker = '|' . $wgParser->UniqPrefix() . '[\-a-zA-Z0-9]+';
+ else
+ $marker = "";
+
+ // this one is needed when the text is inside an html markup
+ $htmlfix = '|<[^>]+=\"[^(>=)]*$|^[^(<>=\")]*\"[^>]*>';
+
+ $reg = '/<[^>]+>|&[a-z#][a-z0-9]+;' . $marker . $htmlfix . '/';
+
+ $matches = preg_split($reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE);
+
+
+ $m = array_shift($matches);
+ $ret = strtr($m[0], $this->mTables[$toVariant]);
+ $mstart = $m[1]+strlen($m[0]);
+ foreach($matches as $m) {
+ $ret .= substr($text, $mstart, $m[1]-$mstart);
+ $ret .= strtr($m[0], $this->mTables[$toVariant]);
+ $mstart = $m[1] + strlen($m[0]);
+ }
+ wfProfileOut( $fname );
+ return $ret;
+ }
+
+ /**
+ * convert text to all supported variants
+ *
+ * @param string $text the text to be converted
+ * @return array of string
+ * @private
+ */
+ function autoConvertToAllVariants($text) {
+ $fname="LanguageConverter::autoConvertToAllVariants";
+ wfProfileIn( $fname );
+ if( !$this->mTablesLoaded )
+ $this->loadTables();
+
+ $ret = array();
+ foreach($this->mVariants as $variant) {
+ $ret[$variant] = strtr($text, $this->mTables[$variant]);
+ }
+ wfProfileOut( $fname );
+ return $ret;
+ }
+
+ /**
+ * Convert text using a parser object for context
+ */
+ function parserConvert( $text, &$parser ) {
+ global $wgDisableLangConversion;
+ /* don't do anything if this is the conversion table */
+ if ( $parser->mTitle->getNamespace() == NS_MEDIAWIKI &&
+ strpos($parser->mTitle->getText, "Conversiontable") !== false )
+ {
+ return $text;
+ }
+
+ if($wgDisableLangConversion)
+ return $text;
+
+ $text = $this->convert( $text );
+ $parser->mOutput->setTitleText( $this->mTitleDisplay );
+ return $text;
+ }
+
+ /**
+ * convert text to different variants of a language. the automatic
+ * conversion is done in autoConvert(). here we parse the text
+ * marked with -{}-, which specifies special conversions of the
+ * text that can not be accomplished in autoConvert()
+ *
+ * syntax of the markup:
+ * -{code1:text1;code2:text2;...}- or
+ * -{text}- in which case no conversion should take place for text
+ *
+ * @param string $text text to be converted
+ * @param bool $isTitle whether this conversion is for the article title
+ * @return string converted text
+ * @access public
+ */
+ function convert( $text , $isTitle=false) {
+ $mw =& MagicWord::get( MAG_NOTITLECONVERT );
+ if( $mw->matchAndRemove( $text ) )
+ $this->mDoTitleConvert = false;
+
+ $mw =& MagicWord::get( MAG_NOCONTENTCONVERT );
+ if( $mw->matchAndRemove( $text ) ) {
+ $this->mDoContentConvert = false;
+ }
+
+ // no conversion if redirecting
+ $mw =& MagicWord::get( MAG_REDIRECT );
+ if( $mw->matchStart( $text ))
+ return $text;
+
+ if( $isTitle ) {
+ if( !$this->mDoTitleConvert ) {
+ $this->mTitleDisplay = $text;
+ return $text;
+ }
+ if( !empty($this->mTitleDisplay))
+ return $this->mTitleDisplay;
+
+ global $wgRequest;
+ $isredir = $wgRequest->getText( 'redirect', 'yes' );
+ $action = $wgRequest->getText( 'action' );
+ if ( $isredir == 'no' || $action == 'edit' ) {
+ return $text;
+ }
+ else {
+ $this->mTitleDisplay = $this->autoConvert($text);
+ return $this->mTitleDisplay;
+ }
+ }
+
+ if( !$this->mDoContentConvert )
+ return $text;
+
+ $plang = $this->getPreferredVariant();
+ if( isset( $this->mVariantFallbacks[$plang] ) ) {
+ $fallback = $this->mVariantFallbacks[$plang];
+ } else {
+ // This sounds... bad?
+ $fallback = '';
+ }
+
+ $tarray = explode($this->mMarkup['begin'], $text);
+ $tfirst = array_shift($tarray);
+ $text = $this->autoConvert($tfirst);
+ foreach($tarray as $txt) {
+ $marked = explode($this->mMarkup['end'], $txt, 2);
+ $flags = array();
+ $tt = explode($this->mMarkup['flagsep'], $marked[0], 2);
+
+ if(sizeof($tt) == 2) {
+ $f = explode($this->mMarkup['varsep'], $tt[0]);
+ foreach($f as $ff) {
+ $ff = trim($ff);
+ if(array_key_exists($ff, $this->mFlags) &&
+ !array_key_exists($this->mFlags[$ff], $flags))
+ $flags[] = $this->mFlags[$ff];
+ }
+ $rules = $tt[1];
+ }
+ else
+ $rules = $marked[0];
+
+#FIXME: may cause trouble here...
+ //strip &nbsp; since it interferes with the parsing, plus,
+ //all spaces should be stripped in this tag anyway.
+ $rules = str_replace('&nbsp;', '', $rules);
+
+ $carray = $this->parseManualRule($rules, $flags);
+ $disp = '';
+ if(array_key_exists($plang, $carray))
+ $disp = $carray[$plang];
+ else if(array_key_exists($fallback, $carray))
+ $disp = $carray[$fallback];
+ if($disp) {
+ if(in_array('T', $flags))
+ $this->mTitleDisplay = $disp;
+ else
+ $text .= $disp;
+
+ if(in_array('A', $flags)) {
+ /* modify the conversion table for this session*/
+
+ /* fill in the missing variants, if any,
+ with fallbacks */
+ foreach($this->mVariants as $v) {
+ if(!array_key_exists($v, $carray)) {
+ $vf = $this->getVariantFallback($v);
+ if(array_key_exists($vf, $carray))
+ $carray[$v] = $carray[$vf];
+ }
+ }
+
+ foreach($this->mVariants as $vfrom) {
+ if(!array_key_exists($vfrom, $carray))
+ continue;
+ foreach($this->mVariants as $vto) {
+ if($vfrom == $vto)
+ continue;
+ if(!array_key_exists($vto, $carray))
+ continue;
+ $this->mTables[$vto][$carray[$vfrom]] = $carray[$vto];
+
+ }
+ }
+ }
+ }
+ else {
+ $text .= $marked[0];
+ }
+ if(array_key_exists(1, $marked))
+ $text .= $this->autoConvert($marked[1]);
+ }
+
+ return $text;
+ }
+
+ /**
+ * parse the manually marked conversion rule
+ * @param string $rule the text of the rule
+ * @return array of the translation in each variant
+ * @private
+ */
+ function parseManualRule($rules, $flags=array()) {
+
+ $choice = explode($this->mMarkup['varsep'], $rules);
+ $carray = array();
+ if(sizeof($choice) == 1) {
+ /* a single choice */
+ foreach($this->mVariants as $v)
+ $carray[$v] = $choice[0];
+ }
+ else {
+ foreach($choice as $c) {
+ $v = explode($this->mMarkup['codesep'], $c);
+ if(sizeof($v) != 2) // syntax error, skip
+ continue;
+ $carray[trim($v[0])] = trim($v[1]);
+ }
+ }
+ return $carray;
+ }
+
+ /**
+ * if a language supports multiple variants, it is
+ * possible that non-existing link in one variant
+ * actually exists in another variant. this function
+ * tries to find it. See e.g. LanguageZh.php
+ *
+ * @param string $link the name of the link
+ * @param mixed $nt the title object of the link
+ * @return null the input parameters may be modified upon return
+ * @access public
+ */
+ function findVariantLink( &$link, &$nt ) {
+ static $count=0; //used to limit this operation
+ static $cache=array();
+ global $wgDisableLangConversion;
+ $pref = $this->getPreferredVariant();
+ $ns=0;
+ if(is_object($nt))
+ $ns = $nt->getNamespace();
+ if( $count > 50 && $ns != NS_CATEGORY )
+ return;
+ $count++;
+ $variants = $this->autoConvertToAllVariants($link);
+ if($variants == false) //give up
+ return;
+ foreach( $variants as $v ) {
+ if(isset($cache[$v]))
+ continue;
+ $cache[$v] = 1;
+ $varnt = Title::newFromText( $v, $ns );
+ if( $varnt && $varnt->getArticleID() > 0 ) {
+ $nt = $varnt;
+ if( !$wgDisableLangConversion )
+ $link = $v;
+ break;
+ }
+ }
+ }
+
+ /**
+ * returns language specific hash options
+ *
+ * @access public
+ */
+ function getExtraHashOptions() {
+ $variant = $this->getPreferredVariant();
+ return '!' . $variant ;
+ }
+
+ /**
+ * get title text as defined in the body of the article text
+ *
+ * @access public
+ */
+ function getParsedTitle() {
+ return $this->mTitleDisplay;
+ }
+
+ /**
+ * a write lock to the cache
+ *
+ * @private
+ */
+ function lockCache() {
+ global $wgMemc;
+ $success = false;
+ for($i=0; $i<30; $i++) {
+ if($success = $wgMemc->add($this->mCacheKey . "lock", 1, 10))
+ break;
+ sleep(1);
+ }
+ return $success;
+ }
+
+ /**
+ * unlock cache
+ *
+ * @private
+ */
+ function unlockCache() {
+ global $wgMemc;
+ $wgMemc->delete($this->mCacheKey . "lock");
+ }
+
+
+ /**
+ * Load default conversion tables
+ * This method must be implemented in derived class
+ *
+ * @private
+ */
+ function loadDefaultTables() {
+ $name = get_class($this);
+ wfDie("Must implement loadDefaultTables() method in class $name");
+ }
+
+ /**
+ * load conversion tables either from the cache or the disk
+ * @private
+ */
+ function loadTables($fromcache=true) {
+ global $wgMemc;
+ if( $this->mTablesLoaded )
+ return;
+ $this->mTablesLoaded = true;
+ if($fromcache) {
+ $this->mTables = $wgMemc->get( $this->mCacheKey );
+ if( !empty( $this->mTables ) ) //all done
+ return;
+ }
+ // not in cache, or we need a fresh reload.
+ // we will first load the default tables
+ // then update them using things in MediaWiki:Zhconversiontable/*
+ global $wgMessageCache;
+ $this->loadDefaultTables();
+ foreach($this->mVariants as $var) {
+ $cached = $this->parseCachedTable($var);
+ $this->mTables[$var] = array_merge($this->mTables[$var], $cached);
+ }
+
+ $this->postLoadTables();
+
+ if($this->lockCache()) {
+ $wgMemc->set($this->mCacheKey, $this->mTables, 43200);
+ $this->unlockCache();
+ }
+ }
+
+ /**
+ * Hook for post processig after conversion tables are loaded
+ *
+ */
+ function postLoadTables() {}
+
+ /**
+ * Reload the conversion tables
+ *
+ * @private
+ */
+ function reloadTables() {
+ if($this->mTables)
+ unset($this->mTables);
+ $this->mTablesLoaded = false;
+ $this->loadTables(false);
+ }
+
+
+ /**
+ * parse the conversion table stored in the cache
+ *
+ * the tables should be in blocks of the following form:
+
+ * -{
+ * word => word ;
+ * word => word ;
+ * ...
+ * }-
+ *
+ * to make the tables more manageable, subpages are allowed
+ * and will be parsed recursively if $recursive=true
+ *
+ * @private
+ */
+ function parseCachedTable($code, $subpage='', $recursive=true) {
+ global $wgMessageCache;
+ static $parsed = array();
+
+ if(!is_object($wgMessageCache))
+ return array();
+
+ $key = 'Conversiontable/'.$code;
+ if($subpage)
+ $key .= '/' . $subpage;
+
+ if(array_key_exists($key, $parsed))
+ return array();
+
+
+ $txt = $wgMessageCache->get( $key, true, true, true );
+
+ // get all subpage links of the form
+ // [[MediaWiki:conversiontable/zh-xx/...|...]]
+ $linkhead = $this->mLangObj->getNsText(NS_MEDIAWIKI) . ':Conversiontable';
+ $subs = explode('[[', $txt);
+ $sublinks = array();
+ foreach( $subs as $sub ) {
+ $link = explode(']]', $sub, 2);
+ if(count($link) != 2)
+ continue;
+ $b = explode('|', $link[0]);
+ $b = explode('/', trim($b[0]), 3);
+ if(count($b)==3)
+ $sublink = $b[2];
+ else
+ $sublink = '';
+
+ if($b[0] == $linkhead && $b[1] == $code) {
+ $sublinks[] = $sublink;
+ }
+ }
+
+
+ // parse the mappings in this page
+ $blocks = explode($this->mMarkup['begin'], $txt);
+ array_shift($blocks);
+ $ret = array();
+ foreach($blocks as $block) {
+ $mappings = explode($this->mMarkup['end'], $block, 2);
+ $stripped = str_replace(array("'", '"', '*','#'), '', $mappings[0]);
+ $table = explode( ';', $stripped );
+ foreach( $table as $t ) {
+ $m = explode( '=>', $t );
+ if( count( $m ) != 2)
+ continue;
+ // trim any trailling comments starting with '//'
+ $tt = explode('//', $m[1], 2);
+ $ret[trim($m[0])] = trim($tt[0]);
+ }
+ }
+ $parsed[$key] = true;
+
+
+ // recursively parse the subpages
+ if($recursive) {
+ foreach($sublinks as $link) {
+ $s = $this->parseCachedTable($code, $link, $recursive);
+ $ret = array_merge($ret, $s);
+ }
+ }
+
+ if ($this->mUcfirst) {
+ foreach ($ret as $k => $v) {
+ $ret[LanguageUtf8::ucfirst($k)] = LanguageUtf8::ucfirst($v);
+ }
+ }
+ return $ret;
+ }
+
+ /**
+ * Enclose a string with the "no conversion" tag. This is used by
+ * various functions in the Parser
+ *
+ * @param string $text text to be tagged for no conversion
+ * @return string the tagged text
+ */
+ function markNoConversion($text) {
+ # don't mark if already marked
+ if(strpos($text, $this->mMarkup['begin']) ||
+ strpos($text, $this->mMarkup['end']))
+ return $text;
+
+ $ret = $this->mMarkup['begin'] . $text . $this->mMarkup['end'];
+ return $ret;
+ }
+
+ /**
+ * convert the sorting key for category links. this should make different
+ * keys that are variants of each other map to the same key
+ */
+ function convertCategoryKey( $key ) {
+ return $key;
+ }
+ /**
+ * hook to refresh the cache of conversion tables when
+ * MediaWiki:conversiontable* is updated
+ * @private
+ */
+ function OnArticleSaveComplete($article, $user, $text, $summary, $isminor, $iswatch, $section) {
+ $titleobj = $article->getTitle();
+ if($titleobj->getNamespace() == NS_MEDIAWIKI) {
+ /*
+ global $wgContLang; // should be an LanguageZh.
+ if(get_class($wgContLang) != 'languagezh')
+ return true;
+ */
+ $title = $titleobj->getDBkey();
+ $t = explode('/', $title, 3);
+ $c = count($t);
+ if( $c > 1 && $t[0] == 'Conversiontable' ) {
+ if(in_array($t[1], $this->mVariants)) {
+ $this->reloadTables();
+ }
+ }
+ }
+ return true;
+ }
+}
+
+?>
diff --git a/languages/LanguageCs.php b/languages/LanguageCs.php
new file mode 100644
index 00000000..0265c6f3
--- /dev/null
+++ b/languages/LanguageCs.php
@@ -0,0 +1,265 @@
+<?php
+/** Czech (česky)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+/** */
+require_once( 'LanguageUtf8.php' );
+
+# Yucky hardcoding hack
+switch( $wgMetaNamespace ) {
+case 'Wikipedie':
+case 'Wikipedia':
+ $wgUserNamespace = 'Wikipedista'; break;
+default:
+ $wgUserNamespace = 'Uživatel';
+}
+
+/* private */ $wgNamespaceNamesCs = array(
+ NS_MEDIA => 'Média',
+ NS_SPECIAL => 'Speciální',
+ NS_MAIN => '',
+ NS_TALK => 'Diskuse',
+ NS_USER => $wgUserNamespace,
+ NS_USER_TALK => $wgUserNamespace . '_diskuse',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_diskuse',
+ NS_IMAGE => 'Soubor',
+ NS_IMAGE_TALK => 'Soubor_diskuse',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_diskuse',
+ NS_TEMPLATE => 'Šablona',
+ NS_TEMPLATE_TALK => 'Šablona_diskuse',
+ NS_HELP => 'Nápověda',
+ NS_HELP_TALK => 'Nápověda_diskuse',
+ NS_CATEGORY => 'Kategorie',
+ NS_CATEGORY_TALK => 'Kategorie_diskuse',
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsCs = array(
+ 'Žádný', 'Leží vlevo', 'Leží vpravo', 'Visí vlevo'
+);
+
+/* private */ $wgSkinNamesCs = array(
+ 'standard' => 'Standard',
+ 'nostalgia' => 'Nostalgie',
+ 'cologneblue' => 'Kolínská modř',
+ 'chick' => 'Kuře'
+) + $wgSkinNamesEn;
+
+# Hledání knihy podle ISBN
+# $wgBookstoreListCs = ..
+/* private */ $wgBookstoreListCs = array(
+ 'Národní knihovna' => 'http://sigma.nkp.cz/F/?func=find-a&find_code=ISN&request=$1',
+ 'Státní technická knihovna' => 'http://www.stk.cz/cgi-bin/dflex/CZE/STK/BROWSE?A=01&V=$1'
+) + $wgBookstoreListEn;
+
+# Note to translators:
+# Please include the English words as synonyms. This allows people
+# from other wikis to contribute more easily.
+#
+# Nepoužívá se, pro používání je třeba povolit getMagicWords dole v LanguageCs.
+/* private */ $wgMagicWordsCs = array(
+## ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#REDIRECT', '#PŘESMĚRUJ' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__BEZOBSAHU__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__VŽDYOBSAH__' ),
+ MAG_TOC => array( 0, '__TOC__', '__OBSAH__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__BEZEDITOVATČÁST__' ),
+ MAG_START => array( 0, '__START__', '__ZAČÁTEK__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'AKTUÁLNÍMĚSÍC' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'AKTUÁLNÍMĚSÍCJMÉNO' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'AKTUÁLNÍMĚSÍCGEN' ),
+# MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV' 'AKTUÁLNÍMĚSÍCZKR' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'AKTUÁLNÍDEN' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'AKTUÁLNÍDENJMÉNO' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'AKTUÁLNÍROK' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'AKTUÁLNÍČAS' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'POČETČLÁNKŮ' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'NÁZEVSTRANY' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'NÁZEVSTRANYE' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'JMENNÝPROSTOR' ),
+ MAG_MSG => array( 0, 'MSG:' ),
+ MAG_SUBST => array( 0, 'SUBST:', 'VLOŽIT:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'VLOŽITNW:' ),
+ MAG_END => array( 0, '__END__', '__KONEC__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'náhled' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'vpravo' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'vlevo' ),
+ MAG_IMG_NONE => array( 1, 'none', 'žádné' ),
+ MAG_IMG_WIDTH => array( 1, '$1px' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'střed' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'rám' ),
+ MAG_INT => array( 0, 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'NÁZEVSERVERU' ),
+ MAG_NS => array( 0, 'NS:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'MÍSTNÍURL:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'MÍSTNÍURLE:' ),
+ MAG_SERVER => array( 0, 'SERVER' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID', 'IDREVIZE' )
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesCs.php');
+}
+
+#--------------------------------------------------------------------------
+# Internationalisation code
+#--------------------------------------------------------------------------
+
+class LanguageCs extends LanguageUtf8 {
+
+ function getBookstoreList () {
+ global $wgBookstoreListCs ;
+ return $wgBookstoreListCs ;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesCs;
+ return $wgNamespaceNamesCs;
+ }
+
+ function getNsIndex( $text ) {
+ global $wgNamespaceNamesCs;
+
+ foreach ( $wgNamespaceNamesCs as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ return false;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsCs;
+ return $wgQuickbarSettingsCs;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesCs;
+ return $wgSkinNamesCs;
+ }
+
+ function getMonthNameGen( $key ) {
+ #TODO: převést na return $this->convertGrammar( $this->getMonthName( $key ), '2sg' );
+ global $wgMonthNamesGenEn, $wgContLang;
+ // see who called us and use the correct message function
+ if( get_class( $wgContLang->getLangObj() ) == get_class( $this ) )
+ return wfMsgForContent( $wgMonthNamesGenEn[$key-1] );
+ else
+ return wfMsg( $wgMonthNamesGenEn[$key-1] );
+ }
+
+ function formatMonth( $month, $format ) {
+ return intval( $month ) . '.';
+ }
+
+ function formatDay( $day, $format ) {
+ return intval( $day ) . '.';
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesCs;
+ if(array_key_exists($key, $wgAllMessagesCs))
+ return $wgAllMessagesCs[$key];
+ else
+ return parent::getMessage($key);
+ }
+
+ function getAllMessages() {
+ global $wgAllMessagesCs;
+ return $wgAllMessagesCs;
+ }
+
+ function checkTitleEncoding( $s ) {
+
+ # Check for non-UTF-8 URLs; assume they are WinLatin2
+ $ishigh = preg_match( '/[\x80-\xff]/', $s);
+ $isutf = ($ishigh ? preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s ) : true );
+
+ if( $ishigh and !$isutf ) {
+ return iconv( 'cp1250', 'utf-8', $s );
+ }
+
+ return $s;
+ }
+
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+ # Grammatical transformations, needed for inflected languages
+ # Invoked by putting {{grammar:case|word}} in a message
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['cs'][$case][$word]) ) {
+ return $wgGrammarForms['cs'][$case][$word];
+ }
+ # allowed values for $case:
+ # 1sg, 2sg, ..., 7sg -- nominative, genitive, ... (in singular)
+ switch ( $word ) {
+ case 'Wikipedia':
+ case 'Wikipedie':
+ switch ( $case ) {
+ case '3sg':
+ case '4sg':
+ case '6sg':
+ return 'Wikipedii';
+ case '7sg':
+ return 'Wikipedií';
+ default:
+ return 'Wikipedie';
+ }
+
+ case 'Wiktionary':
+ case 'Wikcionář':
+ switch ( $case ) {
+ case '2sg':
+ return 'Wikcionáře';
+ case '3sg':
+ case '5sg';
+ case '6sg';
+ return 'Wikcionáři';
+ case '7sg':
+ return 'Wikcionářem';
+ default:
+ return 'Wikcionář';
+ }
+
+ case 'Wikiquote':
+ case 'Wikicitáty':
+ switch ( $case ) {
+ case '2sg':
+ return 'Wikicitátů';
+ case '3sg':
+ return 'Wikicitátům';
+ case '6sg';
+ return 'Wikicitátech';
+ default:
+ return 'Wikicitáty';
+ }
+ }
+ # unknown
+ return $word;
+ }
+
+ # Plural form transformations, needed for some languages.
+ # Invoked by {{plural:count|wordform1|wordform2|wordform3}}
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ switch ( $count ) {
+ case 1:
+ return $wordform1;
+
+ case 2:
+ case 3:
+ case 4:
+ return $wordform2;
+
+ default:
+ return $wordform3;
+ };
+ }
+}
+
+?>
diff --git a/languages/LanguageCsb.php b/languages/LanguageCsb.php
new file mode 100644
index 00000000..890394f9
--- /dev/null
+++ b/languages/LanguageCsb.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+$wgNamespaceNamesCsb = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Specjalnô',
+ NS_MAIN => '',
+ NS_TALK => 'Diskùsëjô',
+ NS_USER => 'Brëkòwnik',
+ NS_USER_TALK => 'Diskùsëjô_brëkòwnika',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Diskùsëjô_' . $wgMetaNamespace,
+ NS_IMAGE => 'Òbrôzk',
+ NS_IMAGE_TALK => 'Diskùsëjô_òbrôzków',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Diskùsëjô_MediaWiki',
+ NS_TEMPLATE => 'Szablóna',
+ NS_TEMPLATE_TALK => 'Diskùsëjô_Szablónë',
+ NS_HELP => 'Pòmòc',
+ NS_HELP_TALK => 'Diskùsëjô_Pòmòcë',
+ NS_CATEGORY => 'Kategòrëjô',
+ NS_CATEGORY_TALK => 'Diskùsëjô_Kategòrëji'
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesCsb.php');
+}
+
+require_once( 'LanguageUtf8.php' );
+class LanguageCsb extends LanguageUtf8 {
+ function getNamespaces() {
+ global $wgNamespaceNamesCsb;
+ return $wgNamespaceNamesCsb;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesCsb;
+ if( isset( $wgAllMessagesCsb[$key] ) ) {
+ return $wgAllMessagesCsb[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+}
+?>
diff --git a/languages/LanguageCv.deps.php b/languages/LanguageCv.deps.php
new file mode 100644
index 00000000..24552389
--- /dev/null
+++ b/languages/LanguageCv.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageCv.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageRu.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageCv.php b/languages/LanguageCv.php
new file mode 100644
index 00000000..7cf4b245
--- /dev/null
+++ b/languages/LanguageCv.php
@@ -0,0 +1,99 @@
+<?php
+/** Chuvash (Чăвашла)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+# Chuvash stub localization; default to Russian instead of English.
+
+# Cyrillic chars: Ӑӑ Ӗӗ Ҫҫ Ӳӳ
+# Latin substitute: Ăă Ĕĕ Çç Ÿÿ
+# Where are latin substitute in this file because of font problems.
+
+require_once( "LanguageRu.php" );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesCv.php');
+}
+
+class LanguageCv extends LanguageRu {
+ private $mMessagesCv, $mNamespaceNamesCv = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesCv;
+ $this->mMessagesCv =& $wgAllMessagesCv;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesCv = array(
+ NS_MEDIA => 'Медиа',
+ NS_SPECIAL => 'Ятарлă',
+ NS_MAIN => '',
+ NS_TALK => 'Сӳтсе явасси',
+ NS_USER => 'Хутшăнакан',
+ NS_USER_TALK => 'Хутшăнаканăн_канашлу_страници',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_сӳтсе_явмалли',
+ NS_IMAGE => 'Ӳкерчĕк',
+ NS_IMAGE_TALK => 'Ӳкерчĕке_сӳтсе_явмалли',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_сӳтсе_явмалли',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Шаблона_сӳтсе_явмалли',
+ NS_HELP => 'Пулăшу',
+ NS_HELP_TALK => 'Пулăшăва_сӳтсе_явмалли',
+ NS_CATEGORY => 'Категори',
+ NS_CATEGORY_TALK => 'Категорине_сӳтсе_явмалли',
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesCv + parent::getNamespaces();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesCv[$key] ) ) {
+ return $this->mMessagesCv[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesCv;
+ }
+
+ function getFallbackLanguage() {
+ return 'ru';
+ }
+
+ function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+ $datePreference = $this->dateFormat( $format );
+ if( $datePreference == MW_DATE_DEFAULT ) {
+ $datePreference = MW_DATE_YMD;
+ }
+
+ $month = $this->formatMonth( substr( $ts, 4, 2 ), $datePreference );
+ $day = $this->formatDay( substr( $ts, 6, 2 ), $datePreference );
+ $year = $this->formatNum( substr( $ts, 0, 4 ), true );
+
+ switch( $datePreference ) {
+ case MW_DATE_DMY: return "$day $month $year";
+ case MW_DATE_YMD: return "$year, $month, $day";
+ case MW_DATE_ISO: return substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' .substr($ts, 6, 2);
+ default: return "$year, $month, $day";
+ }
+
+
+ }
+
+ //only for quotation mark
+ function linkPrefixExtension() { return true; }
+}
+?>
diff --git a/languages/LanguageCy.php b/languages/LanguageCy.php
new file mode 100644
index 00000000..840248c7
--- /dev/null
+++ b/languages/LanguageCy.php
@@ -0,0 +1,137 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+/* Cymraeg - Welsh */
+
+/* private */ $wgNamespaceNamesCy = array(
+ NS_MEDIA => "Media",
+ NS_SPECIAL => "Arbennig",
+ NS_MAIN => "",
+ NS_TALK => "Sgwrs",
+ NS_USER => "Defnyddiwr",
+ NS_USER_TALK => "Sgwrs_Defnyddiwr",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => "Sgwrs_".$wgMetaNamespace,
+ NS_IMAGE => "Delwedd",
+ NS_IMAGE_TALK => "Sgwrs_Delwedd",
+ NS_MEDIAWIKI => "MediaWici",
+ NS_MEDIAWIKI_TALK => "Sgwrs_MediaWici",
+ NS_TEMPLATE => "Nodyn",
+ NS_TEMPLATE_TALK => "Sgwrs_Nodyn",
+ NS_CATEGORY => "Categori",
+ NS_CATEGORY_TALK => "Sgwrs_Categori",
+ NS_HELP => "Cymorth",
+ NS_HELP_TALK => "Sgwrs Cymorth"
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsCy = array(
+ "Dim", "Sefydlog chwith", "Sefydlog de", "Arnawf de"
+);
+
+/* private */ $wgSkinNamesCy = array(
+ 'standard' => "Safonol",
+ 'nostalgia' => "Hiraeth",
+ 'cologneblue' => "Glas Cwlen",
+) + $wgSkinNamesEn;
+
+/* private */ $wgDateFormatsCy = array(
+# "Dim dewis",
+);
+
+/* private */ $wgBookstoreListCy = array(
+ "AddALL" => "http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN",
+ "PriceSCAN" => "http://www.pricescan.com/books/bookDetail.asp?isbn=$1",
+ "Barnes & Noble" => "http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1",
+ "Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1",
+ "Amazon.co.uk" => "http://www.amazon.co.uk/exec/obidos/ISBN=$1"
+);
+
+
+/* private */ $wgMagicWordsCy = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, "#redirect", "#ail-cyfeirio" ),
+ MAG_NOTOC => array( 0, "__NOTOC__", "__DIMTAFLENCYNNWYS__" ),
+ MAG_NOEDITSECTION => array( 0, "__NOEDITSECTION__", "__DIMADRANGOLYGU__" ),
+ MAG_START => array( 0, "__START__", "__DECHRAU__" ),
+ MAG_CURRENTMONTH => array( 1, "CURRENTMONTH", "MISCYFOES" ),
+ MAG_CURRENTMONTHNAME => array( 1, "CURRENTMONTHNAME", "ENWMISCYFOES" ),
+ MAG_CURRENTDAY => array( 1, "CURRENTDAY", "DYDDIADCYFOES" ),
+ MAG_CURRENTDAYNAME => array( 1, "CURRENTDAYNAME", "ENWDYDDCYFOES" ),
+ MAG_CURRENTYEAR => array( 1, "CURRENTYEAR", "FLWYDDYNCYFOES" ),
+ MAG_CURRENTTIME => array( 1, "CURRENTTIME", "AMSERCYFOES" ),
+ MAG_NUMBEROFARTICLES => array( 1, "NUMBEROFARTICLES","NIFEROERTHYGLAU" ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, "CURRENTMONTHNAMEGEN", "GENENWMISCYFOES" ),
+ MAG_SUBST => array( 1, "SUBST:" ),
+ MAG_MSGNW => array( 0, "MSGNW:" ),
+ MAG_END => array( 0, "__DIWEDD__" ),
+ MAG_IMG_THUMBNAIL => array( 1, "ewin bawd", "bawd", "thumb", "thumbnail" ),
+ MAG_IMG_RIGHT => array( 1, "de", "right" ),
+ MAG_IMG_LEFT => array( 1, "chwith", "left" ),
+ MAG_IMG_NONE => array( 1, "dim", "none" ),
+ MAG_IMG_WIDTH => array( 1, "$1px" ),
+ MAG_IMG_CENTER => array( 1, "canol", "centre", "center" ),
+ MAG_INT => array( 0, "INT:" )
+
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesCy.php');
+}
+
+
+/** */
+require_once( 'LanguageUtf8.php' );
+
+/** @package MediaWiki */
+class LanguageCy extends LanguageUtf8 {
+
+ function getBookstoreList () {
+ global $wgBookstoreListCy;
+ return $wgBookstoreListCy;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesCy;
+ return $wgNamespaceNamesCy;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsCy;
+ return $wgQuickbarSettingsCy;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesCy;
+ return $wgSkinNamesCy;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsCy;
+ return $wgDateFormatsCy;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesCy;
+ if( isset( $wgAllMessagesCy[$key] ) ) {
+ return $wgAllMessagesCy[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ global $wgAllMessagesCy;
+ return $wgAllMessagesCy;
+ }
+
+ function getMagicWords() {
+ global $wgMagicWordsCy, $wgMagicWordsEn;
+ return $wgMagicWordsCy + $wgMagicWordsEn;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageDa.php b/languages/LanguageDa.php
new file mode 100644
index 00000000..26391067
--- /dev/null
+++ b/languages/LanguageDa.php
@@ -0,0 +1,111 @@
+<?php
+/** Danish (Dansk)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+/** */
+require_once( 'LanguageUtf8.php' );
+
+/* private */ $wgNamespaceNamesDa = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciel',
+ NS_MAIN => '',
+ NS_TALK => 'Diskussion',
+ NS_USER => 'Bruger',
+ NS_USER_TALK => 'Bruger_diskussion',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace.'_diskussion',
+ NS_IMAGE => 'Billede',
+ NS_IMAGE_TALK => 'Billede_diskussion',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_diskussion',
+ NS_TEMPLATE => 'Skabelon',
+ NS_TEMPLATE_TALK => 'Skabelon_diskussion',
+ NS_HELP => 'Hjælp',
+ NS_HELP_TALK => 'Hjælp_diskussion',
+ NS_CATEGORY => 'Kategori',
+ NS_CATEGORY_TALK => 'Kategori_diskussion'
+
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsDa = array(
+ 'Ingen', 'Fast venstre', 'Fast højre', 'Flydende venstre'
+);
+
+/* private */ $wgSkinNamesDa = array(
+ 'standard' => 'Klassisk',
+ 'nostalgia' => 'Nostalgi',
+ 'cologneblue' => 'Cologne-blå',
+) + $wgSkinNamesEn;
+
+/* private */ $wgDateFormatsDa = array();
+
+
+/* private */ $wgBookstoreListDa = array(
+ "Bibliotek.dk" => "http://bibliotek.dk/vis.php?base=dfa&origin=kommando&field1=ccl&term1=is=$1&element=L&start=1&step=10",
+ "Bogguide.dk" => "http://www.bogguide.dk/find_boeger_bog.asp?ISBN=$1",
+) + $wgBookstoreListEn;
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesDa.php');
+}
+
+/** @package MediaWiki */
+class LanguageDa extends LanguageUtf8 {
+
+ function getBookstoreList () {
+ global $wgBookstoreListDa ;
+ return $wgBookstoreListDa ;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesDa;
+ return $wgNamespaceNamesDa;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsDa;
+ return $wgQuickbarSettingsDa;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesDa;
+ return $wgSkinNamesDa;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsDa;
+ return $wgDateFormatsDa;
+ }
+
+ function date( $ts, $adj = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+
+ $d = (0 + substr( $ts, 6, 2 )) . ". " .
+ $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) . " " .
+ substr( $ts, 0, 4 );
+ return $d;
+ }
+
+ function timeanddate( $ts, $adj = false ) {
+ return $this->date( $ts, $adj ) . " kl. " . $this->time( $ts, $adj );
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesDa;
+ if( isset( $wgAllMessagesDa[$key] ) ) {
+ return $wgAllMessagesDa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageDe.php b/languages/LanguageDe.php
new file mode 100644
index 00000000..0af4ec39
--- /dev/null
+++ b/languages/LanguageDe.php
@@ -0,0 +1,115 @@
+<?php
+/** German (Deutsch)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 4563
+ */
+
+/** */
+require_once( 'LanguageUtf8.php' );
+
+/* private */ $wgNamespaceNamesDe = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Spezial',
+ NS_MAIN => '',
+ NS_TALK => 'Diskussion',
+ NS_USER => 'Benutzer',
+ NS_USER_TALK => 'Benutzer_Diskussion',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_Diskussion',
+ NS_IMAGE => 'Bild',
+ NS_IMAGE_TALK => 'Bild_Diskussion',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Diskussion',
+ NS_TEMPLATE => 'Vorlage',
+ NS_TEMPLATE_TALK => 'Vorlage_Diskussion',
+ NS_HELP => 'Hilfe',
+ NS_HELP_TALK => 'Hilfe_Diskussion',
+ NS_CATEGORY => 'Kategorie',
+ NS_CATEGORY_TALK => 'Kategorie_Diskussion'
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsDe = array(
+ 'Keine', 'Links, fest', 'Rechts, fest', 'Links, schwebend'
+);
+
+/* private */ $wgSkinNamesDe = array(
+ 'standard' => 'Klassik',
+ 'nostalgia' => 'Nostalgie',
+ 'cologneblue' => 'Kölnisch Blau',
+ 'smarty' => 'Paddington',
+ 'montparnasse' => 'Montparnasse',
+ 'davinci' => 'DaVinci',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ 'myskin' => 'MySkin',
+ 'chick' => 'Küken'
+);
+
+
+/* private */ $wgBookstoreListDe = array(
+ 'Verzeichnis lieferbarer Bücher' => 'http://www.buchhandel.de/vlb/vlb.cgi?type=voll&isbn=$1',
+ 'abebooks.de' => 'http://www.abebooks.de/servlet/BookSearchPL?ph=2&isbn=$1',
+ 'Amazon.de' => 'http://www.amazon.de/exec/obidos/ISBN=$1',
+ 'buch.de' => 'http://www.buch.de/de.buch.shop/shop/1/home/schnellsuche/buch/?fqbi=$1',
+ 'Lehmanns Fachbuchhandlung' => 'http://www.lob.de/cgi-bin/work/suche?flag=new&stich1=$1',
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesDe.php');
+}
+
+/** @package MediaWiki */
+class LanguageDe extends LanguageUtf8 {
+
+ function getBookstoreList() {
+ global $wgBookstoreListDe ;
+ return $wgBookstoreListDe ;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesDe;
+ return $wgNamespaceNamesDe;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsDe;
+ return $wgQuickbarSettingsDe;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesDe;
+ return $wgSkinNamesDe;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function formatDay( $day, $format ) {
+ return parent::formatDay( $day, $format ) . '.';
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesDe;
+ if( isset( $wgAllMessagesDe[$key] ) ) {
+ return $wgAllMessagesDe[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function linkTrail() {
+ return '/^([äöüßa-z]+)(.*)$/sDu';
+ }
+
+
+}
+
+?>
diff --git a/languages/LanguageDv.php b/languages/LanguageDv.php
new file mode 100644
index 00000000..cb4de84f
--- /dev/null
+++ b/languages/LanguageDv.php
@@ -0,0 +1,18 @@
+<?php
+/** Dhivehi language file ( ދިވެހިބަސް', )
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageDv extends LanguageUtf8 {
+ #FIXME: inherit almost everything for now
+
+ function isRTL() {
+ return true;
+ }
+}
+
+?>
diff --git a/languages/LanguageDz.php b/languages/LanguageDz.php
new file mode 100644
index 00000000..a4d8b3ef
--- /dev/null
+++ b/languages/LanguageDz.php
@@ -0,0 +1,30 @@
+<?php
+/** Dzongkha (རྫོང་ཁ)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageDz extends LanguageUtf8 {
+ function digitTransformTable() {
+ return array(
+ '0' => '༠',
+ '1' => '༡',
+ '2' => '༢',
+ '3' => '༣',
+ '4' => '༤',
+ '5' => '༥',
+ '6' => '༦',
+ '7' => '༧',
+ '8' => '༨',
+ '9' => '༩'
+ );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageEl.php b/languages/LanguageEl.php
new file mode 100644
index 00000000..9f36ef44
--- /dev/null
+++ b/languages/LanguageEl.php
@@ -0,0 +1,95 @@
+<?php
+/** Greek (Ελληνικά)
+ *
+ * Translation by Pasok Internet Volunteers
+ * http://forum.pasok.gr
+ * version 1.0 (initial release)
+ *
+ *The project for the translation of MediaWiki into Greek
+ *was undertaken by a group of ICT volunteers working under
+ *the auspices of the Greek political party PASOK.
+ *
+ *The idea behind this effort was to provide an extensible,
+ *easy-to-use and non-intimidating tool for content development
+ *and project management, to be used throughout the administrative
+ *and political structure of PASOK by staff, volunteers, party members
+ *and elected officials (all of whom possess varying degrees of ICT skills).
+ *
+ *The PASOK ICT team and the volunteers who worked on this project are
+ *now returning the translated interface to the Open-Source Community
+ *with over 98% of the messages translated into user-friendly Greek.
+ *
+ *We hope that it will be used as a tool by other civil society organizations
+ *in Greece, and that it will enhance the collective creation and the dissemination
+ *of knowledge - an essential component of the democratic process.
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesEl.php');
+}
+
+class LanguageEl extends LanguageUtf8 {
+ private $mMessagesEl, $mNamespaceNamesEl = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesEl;
+ $this->mMessagesEl =& $wgAllMessagesEl;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesEl = array(
+ NS_MEDIA => 'Μέσον',
+ NS_SPECIAL => 'Ειδικό',
+ NS_MAIN => '',
+ NS_TALK => 'Συζήτηση',
+ NS_USER => 'Χρήστης',
+ NS_USER_TALK => 'Συζήτηση_χρήστη',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_συζήτηση',
+ NS_IMAGE => 'Εικόνα',
+ NS_IMAGE_TALK => 'Συζήτηση_εικόνας',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
+ NS_TEMPLATE => 'Πρότυπο',
+ NS_TEMPLATE_TALK => 'Συζήτηση_προτύπου',
+ NS_HELP => 'Βοήθεια',
+ NS_HELP_TALK => 'Συζήτηση_βοήθειας',
+ NS_CATEGORY => 'Κατηγορία',
+ NS_CATEGORY_TALK => 'Συζήτηση_κατηγορίας',
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesEl + parent::getNamespaces();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesEl[$key] ) ) {
+ return $this->mMessagesEl[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesEl;
+ }
+
+ function fallback8bitEncoding() {
+ return 'iso-8859-7';
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageEn.php b/languages/LanguageEn.php
new file mode 100644
index 00000000..3feba177
--- /dev/null
+++ b/languages/LanguageEn.php
@@ -0,0 +1,16 @@
+<?php
+/** English (English)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+/** */
+require_once( 'LanguageUtf8.php' );
+
+/** @package MediaWiki */
+class LanguageEn extends LanguageUtf8 {
+ # Inherit everything
+}
+
+?>
diff --git a/languages/LanguageEo.php b/languages/LanguageEo.php
new file mode 100644
index 00000000..bfb5b276
--- /dev/null
+++ b/languages/LanguageEo.php
@@ -0,0 +1,177 @@
+<?php
+/** Esperanto (Esperanto)
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once('LanguageUtf8.php');
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesEo.php');
+}
+
+class LanguageEo extends LanguageUtf8 {
+ private $mMessagesEo, $mNamespaceNamesEo = null;
+
+ private $mQuickbarSettingsEo = array(
+ 'Nenia', 'Fiksiĝas maldekstre', 'Fiksiĝas dekstre', 'Ŝvebas maldekstre'
+ );
+
+ private $mSkinNamesEo = array(
+ 'standard' => 'Klasika',
+ 'nostalgia' => 'Nostalgio',
+ 'cologneblue' => 'Kolonja Bluo',
+ 'mono' => 'Senkolora',
+ 'monobook' => 'Librejo',
+ 'chick' => 'Kokido',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesEo;
+ $this->mMessagesEo =& $wgAllMessagesEo;
+
+ global $wgMetaNamespace, $wgMetaNamespaceTalk;
+ $this->mNamespaceNamesEo = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciala',
+ NS_MAIN => '',
+ NS_TALK => 'Diskuto',
+ NS_USER => 'Vikipediisto', # FIXME: Generalize v-isto kaj v-io
+ NS_USER_TALK => 'Vikipediista_diskuto',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => ( $wgMetaNamespaceTalk ? $wgMetaNamespaceTalk : $wgMetaNamespace.'_diskuto' ),
+ NS_IMAGE => 'Dosiero', #FIXME: Check the magic for Image: and Media:
+ NS_IMAGE_TALK => 'Dosiera_diskuto',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_diskuto',
+ NS_TEMPLATE => 'Ŝablono',
+ NS_TEMPLATE_TALK => 'Ŝablona_diskuto',
+ NS_HELP => 'Helpo',
+ NS_HELP_TALK => 'Helpa_diskuto',
+ NS_CATEGORY => 'Kategorio',
+ NS_CATEGORY_TALK => 'Kategoria_diskuto',
+ );
+
+ }
+ function getDefaultUserOptions () {
+ $opt = parent::getDefaultUserOptions();
+ $opt['altencoding'] = 0;
+ return $opt;
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesEo + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsEo;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesEo + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesEo[$key] ) ) {
+ return $this->mMessagesEo[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesEo;
+ }
+
+ # La dato- kaj tempo-funkciojn oni povas precizigi laŭ lingvo
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function formatDay( $day, $format ) {
+ return parent::formatDay( $day, $format ) . '.';
+ }
+
+ function iconv( $in, $out, $string ) {
+ # For most languages, this is a wrapper for iconv
+ # Por multaj lingvoj, ĉi tiu nur voku la sisteman funkcion iconv()
+ # Ni ankaŭ konvertu X-sistemajn surogotajn
+ if( strcasecmp( $in, 'x' ) == 0 and strcasecmp( $out, 'utf-8' ) == 0) {
+ $xu = array (
+ 'xx' => 'x' , 'xX' => 'x' ,
+ 'Xx' => 'X' , 'XX' => 'X' ,
+ "Cx" => "\xc4\x88" , "CX" => "\xc4\x88" ,
+ "cx" => "\xc4\x89" , "cX" => "\xc4\x89" ,
+ "Gx" => "\xc4\x9c" , "GX" => "\xc4\x9c" ,
+ "gx" => "\xc4\x9d" , "gX" => "\xc4\x9d" ,
+ "Hx" => "\xc4\xa4" , "HX" => "\xc4\xa4" ,
+ "hx" => "\xc4\xa5" , "hX" => "\xc4\xa5" ,
+ "Jx" => "\xc4\xb4" , "JX" => "\xc4\xb4" ,
+ "jx" => "\xc4\xb5" , "jX" => "\xc4\xb5" ,
+ "Sx" => "\xc5\x9c" , "SX" => "\xc5\x9c" ,
+ "sx" => "\xc5\x9d" , "sX" => "\xc5\x9d" ,
+ "Ux" => "\xc5\xac" , "UX" => "\xc5\xac" ,
+ "ux" => "\xc5\xad" , "uX" => "\xc5\xad"
+ ) ;
+ return preg_replace ( '/([cghjsu]x?)((?:xx)*)(?!x)/ei',
+ 'strtr( "$1", $xu ) . strtr( "$2", $xu )', $string );
+ } else if( strcasecmp( $in, 'UTF-8' ) == 0 and strcasecmp( $out, 'x' ) == 0 ) {
+ $ux = array (
+ 'x' => 'xx' , 'X' => 'Xx' ,
+ "\xc4\x88" => "Cx" , "\xc4\x89" => "cx" ,
+ "\xc4\x9c" => "Gx" , "\xc4\x9d" => "gx" ,
+ "\xc4\xa4" => "Hx" , "\xc4\xa5" => "hx" ,
+ "\xc4\xb4" => "Jx" , "\xc4\xb5" => "jx" ,
+ "\xc5\x9c" => "Sx" , "\xc5\x9d" => "sx" ,
+ "\xc5\xac" => "Ux" , "\xc5\xad" => "ux"
+ ) ;
+ # Double Xs only if they follow cxapelutaj literoj.
+ return preg_replace( '/((?:[cghjsu]|\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]'.
+ '|\xc5[\x9c\x9d\xac\xad])x*)/ei', 'strtr( "$1", $ux )', $string );
+ }
+ return iconv( $in, $out, $string );
+ }
+
+ function checkTitleEncoding( $s ) {
+ # Check for X-system backwards-compatibility URLs
+ $ishigh = preg_match( '/[\x80-\xff]/', $s);
+ $isutf = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+
+ if($ishigh and !$isutf) {
+ # Assume Latin1
+ $s = utf8_encode( $s );
+ } else {
+ if( preg_match( '/(\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]'.
+ '|\xc5[\x9c\x9d\xac\xad])/', $s ) )
+ return $s;
+ }
+
+ //if( preg_match( '/[cghjsu]x/i', $s ) )
+ // return $this->iconv( 'x', 'utf-8', $s );
+ return $s;
+ }
+
+ function initEncoding() {
+ global $wgEditEncoding, $wgInputEncoding, $wgOutputEncoding;
+ $wgInputEncoding = 'utf-8';
+ $wgOutputEncoding = 'utf-8';
+ $wgEditEncoding = 'x';
+ }
+
+ function setAltEncoding() {
+ global $wgEditEncoding, $wgInputEncoding, $wgOutputEncoding;
+ $wgInputEncoding = 'utf-8';
+ $wgOutputEncoding = 'x';
+ $wgEditEncoding = '';
+ }
+
+ function separatorTransformTable() {
+ return array(',' => ' ', '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageEs.php b/languages/LanguageEs.php
new file mode 100644
index 00000000..7813459f
--- /dev/null
+++ b/languages/LanguageEs.php
@@ -0,0 +1,100 @@
+<?php
+/** Spanish (Español)
+ *
+ * @bug 4401
+ * @bug 4424
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesEs.php');
+}
+
+class LanguageEs extends LanguageUtf8 {
+ private $mMessagesEs, $mNamespaceNamesEs = null;
+
+ private $mQuickbarSettingsEs = array(
+ 'Ninguna', 'Fija a la izquierda', 'Fija a la derecha', 'Flotante a la izquierda'
+ );
+
+ private $mSkinNamesEs = array(
+ 'standard' => 'Estándar',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesEs;
+ $this->mMessagesEs =& $wgAllMessagesEs;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesEs = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Especial',
+ NS_MAIN => '',
+ NS_TALK => 'Discusión',
+ NS_USER => 'Usuario',
+ NS_USER_TALK => 'Usuario_Discusión',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_Discusión',
+ NS_IMAGE => 'Imagen',
+ NS_IMAGE_TALK => 'Imagen_Discusión',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Discusión',
+ NS_TEMPLATE => 'Plantilla',
+ NS_TEMPLATE_TALK => 'Plantilla_Discusión',
+ NS_HELP => 'Ayuda',
+ NS_HELP_TALK => 'Ayuda_Discusión',
+ NS_CATEGORY => 'Categoría',
+ NS_CATEGORY_TALK => 'Categoría_Discusión',
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesEs + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsEs;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesEs + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesEs[$key] ) ) {
+ return $this->mMessagesEs[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesEs;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' ';
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageEt.php b/languages/LanguageEt.php
new file mode 100644
index 00000000..e806733c
--- /dev/null
+++ b/languages/LanguageEt.php
@@ -0,0 +1,253 @@
+<?php
+/** Estonian (Eesti)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesEt.php');
+}
+
+class LanguageEt extends LanguageUtf8 {
+ private $mMessagesEt, $mNamespaceNamesEt = null;
+
+ private $mSkinNamesEt = array(
+ 'standard' => 'Standard',
+ 'nostalgia' => 'Nostalgia',
+ 'cologneblue' => 'Kölni sinine',
+ 'smarty' => 'Paddington',
+ 'montparnasse' => 'Montparnasse',
+ 'davinci' => 'DaVinci',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ 'myskin' => 'Mu oma nahk'
+ );
+
+ private $mDateFormatsEt = array(
+ 'Eelistus puudub',
+ '15.01.2001, kell 16.12',
+ '15. jaanuar 2001, kell 16.12',
+ '15. I 2005, kell 16.12',
+ 'ISO 8601' => '2001-01-15 16:12:34'
+ );
+
+ private $mQuickbarSettingsEt = array(
+ 'Ei_ole', 'Püsivalt_vasakul', 'Püsivalt paremal', 'Ujuvalt vasakul'
+ );
+
+ #Lisasin eestimaised poed, aga võõramaiseid ei julenud kustutada.
+
+ private $mBookstoreListEt = array(
+ 'Apollo' => 'http://www.apollo.ee/search.php?keyword=$1&search=OTSI',
+ 'minu Raamat' => 'http://www.raamat.ee/advanced_search_result.php?keywords=$1',
+ 'Raamatukoi' => 'http://www.raamatukoi.ee/cgi-bin/index?valik=otsing&paring=$1',
+ 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN',
+ 'PriceSCAN' => 'http://www.pricescan.com/books/bookDetail.asp?isbn=$1',
+ 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1',
+ 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1'
+ );
+
+
+ private $mMagicWordsEt = array(
+ # ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#redirect', "#suuna" ),
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesEt;
+ $this->mMessagesEt =& $wgAllMessagesEt;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesEt = array(
+ NS_MEDIA => 'Meedia',
+ NS_SPECIAL => 'Eri',
+ NS_MAIN => '',
+ NS_TALK => 'Arutelu',
+ NS_USER => 'Kasutaja',
+ NS_USER_TALK => 'Kasutaja_arutelu',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_arutelu',
+ NS_IMAGE => 'Pilt',
+ NS_IMAGE_TALK => 'Pildi_arutelu',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_arutelu',
+ NS_TEMPLATE => 'Mall',
+ NS_TEMPLATE_TALK => 'Malli_arutelu',
+ NS_HELP => 'Juhend',
+ NS_HELP_TALK => 'Juhendi_arutelu',
+ NS_CATEGORY => 'Kategooria',
+ NS_CATEGORY_TALK => 'Kategooria_arutelu'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesEt + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsEt;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesEt + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsEt;
+ }
+
+ function getBookstoreList() {
+ return $this->mBookstoreListEt;
+ }
+
+ function &getMagicWords() {
+ $t = $this->mMagicWordsEt + parent::getMagicWords();
+ return $t;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesEt[$key] ) ) {
+ return $this->mMessagesEt[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesEt;
+ }
+
+ /**
+ * Estonian numeric formatting is 123 456,78.
+ * Notice that the space is non-breaking.
+ */
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+ /**
+ * Avoid grouping whole numbers between 0 to 9999
+ */
+ function commafy($_) {
+ if (!preg_match('/^\d{1,4}$/',$_)) {
+ return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_)));
+ } else {
+ return $_;
+ }
+ }
+
+ /**
+ * @access public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format what format to return, if it's false output the
+ * default one.
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+ global $wgAmericanDates;
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+ $datePreference = $this->dateFormat($format);
+
+ if ($datePreference == '0'
+ || $datePreference == '' ) {$datePreference = $wgAmericanDates ? '0' : '2';}
+
+ $month = $this->getMonthName( substr( $ts, 4, 2 ) );
+ $day = $this->formatNum( 0 + substr( $ts, 6, 2 ) );
+ $year = $this->formatNum( substr( $ts, 0, 4 ), true );
+ $lat_month = $this->monthByLatinNumber( substr ($ts, 4, 2));
+
+ switch( $datePreference ) {
+ case '2': return "$day. $month $year";
+ case '3': return "$day. $lat_month $year";
+ case 'ISO 8601': return substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' .substr($ts, 6, 2);
+ default: return substr($ts, 6, 2). '.' . substr($ts, 4, 2). '.' .substr($ts, 0, 4);
+ }
+ }
+
+ /**
+ * @access public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format what format to return, if it's false output the
+ * default one (default true)
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function time( $ts, $adj = false, $format = true, $timecorrection = false ) {
+ global $wgUser, $wgAmericanDates;
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+ $datePreference = $this->dateFormat($format);
+
+ if ($datePreference == '0') {$datePreference = $wgAmericanDates ? '0' : '2';}
+
+ if ( $datePreference === 'ISO 8601' ) {
+ $t = substr( $ts, 8, 2 ) . ':' . substr( $ts, 10, 2 );
+ $t .= ':' . substr( $ts, 12, 2 );
+ } else {
+ $t = substr( $ts, 8, 2 ) . '.' . substr( $ts, 10, 2 );
+ }
+ return $t;
+ }
+
+ /**
+ * @access public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format what format to return, if it's false output the
+ * default one (default true)
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false) {
+ global $wgUser, $wgAmericanDates;
+
+ $datePreference = $this->dateFormat($format);
+ switch ( $datePreference ) {
+ case 'ISO 8601': return $this->date( $ts, $adj, $datePreference, $timecorrection ) . ' ' .
+ $this->time( $ts, $adj, $datePreference, $timecorrection );
+ default: return $this->date( $ts, $adj, $datePreference, $timecorrection ) . ', kell ' .
+ $this->time( $ts, $adj, $datePreference, $timecorrection );
+
+ }
+
+ }
+
+ /**
+ * retuns latin number corresponding to given month number
+ * @access public
+ * @param number
+ * @return string
+ */
+ function monthByLatinNumber( $key ) {
+ $latinNumbers= array(
+ 'I', 'II', 'III', 'IV', 'V', 'VI',
+ 'VII','VIII','IX','X','XI','XII'
+ );
+
+ return $latinNumbers[$key-1];
+ }
+
+
+}
+?>
diff --git a/languages/LanguageEu.php b/languages/LanguageEu.php
new file mode 100644
index 00000000..72deced8
--- /dev/null
+++ b/languages/LanguageEu.php
@@ -0,0 +1,83 @@
+<?php
+/** Basque (Euskara)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesEu.php');
+}
+
+class LanguageEu extends LanguageUtf8 {
+ private $mMessagesEu, $mNamespaceNamesEu = null;
+
+ private $mQuickbarSettingsEu = array(
+ 'Ezein ere', 'Eskuinean', 'Ezkerrean', 'Ezkerrean mugikor'
+ );
+
+ private $mSkinNamesEu = array(
+ 'standard' => 'Lehenetsia',
+ 'nostalgia' => 'Nostalgia',
+ 'cologneblue' => 'Cologne Blue',
+ 'smarty' => 'Paddington',
+ 'montparnasse' => 'Montparnasse'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesEu;
+ $this->mMessagesEu =& $wgAllMessagesEu;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesEu = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Aparteko',
+ NS_MAIN => '',
+ NS_TALK => 'Eztabaida',
+ NS_USER => 'Lankide',
+ NS_USER_TALK => 'Lankide_eztabaida',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace.'_eztabaida',
+ NS_IMAGE => 'Irudi',
+ NS_IMAGE_TALK => 'Irudi_eztabaida',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_eztabaida',
+ NS_TEMPLATE => 'Txantiloi',
+ NS_TEMPLATE_TALK => 'Txantiloi_eztabaida',
+ NS_CATEGORY => 'Kategoria',
+ NS_CATEGORY_TALK => 'Kategoria_eztabaida',
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesEu + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsEu;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesEu + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesEu[$key] ) ) {
+ return $this->mMessagesEu[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesEu;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageFa.php b/languages/LanguageFa.php
new file mode 100644
index 00000000..43f5555e
--- /dev/null
+++ b/languages/LanguageFa.php
@@ -0,0 +1,113 @@
+<?php
+/** Persian (فارسی)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesFa.php');
+}
+
+class LanguageFa extends LanguageUtf8 {
+ private $mMessagesFa, $mNamespaceNamesFa = null;
+
+ private $mQuickbarSettingsFa = array(
+ 'نباشد', 'ثابت چپ', 'ثابت راست', 'شناور چپ'
+ );
+
+ private $mSkinNamesFa = array(
+ 'standard' => 'استاندارد',
+ 'nostalgia' => 'نوستالژی',
+ 'cologneblue' => 'آبی کلون',
+ 'smarty' => 'پدینگتون',
+ 'montparnasse' => 'مون‌پارناس',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesFa;
+ $this->mMessagesFa =& $wgAllMessagesFa;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesFa = array(
+ NS_MEDIA => 'مدیا',
+ NS_SPECIAL => 'ویژه',
+ NS_MAIN => '',
+ NS_TALK => 'بحث',
+ NS_USER => 'کاربر',
+ NS_USER_TALK => 'بحث_کاربر',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'بحث_' . $wgMetaNamespace,
+ NS_IMAGE => 'تصویر',
+ NS_IMAGE_TALK => 'بحث_تصویر',
+ NS_MEDIAWIKI => 'مدیاویکی',
+ NS_MEDIAWIKI_TALK => 'بحث_مدیاویکی',
+ NS_TEMPLATE => 'الگو',
+ NS_TEMPLATE_TALK => 'بحث_الگو',
+ NS_HELP => 'راهنما',
+ NS_HELP_TALK => 'بحث_راهنما',
+ NS_CATEGORY => 'رده',
+ NS_CATEGORY_TALK => 'بحث_رده'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesFa + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsFa;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesFa + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesFa[$key] ) ) {
+ return $this->mMessagesFa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesFa;
+ }
+
+ function digitTransformTable() {
+ return array(
+ "0" => "۰",
+ "1" => "۱",
+ "2" => "۲",
+ "3" => "۳",
+ "4" => "۴",
+ "5" => "۵",
+ "6" => "۶",
+ "7" => "۷",
+ "8" => "۸",
+ "9" => "۹",
+ "%" => "٪",
+ "." => "٫", // wrong table?
+ "," => "٬"
+ );
+ }
+
+ function getDefaultUserOptions() {
+ $opt = Language::getDefaultUserOptions();
+ $opt['quickbar'] = 2;
+ $opt['underline'] = 0;
+ return $opt;
+ }
+
+
+ # For right-to-left language support
+ function isRTL() { return true; }
+
+}
+?>
diff --git a/languages/LanguageFi.php b/languages/LanguageFi.php
new file mode 100644
index 00000000..7f075713
--- /dev/null
+++ b/languages/LanguageFi.php
@@ -0,0 +1,327 @@
+<?php
+/** Finnish (Suomi)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Niklas Laxström
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesFi.php');
+}
+
+class LanguageFi extends LanguageUtf8 {
+ private $mMessagesFi, $mNamespaceNamesFi = null;
+
+ private $mSkinNamesFi = array(
+ 'standard' => 'Perus',
+ 'cologneblue' => 'Kölnin sininen',
+ 'myskin' => 'Oma tyylisivu'
+ );
+
+ private $mQuickbarSettingsFi = array(
+ 'Ei mitään', 'Tekstin mukana, vasen', 'Tekstin mukana, oikea', 'Pysyen vasemmalla', 'Pysyen oikealla'
+ );
+
+ private $mDateFormatsFi = array(
+ MW_DATE_DEFAULT => 'Ei valintaa',
+ 1 => '15. tammikuuta 2001 kello 16.12',
+ 2 => '15. tammikuuta 2001 kello 16:12:34',
+ 3 => '15.1.2001 16.12',
+ MW_DATE_ISO => '2001-01-15 16:12:34'
+ );
+
+ private $mBookstoreListFi = array(
+ 'Bookplus' => 'http://www.bookplus.fi/product.php?isbn=$1',
+ 'Helsingin yliopiston kirjasto' => 'http://pandora.lib.hel.fi/cgi-bin/mhask/monihask.py?volname=&author=&keyword=&ident=$1&submit=Hae&engine_helka=ON',
+ 'Pääkaupunkiseudun kirjastot' => 'http://www.helmet.fi/search*fin/i?SEARCH=$1',
+ 'Tampereen seudun kirjastot' => 'http://kirjasto.tampere.fi/Piki?formid=fullt&typ0=6&dat0=$1'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesFi;
+ $this->mMessagesFi =& $wgAllMessagesFi;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesFi = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Toiminnot',
+ NS_MAIN => '',
+ NS_TALK => 'Keskustelu',
+ NS_USER => 'Käyttäjä',
+ NS_USER_TALK => 'Keskustelu_käyttäjästä',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Keskustelu_' . $this->convertGrammar( $wgMetaNamespace, 'elative' ),
+ NS_IMAGE => 'Kuva',
+ NS_IMAGE_TALK => 'Keskustelu_kuvasta',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
+ NS_TEMPLATE => 'Malline',
+ NS_TEMPLATE_TALK => 'Keskustelu_mallineesta',
+ NS_HELP => 'Ohje',
+ NS_HELP_TALK => 'Keskustelu_ohjeesta',
+ NS_CATEGORY => 'Luokka',
+ NS_CATEGORY_TALK => 'Keskustelu_luokasta'
+ );
+
+ }
+
+ function getBookstoreList () {
+ return $this->mBookstoreListFi;
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesFi + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsFi;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesFi + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsFi;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesFi[$key] ) ) {
+ return $this->mMessagesFi[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesFi;
+ }
+
+ /**
+ * See Language.php for documentation
+ */
+ function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+ $yyyy = substr( $ts, 0, 4 );
+ $mm = substr( $ts, 4, 2 );
+ $m = 0 + $mm;
+ $mmmm = $this->getMonthName( $mm ) . 'ta';
+ $dd = substr( $ts, 6, 2 );
+ $d = 0 + $dd;
+
+ $datePreference = $this->dateFormat($format);
+ switch( $datePreference ) {
+ case '3': return "$d.$m.$yyyy";
+ case MW_DATE_ISO: return "$yyyy-$mm-$dd";
+ default: return "$d. $mmmm $yyyy";
+ }
+ }
+
+ /**
+ * See Language.php for documentation
+ */
+ function time( $ts, $adj = false, $format = true, $timecorrection = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+ $hh = substr( $ts, 8, 2 );
+ $mm = substr( $ts, 10, 2 );
+ $ss = substr( $ts, 12, 2 );
+
+ $datePreference = $this->dateFormat($format);
+ switch( $datePreference ) {
+ case '2':
+ case MW_DATE_ISO: return "$hh:$mm:$ss";
+ default: return "$hh.$mm";
+ }
+ }
+
+ /**
+ * See Language.php for documentation
+ */
+ function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false) {
+ $date = $this->date( $ts, $adj, $format, $timecorrection );
+ $time = $this->time( $ts, $adj, $format, $timecorrection );
+
+ $datePreference = $this->dateFormat($format);
+ switch( $datePreference ) {
+ case '3':
+ case MW_DATE_ISO: return "$date $time";
+ default: return "$date kello $time";
+ }
+ }
+
+ /**
+ * Finnish numeric formatting is 123 456,78.
+ */
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+ /**
+ * Avoid grouping whole numbers between 0 to 9999
+ */
+ function commafy($_) {
+ if (!preg_match('/^\d{1,4}$/',$_)) {
+ return strrev((string)preg_replace('/(\d{3})(?=\d)(?!\d*\.)/','$1,',strrev($_)));
+ } else {
+ return $_;
+ }
+ }
+
+ function linkTrail() {
+ return '/^([a-zäö]+)(.*)$/sDu';
+ }
+
+
+ # 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['fi'][$case][$word]) ) {
+ return $wgGrammarForms['fi'][$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.
+ switch ( $case ) {
+ case 'genitive':
+ if ( $word == 'Wikisitaatit' ) {
+ $word = 'Wikisitaattien';
+ } else {
+ $word .= 'n';
+ }
+ break;
+ case 'elative':
+ if ( $word == 'Wikisitaatit' ) {
+ $word = 'Wikisitaateista';
+ } else {
+ if ( mb_substr($word, -1) == 'y' ) {
+ $word .= 'stä';
+ } else {
+ $word .= 'sta';
+ }
+ }
+ break;
+ case 'partitive':
+ if ( $word == 'Wikisitaatit' ) {
+ $word = 'Wikisitaatteja';
+ } else {
+ if ( mb_substr($word, -1) == 'y' ) {
+ $word .= 'ä';
+ } else {
+ $word .= 'a';
+ }
+ }
+ break;
+ case 'illative':
+ # Double the last letter and add 'n'
+ # mb_substr has a compatibility function in GlobalFunctions.php
+ if ( $word == 'Wikisitaatit' ) {
+ $word = 'Wikisitaatteihin';
+ } else {
+ $word = $word . mb_substr($word,-1) . 'n';
+ }
+ break;
+ case 'inessive':
+ if ( $word == 'Wikisitaatit' ) {
+ $word = 'Wikisitaateissa';
+ } else {
+ if ( mb_substr($word, -1) == 'y' ) {
+ $word .= 'ssä';
+ } else {
+ $word .= 'ssa';
+ }
+ }
+ break;
+
+ }
+ return $word;
+ }
+
+ function translateBlockExpiry( $str ) {
+ /*
+ 'ago', 'now', 'today', 'this', 'next',
+ 'first', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'eighth', 'ninth', 'tenth', 'eleventh', 'twelfth',
+ 'tomorrow', 'yesterday'
+
+ $months = 'january:tammikuu,february:helmikuu,march:maaliskuu,april:huhtikuu,may:toukokuu,june:kesäkuu,' .
+ 'july:heinäkuu,august:elokuu,september:syyskuu,october:lokakuu,november:marraskuu,december:joulukuu,' .
+ 'jan:tammikuu,feb:helmikuu,mar:maaliskuu,apr:huhtikuu,jun:kesäkuu,jul:heinäkuu,aug:elokuu,sep:syyskuu,'.
+ 'oct:lokakuu,nov:marraskuu,dec:joulukuu,sept:syyskuu';
+ */
+ $weekds = array(
+ 'monday' => 'maanantai',
+ 'tuesday' => 'tiistai',
+ 'wednesday' => 'keskiviikko',
+ 'thursay' => 'torstai',
+ 'friday' => 'perjantai',
+ 'saturday' => 'lauantai',
+ 'sunday' => 'sunnuntai',
+ 'mon' => 'ma',
+ 'tue' => 'ti',
+ 'tues' => 'ti',
+ 'wed' => 'ke',
+ 'wednes' => 'ke',
+ 'thu' => 'to',
+ 'thur' => 'to',
+ 'thurs' => 'to',
+ 'fri' => 'pe',
+ 'sat' => 'la',
+ 'sun' => 'su',
+ 'next' => 'seuraava',
+ 'tomorrow' => 'huomenna',
+ 'ago' => 'sitten',
+ 'seconds' => 'sekuntia',
+ 'second' => 'sekunti',
+ 'secs' => 's',
+ 'sec' => 's',
+ 'minutes' => 'minuuttia',
+ 'minute' => 'minuutti',
+ 'mins' => 'min',
+ 'min' => 'min',
+ 'days' => 'päivää',
+ 'day' => 'päivä',
+ 'hours' => 'tuntia',
+ 'hour' => 'tunti',
+ 'weeks' => 'viikkoa',
+ 'week' => 'viikko',
+ 'fortnights' => 'tuplaviikkoa',
+ 'fortnight' => 'tuplaviikko',
+ 'months' => 'kuukautta',
+ 'month' => 'kuukausi',
+ 'years' => 'vuotta',
+ 'year' => 'vuosi',
+ 'infinite' => 'ikuisesti',
+ 'indefinite' => 'ikuisesti'
+ );
+
+ $final = '';
+ $tokens = explode ( ' ', $str);
+ foreach( $tokens as $item ) {
+ if ( !is_numeric($item) ) {
+ if ( count ( explode( '-', $item ) ) == 3 && strlen($item) == 10 ) {
+ list( $yyyy, $mm, $dd ) = explode( '-', $item );
+ $final .= ' ' . $this->date( "{$yyyy}{$mm}{$dd}00000000");
+ continue;
+ }
+ if( isset( $weekds[$item] ) ) {
+ $final .= ' ' . $weekds[$item];
+ continue;
+ }
+ }
+
+ $final .= ' ' . $item;
+ }
+ return '<span class="blockexpiry" title="' . htmlspecialchars($str). '">”' . trim( $final ) . '”</span>';
+ }
+
+}
+
+?>
diff --git a/languages/LanguageFo.php b/languages/LanguageFo.php
new file mode 100644
index 00000000..6df7bd73
--- /dev/null
+++ b/languages/LanguageFo.php
@@ -0,0 +1,109 @@
+<?php
+/** Faroese (Føroyskt)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php');
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesFo.php');
+}
+
+class LanguageFo extends LanguageUtf8 {
+ private $mMessagesFo, $mNamespaceNamesFo = null;
+
+ private $mQuickbarSettingsFo = array(
+ 'Eingin', 'Fast vinstru', 'Fast høgru', 'Flótandi vinstru'
+ );
+
+ private $mSkinNamesFo = array(
+ 'Standardur', 'Nostalgiskur', 'Cologne-bláur', 'Paddington', 'Montparnasse'
+ );
+
+ private $mBookstoreListFo = array(
+ 'Bokasolan.fo' => 'http://www.bokasolan.fo/vleitari.asp?haattur=bok.alfa&Heiti=&Hovindur=&Forlag=&innbinding=Oell&bolkur=Allir&prisur=Allir&Aarstal=Oell&mal=Oell&status=Oell&ISBN=$1',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesFo;
+ $this->mMessagesFo =& $wgAllMessagesFo;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesFo = array(
+ NS_MEDIA => 'Miðil',
+ NS_SPECIAL => 'Serstakur',
+ NS_MAIN => '',
+ NS_TALK => 'Kjak',
+ NS_USER => 'Brúkari',
+ NS_USER_TALK => 'Brúkari_kjak',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_kjak',
+ NS_IMAGE => 'Mynd',
+ NS_IMAGE_TALK => 'Mynd_kjak',
+ NS_MEDIAWIKI => 'MidiaWiki',
+ NS_MEDIAWIKI_TALK => 'MidiaWiki_kjak',
+ NS_TEMPLATE => 'Fyrimynd',
+ NS_TEMPLATE_TALK => 'Fyrimynd_kjak',
+ NS_HELP => 'Hjálp',
+ NS_HELP_TALK => 'Hjálp_kjak',
+ NS_CATEGORY => 'Bólkur',
+ NS_CATEGORY_TALK => 'Bólkur_kjak'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesFo + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsFo;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesFo + parent::getSkinNames();
+ }
+
+ function getBookstoreList() {
+ return $this->mBookstoreListFo + parent::getBookstoreList();
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesFo[$key] ) ) {
+ return $this->mMessagesFo[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesFo;
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' kl. ';
+ }
+
+ function timeBeforeDate() {
+ return false;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function formatDay( $day, $format ) {
+ return $this->formatNum( 0 + $day, true ) . '.';
+ }
+
+}
+
+?>
diff --git a/languages/LanguageFr.php b/languages/LanguageFr.php
new file mode 100644
index 00000000..b9c262a6
--- /dev/null
+++ b/languages/LanguageFr.php
@@ -0,0 +1,119 @@
+<?php
+/** French (Français)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesFr.php');
+}
+
+class LanguageFr extends LanguageUtf8 {
+ private $mMessagesFr, $mNamespaceNamesFr = null;
+
+ private $mQuickbarSettingsFr = array(
+ 'Aucune', 'Gauche', 'Droite', 'Flottante à gauche'
+ );
+
+ private $mSkinNamesFr = array(
+ 'standard' => 'Standard',
+ 'nostalgia' => 'Nostalgie',
+ );
+
+ private $mBookstoreListFr = array(
+ 'Amazon.fr' => 'http://www.amazon.fr/exec/obidos/ISBN=$1',
+ 'alapage.fr' => 'http://www.alapage.com/mx/?tp=F&type=101&l_isbn=$1&donnee_appel=ALASQ&devise=&',
+ 'fnac.com' => 'http://www3.fnac.com/advanced/book.do?isbn=$1',
+ 'chapitre.com' => 'http://www.chapitre.com/frame_rec.asp?isbn=$1',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesFr;
+ $this->mMessagesFr =& $wgAllMessagesFr;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesFr = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_MAIN => '',
+ NS_TALK => 'Discuter',
+ NS_USER => 'Utilisateur',
+ NS_USER_TALK => 'Discussion_Utilisateur',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Discussion_' . $wgMetaNamespace,
+ NS_IMAGE => 'Image',
+ NS_IMAGE_TALK => 'Discussion_Image',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discussion_MediaWiki',
+ NS_TEMPLATE => 'Modèle',
+ NS_TEMPLATE_TALK => 'Discussion_Modèle',
+ NS_HELP => 'Aide',
+ NS_HELP_TALK => 'Discussion_Aide',
+ NS_CATEGORY => 'Catégorie',
+ NS_CATEGORY_TALK => 'Discussion_Catégorie'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesFr + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsFr;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesFr + parent::getSkinNames();
+ }
+
+ function getBookstoreList() {
+ return $this->mBookstoreListFr;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesFr[$key] ) ) {
+ return $this->mMessagesFr[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesFr;
+ }
+
+ function getNsIndex( $text ) {
+ global $wgSitename;
+
+ foreach ( $this->mNamespaceNamesFr as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ if( $wgSitename == 'Wikipédia' ) {
+ if( 0 == strcasecmp( 'Wikipedia', $text ) ) return NS_PROJECT;
+ if( 0 == strcasecmp( 'Discussion_Wikipedia', $text ) ) return NS_PROJECT_TALK;
+ }
+ return false;
+ }
+
+ function timeBeforeDate( $format ) {
+ return false;
+ }
+
+ function timeDateSeparator( $format ) {
+ return " à ";
+ }
+
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageFur.php b/languages/LanguageFur.php
new file mode 100644
index 00000000..fa5ef434
--- /dev/null
+++ b/languages/LanguageFur.php
@@ -0,0 +1,105 @@
+<?php
+/** Friulian (Furlan)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesFur.php');
+}
+
+class LanguageFur extends LanguageUtf8 {
+ private $mMessagesFur, $mNamespaceNamesFur = null;
+
+ private $mQuickbarSettingsFur = array(
+ 'Nissune', 'Fis a Çampe', 'Fis a Drete', 'Flutuant a çampe'
+ );
+
+ private $mSkinNamesFur = array(
+ 'nostalgia' => 'Nostalgie',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesFur;
+ $this->mMessagesFur =& $wgAllMessagesFur;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesFur = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciâl',
+ NS_MAIN => '',
+ NS_TALK => 'Discussion',
+ NS_USER => 'Utent',
+ NS_USER_TALK => 'Discussion_utent',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Discussion_' . $wgMetaNamespace,
+ NS_IMAGE => 'Figure',
+ NS_IMAGE_TALK => 'Discussion_figure',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discussion_MediaWiki',
+ NS_TEMPLATE => 'Model',
+ NS_TEMPLATE_TALK => 'Discussion_model',
+ NS_HELP => 'Jutori',
+ NS_HELP_TALK => 'Discussion_jutori',
+ NS_CATEGORY => 'Categorie',
+ NS_CATEGORY_TALK => 'Discussion_categorie'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesFur + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsFur;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesFur + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesFur[$key] ) ) {
+ return $this->mMessagesFur[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesFur;
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' a lis ';
+ }
+
+ function timeBeforeDate() {
+ return false;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function formatDay( $day, $format ) {
+ return $this->formatNum( 0 + $day, true ) . ' di ';
+ }
+
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageFy.php b/languages/LanguageFy.php
new file mode 100644
index 00000000..84f381d8
--- /dev/null
+++ b/languages/LanguageFy.php
@@ -0,0 +1,121 @@
+<?php
+/** Frisian (Frysk)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Niklas Laxström
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesFy.php');
+}
+
+class LanguageFy extends LanguageUtf8 {
+ private $mMessagesFy, $mNamespaceNamesFy = null;
+
+ private $mQuickbarSettingsFy = array(
+ 'Ut', 'Lofts fêst', 'Rjochts fêst', 'Lofts sweevjend'
+ );
+
+ private $mSkinNamesFy = array(
+ 'standard' => 'Standert',
+ 'nostalgia' => 'Nostalgy',
+ );
+
+ private $mDateFormatsFy = array(
+ 'Gjin foarkar',
+ '16.12, jan 15, 2001',
+ '16.12, 15 jan 2001',
+ '16.12, 2001 jan 15',
+ 'ISO 8601' => '2001-01-15 16:12:34'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesFy;
+ $this->mMessagesFy =& $wgAllMessagesFy;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesFy = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Wiki',
+ NS_MAIN => '',
+ NS_TALK => 'Oerlis',
+ NS_USER => 'Meidogger',
+ NS_USER_TALK => 'Meidogger_oerlis',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_oerlis',
+ NS_IMAGE => 'Ofbyld',
+ NS_IMAGE_TALK => 'Ofbyld_oerlis',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_oerlis',
+ NS_TEMPLATE => 'Berjocht',
+ NS_TEMPLATE_TALK => 'Berjocht_oerlis',
+ NS_HELP => 'Hulp',
+ NS_HELP_TALK => 'Hulp_oerlis',
+ NS_CATEGORY => 'Kategory',
+ NS_CATEGORY_TALK => 'Kategory_oerlis'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesFy + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsFy;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesFy + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsFy;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesFy[$key] ) ) {
+ return $this->mMessagesFy[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesFy;
+ }
+
+ function getNsIndex( $text ) {
+ foreach ( $this->mNamespaceNamesFy as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ if ( 0 == strcasecmp( "Brûker", $text ) ) return 2;
+ if ( 0 == strcasecmp( "Brûker_oerlis", $text ) ) return 3;
+ return false;
+ }
+
+ function timeSeparator( $format ) {
+ return '.';
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function linkTrail() {
+ return '/^([a-zàáèéìíòóùúâêîôûäëïöü]+)(.*)$/sDu';
+ }
+
+}
+
+?>
diff --git a/languages/LanguageGa.php b/languages/LanguageGa.php
new file mode 100644
index 00000000..02e00c80
--- /dev/null
+++ b/languages/LanguageGa.php
@@ -0,0 +1,219 @@
+<?php
+/** Irish (Gaeilge)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesGa.php');
+}
+
+class LanguageGa extends LanguageUtf8 {
+ private $mMessagesGa, $mNamespaceNamesGa = null;
+
+ private $mQuickbarSettingsGa = array(
+ 'Faic', 'Greamaithe ar chlé', 'Greamaithe ar dheis', 'Ag faoileáil ar chlé', 'Ag faoileáil ar dheis'
+ );
+
+ private $mSkinNamesGa = array(
+ 'standard' => 'Gnáth',
+ 'nostalgia' => 'Sean-nós',
+ 'cologneblue' => 'Gorm na Colóna',
+ 'smarty' => 'Paddington',
+ 'montparnasse' => 'Montparnasse',
+ 'davinci' => 'DaVinci',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ 'myskin' => 'MySkin',
+ 'chick' => 'Chick'
+ );
+
+ private $mDateFormatsGa = array(
+ 'Is cuma liom',
+ '16:12, Eanáir 15, 2001',
+ '16:12, 15 Eanáir 2001',
+ '16:12, 2001 Eanáir 15',
+ 'ISO 8601' => '2001-01-15 16:12:34'
+ );
+
+ private $mMagicWordsGa = array(
+ # ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#redirect', '#athsheoladh' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__GANCÁ__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__CÁGACHUAIR__' ),
+ MAG_TOC => array( 0, '__TOC__', '__CÁ__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__GANMHÍRATHRÚ__' ),
+ MAG_START => array( 0, '__START__', '__TÚS__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'MÍLÁITHREACH' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'AINMNAMÍOSALÁITHREAÍ' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'GINAINMNAMÍOSALÁITHREAÍ' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'GIORRÚNAMÍOSALÁITHREAÍ' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'LÁLÁITHREACH' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'AINMANLAELÁITHRIGH' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'BLIAINLÁITHREACH' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'AMLÁITHREACH' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'LÍONNANALT' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES', 'LÍONNAGCOMHAD' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'AINMANLGH' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'AINMANLGHB' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'AINMSPÁS' ),
+ MAG_MSG => array( 0, 'MSG:', 'TCHT:' ),
+ MAG_SUBST => array( 0, 'SUBST:', 'IONAD:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'TCHTFS:' ),
+ MAG_END => array( 0, '__END__', '__DEIREADH__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'mionsamhail', 'mion' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'deas' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'clé' ),
+ MAG_IMG_NONE => array( 1, 'none', 'faic' ),
+ MAG_IMG_WIDTH => array( 1, '$1px' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'lár' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'fráma', 'frámaithe' ),
+ MAG_INT => array( 0, 'INT:', 'INMH:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'AINMANTSUÍMH' ),
+ MAG_NS => array( 0, 'NS:', 'AS:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'URLÁITIÚIL' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'URLÁITIÚILB' ),
+ MAG_SERVER => array( 0, 'SERVER', 'FREASTALAÍ' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME', 'AINMANFHREASTALAÍ' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH', 'SCRIPTCHOSÁN' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'GRAMADACH:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__GANTIONTÚNADTEIDEAL__', '__GANTT__'),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__GANTIONTÚNANÁBHAIR__', '__GANTA__' ),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK', 'SEACHTAINLÁITHREACH' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW', 'LÁLÁITHREACHNAS' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID', 'IDANLEASAITHE' ),
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesGa;
+ $this->mMessagesGa =& $wgAllMessagesGa;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesGa = array(
+ NS_MEDIA => 'Meán',
+ NS_SPECIAL => 'Speisialta',
+ NS_MAIN => '',
+ NS_TALK => 'Plé',
+ NS_USER => 'Úsáideoir',
+ NS_USER_TALK => 'Plé_úsáideora',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Plé_' . $this->convertGrammar( $wgMetaNamespace, 'genitive' ),
+ NS_IMAGE => 'Íomhá',
+ NS_IMAGE_TALK => 'Plé_íomhá',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Plé_MediaWiki',
+ NS_TEMPLATE => 'Teimpléad',
+ NS_TEMPLATE_TALK => 'Plé_teimpléid',
+ NS_HELP => 'Cabhair',
+ NS_HELP_TALK => 'Plé_cabhrach',
+ NS_CATEGORY => 'Catagóir',
+ NS_CATEGORY_TALK => 'Plé_catagóire'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesGa + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsGa;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesGa + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsGa;
+ }
+
+ function &getMagicWords() {
+ $t = $this->mMagicWordsGa + parent::getMagicWords();
+ return $t;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesGa[$key] ) ) {
+ return $this->mMessagesGa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesGa;
+ }
+
+
+ /**
+ * Get a namespace key by value, case insensetive.
+ *
+ * @param string $text
+ * @return mixed An integer if $text is a valid value otherwise false
+ */
+ function getNsIndex( $text ) {
+ $ns = $this->getNamespaces();
+
+ foreach ( $ns as $i => $n ) {
+ if ( strcasecmp( $n, $text ) == 0)
+ return $i;
+ }
+
+ if ( strcasecmp( 'Plé_í­omhá', $text) == 0) return NS_IMAGE_TALK;
+ if ( strcasecmp( 'Múnla', $text) == 0) return NS_TEMPLATE;
+ if ( strcasecmp( 'Plé_múnla', $text) == 0) return NS_TEMPLATE_TALK;
+ if ( strcasecmp( 'Rang', $text) == 0) return NS_CATEGORY;
+
+ return false;
+ }
+
+ # Convert day names
+ # Invoked with {{GRAMMAR:transformation|word}}
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['ga'][$case][$word]) ) {
+ return $wgGrammarForms['ga'][$case][$word];
+ }
+
+ switch ( $case ) {
+ case 'genitive':
+ switch ($word) {
+ case 'Vicipéid': $word = 'Vicipéide'; break;
+ case 'Vicífhoclóir': $word = 'Vicífhoclóra'; break;
+ case 'Vicíleabhair': $word = 'Vicíleabhar'; break;
+ case 'Vicíshliocht': $word = 'Vicíshleachta'; break;
+ case 'Vicífhoinse': $word = 'Vicífhoinse'; break;
+ case 'Vicíghnéithe': $word = 'Vicíghnéithe'; break;
+ case 'Vicínuacht': $word = 'Vicínuachta'; break;
+ }
+
+ case 'ainmlae':
+ switch ($word) {
+ case 'an Domhnach':
+ $word = 'Dé Domhnaigh'; break;
+ case 'an Luan':
+ $word = 'Dé Luain'; break;
+ case 'an Mháirt':
+ $word = 'Dé Mháirt'; break;
+ case 'an Chéadaoin':
+ $word = 'Dé Chéadaoin'; break;
+ case 'an Déardaoin':
+ $word = 'Déardaoin'; break;
+ case 'an Aoine':
+ $word = 'Dé hAoine'; break;
+ case 'an Satharn':
+ $word = 'Dé Sathairn'; break;
+ }
+ }
+ return $word;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageGn.deps.php b/languages/LanguageGn.deps.php
new file mode 100644
index 00000000..5cf20904
--- /dev/null
+++ b/languages/LanguageGn.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageGn.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageEs.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageGn.php b/languages/LanguageGn.php
new file mode 100644
index 00000000..07853350
--- /dev/null
+++ b/languages/LanguageGn.php
@@ -0,0 +1,28 @@
+<?php
+/** Guaraní (avañe'ẽ)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageEs.php';
+
+class LanguageGn extends LanguageEs {
+
+ function getFallbackLanguage() {
+ return 'es';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageGsw.deps.php b/languages/LanguageGsw.deps.php
new file mode 100644
index 00000000..65a0e398
--- /dev/null
+++ b/languages/LanguageGsw.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageGsw.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageDe.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageGsw.php b/languages/LanguageGsw.php
new file mode 100644
index 00000000..72dd713b
--- /dev/null
+++ b/languages/LanguageGsw.php
@@ -0,0 +1,115 @@
+<?php
+/** Alemannic (Alemannisch)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+/*
+<Melancholie> for the moment it would be the best if LanguageAls.php would be
+ the same like LanguageDe.php. That would help us a lot at als.
+<Melancholie> at the moment all is in English
+<TimStarling> ok
+<Melancholie> great
+<TimStarling> I'll make a stub language file that fetches everything from de
+<Melancholie> cool
+*/
+
+include_once( "LanguageDe.php" );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesGsw.php');
+}
+
+class LanguageGsw extends LanguageDe {
+ private $mMessagesGsw = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesGsw;
+ $this->mMessagesGsw =& $wgAllMessagesGsw;
+
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesGsw[$key] ) ) {
+ return $this->mMessagesGsw[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesGsw;
+ }
+
+ function getFallbackLanguage() {
+ return 'de';
+ }
+
+ function linkTrail() {
+ return '/^([äöüßa-z]+)(.*)$/sDu';
+ }
+
+ # Convert from the nominative form of a noun to some other case
+ # Invoked with result
+
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['gsw'][$case][$word]) ) {
+ return $wgGrammarForms['gsw'][$case][$word];
+ }
+ switch ( $case ) {
+ case 'dativ':
+ if ( $word == 'Wikipedia' ) {
+ $word = 'vo de Wikipedia';
+ } elseif ( $word == 'Wikinorchrichte' ) {
+ $word = 'vo de Wikinochrichte';
+ } elseif ( $word == 'Wiktionaire' ) {
+ $word = 'vom Wiktionaire';
+ } elseif ( $word == 'Wikibuecher' ) {
+ $word = 'vo de Wikibuecher';
+ } elseif ( $word == 'Wikisprüch' ) {
+ $word = 'vo de Wikisprüch';
+ } elseif ( $word == 'Wikiquälle' ) {
+ $word = 'vo de Wikiquälle';
+ }
+ break;
+ case 'akkusativ':
+ if ( $word == 'Wikipedia' ) {
+ $word = 'd Wikipedia';
+ } elseif ( $word == 'Wikinorchrichte' ) {
+ $word = 'd Wikinochrichte';
+ } elseif ( $word == 'Wiktionaire' ) {
+ $word = 's Wiktionaire';
+ } elseif ( $word == 'Wikibuecher' ) {
+ $word = 'd Wikibuecher';
+ } elseif ( $word == 'Wikisprüch' ) {
+ $word = 'd Wikisprüch';
+ } elseif ( $word == 'Wikiquälle' ) {
+ $word = 'd Wikiquälle';
+ }
+ break;
+ case 'nominativ':
+ if ( $word == 'Wikipedia' ) {
+ $word = 'd Wikipedia';
+ } elseif ( $word == 'Wikinorchrichte' ) {
+ $word = 'd Wikinochrichte';
+ } elseif ( $word == 'Wiktionaire' ) {
+ $word = 's Wiktionaire';
+ } elseif ( $word == 'Wikibuecher' ) {
+ $word = 'd Wikibuecher';
+ } elseif ( $word == 'Wikisprüch' ) {
+ $word = 'd Wikisprüch';
+ } elseif ( $word == 'Wikiquälle' ) {
+ $word = 'd Wikiquälle';
+ }
+ break;
+ }
+ return $word;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageGu.php b/languages/LanguageGu.php
new file mode 100644
index 00000000..8e20e078
--- /dev/null
+++ b/languages/LanguageGu.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageGu extends LanguageUtf8 {
+ function digitTransformTable() {
+ return array(
+ '0' => '૦',
+ '1' => '૧',
+ '2' => '૨',
+ '3' => '૩',
+ '4' => '૪',
+ '5' => '૫',
+ '6' => '૬',
+ '7' => '૭',
+ '8' => '૮',
+ '9' => '૯'
+ );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageHe.php b/languages/LanguageHe.php
new file mode 100644
index 00000000..80238514
--- /dev/null
+++ b/languages/LanguageHe.php
@@ -0,0 +1,309 @@
+<?php
+/**
+ * Hebrew (עברית)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Rotem Dan (July 2003)
+ * @author Rotem Liss (March 2006 on)
+ */
+
+require_once("LanguageUtf8.php");
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesHe.php');
+}
+
+class LanguageHe extends LanguageUtf8 {
+ private $mMessagesHe, $mNamespaceNamesHe = null;
+
+ private $mSkinNamesHe = array(
+ "standard" => "רגיל",
+ "nostalgia" => "נוסטלגי",
+ "cologneblue" => "מים כחולים",
+ "davinci" => "דה־וינצ'י",
+ "simple" => "פשוט",
+ "mono" => "מונו",
+ "monobook" => "מונובוק",
+ "myskin" => "הרקע שלי",
+ "chick" => "צ'יק"
+ );
+
+ private $mQuickbarSettingsHe = array(
+ "ללא", "קבוע משמאל", "קבוע מימין", "צף משמאל", "צף מימין"
+ );
+
+ private $mBookstoreListHe = array(
+ "מיתוס" => "http://www.mitos.co.il/",
+ "iBooks" => "http://www.ibooks.co.il/",
+ "Barnes & Noble" => "http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=\$1",
+ "Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=\$1"
+ );
+
+ private $mMagicWordsHe = array(
+ MAG_REDIRECT => array( 0, '#הפניה', '#REDIRECT' ),
+ MAG_NOTOC => array( 0, '__ללא_תוכן_עניינים__', '__ללא_תוכן__', '__NOTOC__' ),
+ MAG_NOGALLERY => array( 0, '__ללא_גלריה__', '__NOGALLERY__' ),
+ MAG_FORCETOC => array( 0, '__חייב_תוכן_עניינים__', '__חייב_תוכן__', '__FORCETOC__' ),
+ MAG_TOC => array( 0, '__תוכן_עניינים__', '__תוכן__', '__TOC__' ),
+ MAG_NOEDITSECTION => array( 0, '__ללא_עריכה__', '__NOEDITSECTION__' ),
+ MAG_START => array( 0, '__התחלה__', '__START__' ),
+ MAG_CURRENTMONTH => array( 1, 'חודש נוכחי', 'CURRENTMONTH' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'שם חודש נוכחי', 'CURRENTMONTHNAME' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'שם חודש נוכחי קניין', 'CURRENTMONTHNAMEGEN' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'קיצור חודש נוכחי', 'CURRENTMONTHABBREV' ),
+ MAG_CURRENTDAY => array( 1, 'יום נוכחי', 'CURRENTDAY' ),
+ MAG_CURRENTDAY2 => array( 1, 'יום נוכחי 2', 'CURRENTDAY2' ),
+ MAG_CURRENTDAYNAME => array( 1, 'שם יום נוכחי', 'CURRENTDAYNAME' ),
+ MAG_CURRENTYEAR => array( 1, 'שנה נוכחית', 'CURRENTYEAR' ),
+ MAG_CURRENTTIME => array( 1, 'שעה נוכחית', 'CURRENTTIME' ),
+ MAG_NUMBEROFPAGES => array( 1, 'מספר דפים כולל', 'מספר דפים', 'NUMBEROFPAGES' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'מספר ערכים', 'NUMBEROFARTICLES' ),
+ MAG_NUMBEROFFILES => array( 1, 'מספר קבצים', 'NUMBEROFFILES' ),
+ MAG_NUMBEROFUSERS => array( 1, 'מספר משתמשים', 'NUMBEROFUSERS' ),
+ MAG_PAGENAME => array( 1, 'שם הדף', 'PAGENAME' ),
+ MAG_PAGENAMEE => array( 1, 'שם הדף מקודד', 'PAGENAMEE' ),
+ MAG_NAMESPACE => array( 1, 'מרחב השם', 'NAMESPACE' ),
+ MAG_NAMESPACEE => array( 1, 'מרחב השם מקודד', 'NAMESPACEE' ),
+ MAG_TALKSPACE => array( 1, 'מרחב השיחה', 'TALKSPACE' ),
+ MAG_TALKSPACEE => array( 1, 'מרחב השיחה מקודד', 'TALKSPACEE' ),
+ MAG_SUBJECTSPACE => array( 1, 'מרחב הנושא', 'מרחב הערכים', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ MAG_SUBJECTSPACEE => array( 1, 'מרחב הנושא מקודד', 'מרחב הערכים מקודד', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ MAG_FULLPAGENAME => array( 1, 'שם הדף המלא', 'FULLPAGENAME' ),
+ MAG_FULLPAGENAMEE => array( 1, 'שם הדף המלא מקודד', 'FULLPAGENAMEE' ),
+ MAG_SUBPAGENAME => array( 1, 'שם דף המשנה', 'SUBPAGENAME' ),
+ MAG_SUBPAGENAMEE => array( 1, 'שם דף המשנה מקודד', 'SUBPAGENAMEE' ),
+ MAG_BASEPAGENAME => array( 1, 'שם דף הבסיס', 'BASEPAGENAME' ),
+ MAG_BASEPAGENAMEE => array( 1, 'שם דף הבסיס מקודד', 'BASEPAGENAMEE' ),
+ MAG_TALKPAGENAME => array( 1, 'שם דף השיחה', 'TALKPAGENAME' ),
+ MAG_TALKPAGENAMEE => array( 1, 'שם דף השיחה מקודד', 'TALKPAGENAMEE' ),
+ MAG_SUBJECTPAGENAME => array( 1, 'שם דף הנושא', 'שם הערך', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ MAG_SUBJECTPAGENAMEE => array( 1, 'שם דף הנושא מקודד', 'שם הערך מקודד', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+ MAG_MSG => array( 0, 'הכללה:', 'MSG:' ),
+ MAG_SUBST => array( 0, 'ס:', 'SUBST:' ),
+ MAG_MSGNW => array( 0, 'הכללת מקור', 'MSGNW:' ),
+ MAG_END => array( 0, '__סוף__', '__END__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'ממוזער', 'thumbnail', 'thumb' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'ממוזער=$1', 'thumbnail=$1', 'thumb=$1'),
+ MAG_IMG_RIGHT => array( 1, 'ימין', 'right' ),
+ MAG_IMG_LEFT => array( 1, 'שמאל', 'left' ),
+ MAG_IMG_NONE => array( 1, 'ללא', 'none' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1px' ),
+ MAG_IMG_CENTER => array( 1, 'מרכז', 'center', 'centre' ),
+ MAG_IMG_FRAMED => array( 1, 'ממוסגר', 'מסגרת', 'framed', 'enframed', 'frame' ),
+ MAG_INT => array( 0, 'הודעה:', 'INT:' ),
+ MAG_SITENAME => array( 1, 'שם האתר', 'SITENAME' ),
+ MAG_NS => array( 0, 'מרחב שם:', 'NS:' ),
+ MAG_LOCALURL => array( 0, 'כתובת יחסית:', 'LOCALURL:' ),
+ MAG_LOCALURLE => array( 0, 'כתובת יחסית מקודד:', 'LOCALURLE:' ),
+ MAG_SERVER => array( 0, 'כתובת השרת', 'שרת', 'SERVER' ),
+ MAG_SERVERNAME => array( 0, 'שם השרת', 'SERVERNAME' ),
+ MAG_SCRIPTPATH => array( 0, 'נתיב הקבצים', 'SCRIPTPATH' ),
+ MAG_GRAMMAR => array( 0, 'דקדוק:', 'GRAMMAR:' ),
+ MAG_NOTITLECONVERT => array( 0, '__ללא_המרת_כותרת__', '__NOTITLECONVERT__', '__NOTC__'),
+ MAG_NOCONTENTCONVERT => array( 0, '__ללא_המרת_תוכן__', '__NOCONTENTCONVERT__', '__NOCC__'),
+ MAG_CURRENTWEEK => array( 1, 'שבוע נוכחי', 'CURRENTWEEK' ),
+ MAG_CURRENTDOW => array( 1, 'מספר יום נוכחי', 'CURRENTDOW' ),
+ MAG_REVISIONID => array( 1, 'מזהה גרסה', 'REVISIONID' ),
+ MAG_PLURAL => array( 0, 'רבים:', 'PLURAL:' ),
+ MAG_FULLURL => array( 0, 'כתובת מלאה:', 'FULLURL:' ),
+ MAG_FULLURLE => array( 0, 'כתובת מלאה מקודד:', 'FULLURLE:' ),
+ MAG_LCFIRST => array( 0, 'אות ראשונה קטנה:', 'LCFIRST:' ),
+ MAG_UCFIRST => array( 0, 'אות ראשונה גדולה:', 'UCFIRST:' ),
+ MAG_LC => array( 0, 'אותיות קטנות:', 'LC:' ),
+ MAG_UC => array( 0, 'אותיות גדולות:', 'UC:' ),
+ MAG_RAW => array( 0, 'ללא עיבוד:', 'RAW:' ),
+ MAG_DISPLAYTITLE => array( 1, 'כותרת תצוגה', 'DISPLAYTITLE' ),
+ MAG_RAWSUFFIX => array( 1, 'ללא פסיק', 'R' ),
+ MAG_NEWSECTIONLINK => array( 1, '__יצירת_הערה__', '__NEWSECTIONLINK__' ),
+ MAG_CURRENTVERSION => array( 1, 'גרסה נוכחית', 'CURRENTVERSION' ),
+ MAG_URLENCODE => array( 0, 'נתיב מקודד:', 'URLENCODE:' ),
+ MAG_CURRENTTIMESTAMP => array( 1, 'זמן נוכחי', 'CURRENTTIMESTAMP' ),
+ MAG_DIRECTIONMARK => array( 1, 'סימן כיווניות', 'DIRECTIONMARK', 'DIRMARK' ),
+ MAG_LANGUAGE => array( 0, '#שפה:', '#LANGUAGE:' ),
+ MAG_CONTENTLANGUAGE => array( 1, 'שפת תוכן', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ MAG_PAGESINNAMESPACE => array( 1, 'דפים במרחב השם:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ MAG_NUMBEROFADMINS => array( 1, 'מספר מפעילים', 'NUMBEROFADMINS' ),
+ );
+
+ /**
+ * Constructor, setting the namespaces
+ */
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesHe;
+ $this->mMessagesHe = &$wgAllMessagesHe;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesHe = array(
+ NS_MEDIA => "מדיה",
+ NS_SPECIAL => "מיוחד",
+ NS_MAIN => "",
+ NS_TALK => "שיחה",
+ NS_USER => "משתמש",
+ NS_USER_TALK => "שיחת_משתמש",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => "שיחת_" . $wgMetaNamespace,
+ NS_IMAGE => "תמונה",
+ NS_IMAGE_TALK => "שיחת_תמונה",
+ NS_MEDIAWIKI => "מדיה_ויקי",
+ NS_MEDIAWIKI_TALK => "שיחת_מדיה_ויקי",
+ NS_TEMPLATE => "תבנית",
+ NS_TEMPLATE_TALK => "שיחת_תבנית",
+ NS_HELP => "עזרה",
+ NS_HELP_TALK => "שיחת_עזרה",
+ NS_CATEGORY => "קטגוריה",
+ NS_CATEGORY_TALK => "שיחת_קטגוריה",
+ );
+ }
+
+ /**
+ * Changing the default quickbar setting to "2" - right instead of left, as we use RTL interface
+ *
+ * @return array of the default user options
+ */
+ function getDefaultUserOptions() {
+ $opt = parent::getDefaultUserOptions();
+ $opt["quickbar"] = 2;
+ return $opt;
+ }
+
+ /**
+ * @return array of Hebrew bookstore list
+ */
+ function getBookstoreList() {
+ return $this->mBookstoreListHe;
+ }
+
+ /**
+ * @return array of Hebrew namespace names
+ */
+ function getNamespaces() {
+ return $this->mNamespaceNamesHe + parent::getNamespaces();
+ }
+
+ /**
+ * @return array of Hebrew skin names
+ */
+ function getSkinNames() {
+ return $this->mSkinNamesHe + parent::getSkinNames();
+ }
+
+ /**
+ * @return array of Hebrew quickbar settings
+ */
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsHe;
+ }
+
+ /**
+ * The function returns a message, in Hebrew if exists, in English if not, only from the default translations here.
+ *
+ * @param string the message key
+ *
+ * @return string of the wanted message
+ */
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesHe[$key] ) ) {
+ return $this->mMessagesHe[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ /**
+ * @return array of all the Hebrew messages
+ */
+ function getAllMessages() {
+ return $this->mMessagesHe;
+ }
+
+ /**
+ * @return array of all the magic words
+ */
+ function &getMagicWords() {
+ return $this->mMagicWordsHe;
+ }
+
+ /**
+ * @return true, as Hebrew is RTL language
+ */
+ function isRTL() {
+ return true;
+ }
+
+ /**
+ * @return regular expression which includes the word trails in the link
+ */
+ function linkTrail() {
+ return '/^([a-zא-ת]+)(.*)$/sDu';
+ }
+
+ /**
+ * Convert grammar forms of words.
+ *
+ * Available cases:
+ * "prefixed" (or "תחילית") - when the word has a prefix
+ *
+ * @param string the word to convert
+ * @param string the case
+ */
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['he'][$case][$word]) ) {
+ return $wgGrammarForms['he'][$case][$word];
+ }
+
+ switch ( $case ) {
+ case 'prefixed':
+ case 'תחילית':
+ # Duplicate the "Waw" if prefixed
+ if ( substr( $word, 0, 2 ) == "ו" && substr( $word, 0, 4 ) != "וו" ) {
+ $word = "ו".$word;
+ }
+
+ # Remove the "He" if prefixed
+ if ( substr( $word, 0, 2 ) == "ה" ) {
+ $word = substr( $word, 2 );
+ }
+
+ # Add a hyphen if non-Hebrew letters
+ if ( substr( $word, 0, 2 ) < "א" || substr( $word, 0, 2 ) > "ת" ) {
+ $word = "־".$word;
+ }
+ }
+
+ return $word;
+ }
+
+ /**
+ * Gets a number and uses the suited form of the word.
+ *
+ * @param integer the number of items
+ * @param string the first form (singular)
+ * @param string the second form (plural)
+ * @param string the third form (2 items, plural is used if not applicable and not specified)
+ *
+ * @return string of the suited form of word
+ */
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ if ( $count == '1' ) {
+ return $wordform1;
+ } elseif ( $count == '2' && $wordform3 ) {
+ return $wordform3;
+ } else {
+ return $wordform2;
+ }
+ }
+
+ /**
+ * @return string of the best 8-bit encoding for Hebrew, if UTF-8 cannot be used
+ */
+ function fallback8bitEncoding() {
+ return "windows-1255";
+ }
+}
+
+?>
diff --git a/languages/LanguageHi.php b/languages/LanguageHi.php
new file mode 100644
index 00000000..4c006757
--- /dev/null
+++ b/languages/LanguageHi.php
@@ -0,0 +1,80 @@
+<?php
+/** Hindi (हिन्दी)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Niklas Laxström
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesHi.php');
+}
+
+class LanguageHi extends LanguageUtf8 {
+ private $mMessagesHi, $mNamespaceNamesHi = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesHi;
+ $this->mMessagesHi =& $wgAllMessagesHi;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesHi = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'विशेष',
+ NS_MAIN => '',
+ NS_TALK => 'वार्ता',
+ NS_USER => 'सदस्य',
+ NS_USER_TALK => 'सदस्य_वार्ता',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_वार्ता',
+ NS_IMAGE => 'चित्र',
+ NS_IMAGE_TALK => 'चित्र_वार्ता',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Template_talk',
+ NS_CATEGORY => 'श्रेणी',
+ NS_CATEGORY_TALK => 'श्रेणी_वार्ता',
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesHi + parent::getNamespaces();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesHi[$key] ) ) {
+ return $this->mMessagesHi[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesHi;
+ }
+
+ function digitTransformTable() {
+ return array(
+ "0" => "०",
+ "1" => "१",
+ "2" => "२",
+ "3" => "३",
+ "4" => "४",
+ "5" => "५",
+ "6" => "६",
+ "7" => "७",
+ "8" => "८",
+ "9" => "९"
+ );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageHr.php b/languages/LanguageHr.php
new file mode 100644
index 00000000..0f82b45a
--- /dev/null
+++ b/languages/LanguageHr.php
@@ -0,0 +1,132 @@
+<?php
+/** Croatian (hrvatski)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesHr.php');
+}
+
+class LanguageHr extends LanguageUtf8 {
+ private $mMessagesHr, $mNamespaceNamesHr = null;
+
+ private $mQuickbarSettingsHr = array(
+ 'Bez', 'Lijevo nepomično', 'Desno nepomično', 'Lijevo leteće'
+ );
+
+ private $mSkinNamesHr = array(
+ 'standard' => 'Standardna',
+ 'nostalgia' => 'Nostalgija',
+ 'cologneblue' => 'Kölnska plava',
+ 'smarty' => 'Paddington',
+ 'montparnasse' => 'Montparnasse',
+ 'davinci' => 'DaVinci',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ 'myskin' => 'MySkin',
+ 'chick' => 'Chick'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesHr;
+ $this->mMessagesHr =& $wgAllMessagesHr;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesHr = array(
+ NS_MEDIA => 'Mediji',
+ NS_SPECIAL => 'Posebno',
+ NS_MAIN => '',
+ NS_TALK => 'Razgovor',
+ NS_USER => 'Suradnik',
+ NS_USER_TALK => 'Razgovor_sa_suradnikom',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Razgovor_' . $wgMetaNamespace,
+ NS_IMAGE => 'Slika',
+ NS_IMAGE_TALK => 'Razgovor_o_slici',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_razgovor',
+ NS_TEMPLATE => 'Predložak',
+ NS_TEMPLATE_TALK => 'Razgovor_o_predlošku',
+ NS_HELP => 'Pomoć',
+ NS_HELP_TALK => 'Razgovor_o_pomoći',
+ NS_CATEGORY => 'Kategorija',
+ NS_CATEGORY_TALK => 'Razgovor_o_kategoriji'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesHr + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsHr;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesHr + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesHr[$key] ) ) {
+ return $this->mMessagesHr[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesHr;
+ }
+
+ function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+ $d = (0 + substr( $ts, 6, 2 )) . ". " .
+ $this->getMonthName( substr( $ts, 4, 2 ) ) .
+ " " .
+ substr( $ts, 0, 4 ) . "." ;
+ return $d;
+ }
+
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function fallback8bitEncoding() {
+ return 'iso-8859-2';
+ }
+
+ function linkTrail() {
+ return '/^([čšžćđßa-z]+)(.*)$/sDu';
+ }
+
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ $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;
+ }
+ }
+ }
+
+}
+
+?>
diff --git a/languages/LanguageHu.php b/languages/LanguageHu.php
new file mode 100644
index 00000000..277998d7
--- /dev/null
+++ b/languages/LanguageHu.php
@@ -0,0 +1,132 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+#
+# Hungarian localisation for MediaWiki
+#
+
+require_once("LanguageUtf8.php");
+
+# suffixed project name (Wikipédia -> Wikipédiá) -- ról, ba, k
+$wgSitenameROL = $wgSitename . "ról";
+$wgSitenameBA = $wgSitename . "ba";
+$wgSitenameK = $wgSitename . "k";
+if( 0 == strcasecmp( "Wikipédia", $wgSitename ) ) {
+ $wgSitenameROL = "Wikipédiáról";
+ $wgSitenameBA = "Wikipédiába";
+ $wgSitenameK = "Wikipédiák";
+
+} elseif( 0 == strcasecmp( "Wikidézet", $wgSitename ) ) {
+ $wgSitenameROL = "Wikidézetről";
+ $wgSitenameBA = "Wikidézetbe";
+ $wgSitenameK = "Wikidézetek";
+
+} elseif( 0 == strcasecmp( "Wikiszótár", $wgSitename ) ) {
+ $wgSitenameROL = "Wikiszótárról";
+ $wgSitenameBA = "Wikiszótárba";
+ $wgSitenameK = "Wikiszótárak";
+
+} elseif( 0 == strcasecmp( "Wikikönyvek", $wgSitename ) ) {
+ $wgSitenameROL = "Wikikönyvekről";
+ $wgSitenameBA = "Wikikönyvekbe";
+ $wgSitenameK = "Wikikönyvek";
+}
+
+/* private */ $wgNamespaceNamesHu = array(
+ NS_MEDIA => "Média",
+ NS_SPECIAL => "Speciális",
+ NS_MAIN => "",
+ NS_TALK => "Vita",
+ NS_USER => "User",
+ NS_USER_TALK => "User_vita",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . "_vita",
+ NS_IMAGE => "Kép",
+ NS_IMAGE_TALK => "Kép_vita",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_vita",
+ NS_TEMPLATE => "Sablon",
+ NS_TEMPLATE_TALK => "Sablon_vita",
+ NS_HELP => "Segítség",
+ NS_HELP_TALK => "Segítség_vita",
+ NS_CATEGORY => "Kategória",
+ NS_CATEGORY_TALK => "Kategória_vita"
+) + $wgNamespaceNamesEn;
+
+
+/* private */ $wgQuickbarSettingsHu = array(
+ "Nincs", "Fix baloldali", "Fix jobboldali", "Lebegő baloldali"
+);
+
+/* private */ $wgSkinNamesHu = array(
+ 'standard' => "Alap",
+ 'nostalgia' => "Nosztalgia",
+ 'cologneblue' => "Kölni kék"
+) + $wgSkinNamesEn;
+
+
+/* private */ $wgDateFormatsHu = array(
+# "Mindegy",
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesHu.php');
+}
+
+class LanguageHu extends LanguageUtf8 {
+
+ function getNamespaces() {
+ global $wgNamespaceNamesHu;
+ return $wgNamespaceNamesHu;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsHu;
+ return $wgQuickbarSettingsHu;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesHu;
+ return $wgSkinNamesHu;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsHu;
+ return $wgDateFormatsHu;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesHu;
+ if(array_key_exists($key, $wgAllMessagesHu))
+ return $wgAllMessagesHu[$key];
+ else
+ return parent::getMessage($key);
+ }
+
+ function fallback8bitEncoding() {
+ return "iso8859-2";
+ }
+
+ # localised date and time
+ function date( $ts, $adj = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+
+ $d = substr( $ts, 0, 4 ) . ". " .
+ $this->getMonthName( substr( $ts, 4, 2 ) ) . " ".
+ (0 + substr( $ts, 6, 2 )) . ".";
+ return $d;
+ }
+
+ function timeanddate( $ts, $adj = false ) {
+ return $this->date( $ts, $adj ) . ", " . $this->time( $ts, $adj );
+ }
+
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageIa.php b/languages/LanguageIa.php
new file mode 100644
index 00000000..01b201c7
--- /dev/null
+++ b/languages/LanguageIa.php
@@ -0,0 +1,82 @@
+<?php
+/** Interlingua (Interlingua)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesIa.php');
+}
+
+class LanguageIa extends LanguageUtf8 {
+ private $mMessagesIa, $mNamespaceNamesIa = null;
+
+ private $mQuickbarSettingsIa = array(
+ 'Nulle', 'Fixe a sinistra', 'Fixe a dextera', 'Flottante a sinistra'
+ );
+
+ private $mSkinNamesIa = array(
+ 'cologneblue' => 'Blau Colonia',
+ );
+
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesIa;
+ $this->mMessagesIa =& $wgAllMessagesIa;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesIa = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_MAIN => '',
+ NS_TALK => 'Discussion',
+ NS_USER => 'Usator',
+ NS_USER_TALK => 'Discussion_Usator',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Discussion_'. $wgMetaNamespace,
+ NS_IMAGE => 'Imagine',
+ NS_IMAGE_TALK => 'Discussion_Imagine',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discussion_MediaWiki',
+ NS_TEMPLATE => 'Patrono',
+ NS_TEMPLATE_TALK => 'Discussion_Patrono',
+ NS_HELP => 'Adjuta',
+ NS_HELP_TALK => 'Discussion_Adjuta',
+ NS_CATEGORY => 'Categoria',
+ NS_CATEGORY_TALK => 'Discussion_Categoria'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesIa + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsIa;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesIa + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesIa[$key] ) ) {
+ return $this->mMessagesIa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesIa;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageId.php b/languages/LanguageId.php
new file mode 100644
index 00000000..ee2c062c
--- /dev/null
+++ b/languages/LanguageId.php
@@ -0,0 +1,118 @@
+<?php
+/** Indonesian (Bahasa Indonesia)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesId.php');
+}
+
+class LanguageId extends LanguageUtf8 {
+ private $mMessagesId, $mNamespaceNamesId, $mNamespaceAlternatesId = null;
+
+ private $mQuickbarSettingsId = array(
+ 'Tidak ada', 'Tetap sebelah kiri', 'Tetap sebelah kanan', 'Mengambang sebelah kiri'
+ );
+
+ private $mSkinNamesId = array(
+ 'standard' => 'Standar',
+ );
+
+ private $mBookstoreListId = array(
+ 'Gramedia Cyberstore (via Google)' => 'http://www.google.com/search?q=%22ISBN+:+$1%22+%22product_detail%22+site:www.gramediacyberstore.com+OR+site:www.gramediaonline.com+OR+site:www.kompas.com&hl=id',
+ 'Bhinneka.com bookstore' => 'http://www.bhinneka.com/Buku/Engine/search.asp?fisbn=$1',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesId;
+ $this->mMessagesId =& $wgAllMessagesId;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesId = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Istimewa',
+ NS_MAIN => '',
+ NS_TALK => 'Bicara',
+ NS_USER => 'Pengguna',
+ NS_USER_TALK => 'Bicara_Pengguna',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Pembicaraan_' . $wgMetaNamespace,
+ NS_IMAGE => 'Gambar',
+ NS_IMAGE_TALK => 'Pembicaraan_Gambar',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Pembicaraan_MediaWiki',
+ NS_TEMPLATE => 'Templat',
+ NS_TEMPLATE_TALK => 'Pembicaraan_Templat',
+ NS_HELP => 'Bantuan',
+ NS_HELP_TALK => 'Pembicaraan_Bantuan',
+ NS_CATEGORY => 'Kategori',
+ NS_CATEGORY_TALK => 'Pembicaraan_Kategori'
+ );
+
+ # For backwards compatibility: some talk namespaces were
+ # changed in 1.4.4 from their previous values, here:
+ $this->mNamespaceAlternatesId = array(
+ NS_IMAGE_TALK => 'Gambar_Pembicaraan',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Pembicaraan',
+ NS_TEMPLATE_TALK => 'Templat_Pembicaraan',
+ NS_HELP_TALK => 'Bantuan_Pembicaraan',
+ NS_CATEGORY_TALK => 'Kategori_Pembicaraan'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesId + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsId;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesId + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getBookstoreList() {
+ return $this->mBookstoreListId;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesId[$key] ) ) {
+ return $this->mMessagesId[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesId;
+ }
+
+ function getNsIndex( $text ) {
+ foreach ( $this->getNamespaces() as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ foreach ( $this->mNamespaceAlternatesId as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageIi.deps.php b/languages/LanguageIi.deps.php
new file mode 100644
index 00000000..28459218
--- /dev/null
+++ b/languages/LanguageIi.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageIi.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageZh_cn.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageIi.php b/languages/LanguageIi.php
new file mode 100644
index 00000000..4b57fe11
--- /dev/null
+++ b/languages/LanguageIi.php
@@ -0,0 +1,27 @@
+<?php
+/** Yi (ꆇꉙ)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageZh_cn.php';
+
+class LanguageIi extends LanguageZh_cn {
+
+ function getFallbackLanguage() {
+ return 'zh-cn';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+}
+
+?>
diff --git a/languages/LanguageIs.php b/languages/LanguageIs.php
new file mode 100644
index 00000000..97c5aa36
--- /dev/null
+++ b/languages/LanguageIs.php
@@ -0,0 +1,176 @@
+<?php
+/** Icelandic (Íslenska)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+# Most of this was written by Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesIs.php');
+}
+
+class LanguageIs extends LanguageUtf8 {
+ private $mMessagesIs, $mNamespaceNamesIs = null;
+
+ private $mQuickbarSettingsIs = array(
+ 'Sleppa', 'Fast vinstra megin', 'Fast hægra megin', 'Fljótandi til vinstri'
+ );
+
+ private $mSkinNamesIs = array(
+ 'standard' => 'Klassískt',
+ 'nostalgia' => 'Gamaldags',
+ 'cologneblue' => 'Kölnarblátt',
+ 'myskin' => 'Mitt þema',
+ );
+
+ private $mDateFormatsIs = array(
+ 'Sjálfgefið',
+ '15. janúar 2001 kl. 16:12',
+ '15. jan. 2001 kl. 16:12',
+ '16:12, 15. janúar 2001',
+ '16:12, 15. jan. 2001',
+ 'ISO 8601' => '2001-01-15 16:12:34'
+ );
+
+ private $mMagicWordsIs = array(
+ MAG_REDIRECT => array( 0, '#tilvísun', '#TILVÍSUN', '#redirect' ), // MagicWord::initRegex() sucks
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesIs;
+ $this->mMessagesIs =& $wgAllMessagesIs;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesIs = array(
+ NS_MEDIA => 'Miðill',
+ NS_SPECIAL => 'Kerfissíða',
+ NS_MAIN => '',
+ NS_TALK => 'Spjall',
+ NS_USER => 'Notandi',
+ NS_USER_TALK => 'Notandaspjall',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . 'spjall',
+ NS_IMAGE => 'Mynd',
+ NS_IMAGE_TALK => 'Myndaspjall',
+ NS_MEDIAWIKI => 'Melding',
+ NS_MEDIAWIKI_TALK => 'Meldingarspjall',
+ NS_TEMPLATE => 'Snið',
+ NS_TEMPLATE_TALK => 'Sniðaspjall',
+ NS_HELP => 'Hjálp',
+ NS_HELP_TALK => 'Hjálparspjall',
+ NS_CATEGORY => 'Flokkur',
+ NS_CATEGORY_TALK => 'Flokkaspjall'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesIs + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsIs;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesIs + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsIs;
+ }
+
+ function &getMagicWords() {
+ $t = $this->mMagicWordsIs + parent::getMagicWords();
+ return $t;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesIs[$key] ) ) {
+ return $this->mMessagesIs[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesIs;
+ }
+
+ function date( $ts, $adj = false, $format = true) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); } # Adjust based on the timezone setting.
+ $format = $this->dateFormat($format);
+
+ switch( $format ) {
+ # 15. jan. 2001 kl. 16:12 || 16:12, 15. jan. 2001
+ case '2': case '4': return (0 + substr( $ts, 6, 2 )) . '. ' .
+ $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) . '. ' .
+ substr($ts, 0, 4);
+ # 2001-01-15 16:12:34
+ case 'ISO 8601': return substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' .substr($ts, 6, 2);
+
+ # 15. janúar 2001 kl. 16:12 || 16:12, 15. janúar 2001
+ default: return (0 + substr( $ts, 6, 2 )) . '. ' .
+ $this->getMonthName( substr( $ts, 4, 2 ) ) . ' ' .
+ substr($ts, 0, 4);
+ }
+
+ }
+
+ function time($ts, $adj = false, $format = true) {
+ global $wgUser;
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); } # Adjust based on the timezone setting.
+
+ $format = $this->dateFormat($format);
+
+ switch( $format ) {
+ # 2001-01-15 16:12:34
+ case 'ISO 8601': return substr( $ts, 8, 2 ) . ':' . substr( $ts, 10, 2 ) . ':' . substr( $ts, 12, 2 );
+ default: return substr( $ts, 8, 2 ) . ':' . substr( $ts, 10, 2 );
+ }
+
+ }
+
+ function timeanddate( $ts, $adj = false, $format = true) {
+ global $wgUser;
+
+ $format = $this->dateFormat($format);
+
+ switch ( $format ) {
+ # 16:12, 15. janúar 2001 || 16:12, 15. jan. 2001
+ case '3': case '4': return $this->time( $ts, $adj, $format ) . ', ' . $this->date( $ts, $adj, $format );
+ # 2001-01-15 16:12:34
+ case 'ISO 8601': return $this->date( $ts, $adj, $format ) . ' ' . $this->time( $ts, $adj, $format );
+ # 15. janúar 2001 kl. 16:12 || 15. jan. 2001 kl. 16:12
+ default: return $this->date( $ts, $adj, $format ) . ' kl. ' . $this->time( $ts, $adj, $format );
+
+ }
+
+ }
+
+ /**
+ * The Icelandic number style uses dots where English would use commas
+ * and commas where English would use dots, e.g. 201.511,17 not 201,511.17
+ */
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function linkPrefixExtension() {
+ // return '/^(.*?)([áÁðÐéÉíÍóÓúÚýÝþÞæÆöÖA-Za-z-–]+)$/sDu';
+ return true;
+ }
+
+ function linkTrail() {
+ return '/^([áðéíóúýþæöa-z-–]+)(.*)$/sDu';
+ }
+
+}
+
+?>
diff --git a/languages/LanguageIt.php b/languages/LanguageIt.php
new file mode 100644
index 00000000..b0554c15
--- /dev/null
+++ b/languages/LanguageIt.php
@@ -0,0 +1,84 @@
+<?php
+/** Italian (Italiano)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesIt.php');
+}
+
+class LanguageIt extends LanguageUtf8 {
+ private $mMessagesIt, $mNamespaceNamesIt = null;
+
+ private $mQuickbarSettingsIt = array(
+ 'Nessuno', 'Fisso a sinistra', 'Fisso a destra', 'Fluttuante a sinistra'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesIt;
+ $this->mMessagesIt =& $wgAllMessagesIt;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesIt = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciale',
+ NS_MAIN => '',
+ NS_TALK => 'Discussione',
+ NS_USER => 'Utente',
+ NS_USER_TALK => 'Discussioni_utente',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Discussioni_' . $wgMetaNamespace,
+ NS_IMAGE => 'Immagine',
+ NS_IMAGE_TALK => 'Discussioni_immagine',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discussioni_MediaWiki',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Discussioni_template',
+ NS_HELP => 'Aiuto',
+ NS_HELP_TALK => 'Discussioni_aiuto',
+ NS_CATEGORY => 'Categoria',
+ NS_CATEGORY_TALK => 'Discussioni_categoria'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesIt + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsIt;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesIt[$key] ) ) {
+ return $this->mMessagesIt[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesIt;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ /**
+ * Italian numeric format is 201.511,17
+ */
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageJa.php b/languages/LanguageJa.php
new file mode 100644
index 00000000..1379c683
--- /dev/null
+++ b/languages/LanguageJa.php
@@ -0,0 +1,172 @@
+<?php
+/**
+ * Japan (日本語)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesJa.php');
+}
+
+class LanguageJa extends LanguageUtf8 {
+ private $mMessagesJa, $mNamespaceNamesJa = null;
+
+ private $mQuickbarSettingsJa = array(
+ "なし", "左端", "右端", "ウィンドウの左上に固定"
+ );
+
+ private $mSkinNamesJa = array(
+ 'standard' => "標準",
+ 'nostalgia' => "ノスタルジア",
+ 'cologneblue' => "ケルンブルー",
+ );
+
+ private $mDateFormatsJa = array(
+ MW_DATE_DEFAULT => '2001年1月15日 16:12 (デフォルト)',
+ MW_DATE_ISO => '2001-01-15 16:12:34'
+ );
+
+ private $mWeekdayAbbreviationsJa = array(
+ "日", "月", "火", "水", "木", "金", "土"
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesJa;
+ $this->mMessagesJa =& $wgAllMessagesJa;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesJa = array(
+ NS_MEDIA => "Media", /* Media */
+ NS_SPECIAL => "特別", /* Special */
+ NS_MAIN => "",
+ NS_TALK => "ノート", /* Talk */
+ NS_USER => "利用者", /* User */
+ NS_USER_TALK => "利用者‐会話", /* User_talk */
+ NS_PROJECT => $wgMetaNamespace, /* Wikipedia */
+ NS_PROJECT_TALK => "{$wgMetaNamespace}‐ノート", /* Wikipedia_talk */
+ NS_IMAGE => "画像", /* Image */
+ NS_IMAGE_TALK => "画像‐ノート", /* Image_talk */
+ NS_MEDIAWIKI => "MediaWiki", /* MediaWiki */
+ NS_MEDIAWIKI_TALK => "MediaWiki‐ノート", /* MediaWiki_talk */
+ NS_TEMPLATE => "Template", /* Template */
+ NS_TEMPLATE_TALK => "Template‐ノート", /* Template_talk */
+ NS_HELP => "Help", /* Help */
+ NS_HELP_TALK => "Help‐ノート", /* Help_talk */
+ NS_CATEGORY => "Category", /* Category */
+ NS_CATEGORY_TALK => "Category‐ノート" /* Category_talk */
+
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesJa + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsJa;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesJa + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsJa;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesJa[$key] ) ) {
+ return $this->mMessagesJa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesJa;
+ }
+
+ function date( $ts, $adj = false, $format = true, $tc = false ) {
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); }
+ $datePreference = $this->dateFormat( $format );
+
+ if( $datePreference == MW_DATE_ISO ) {
+ $d = substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' .
+ substr($ts, 6, 2);
+ return $d;
+ }
+
+ $year = (int)substr( $ts, 0, 4 );
+ $month = (int)substr( $ts, 4, 2 );
+ $mday = (int)substr( $ts, 6, 2 );
+ $hour = (int)substr( $ts, 8, 2 );
+ $minute = (int)substr( $ts, 10, 2 );
+ $second = (int)substr( $ts, 12, 2 );
+
+ $time = mktime( $hour, $minute, $second, $month, $mday, $year );
+ $date = getdate( $time );
+
+ $d = $year . "年" .
+ $this->getMonthAbbreviation( $month ) .
+ $mday . "日 (" .
+ $this->mWeekdayAbbreviationsJa[ $date['wday'] ]. ")";
+ return $d;
+ }
+
+ function time( $ts, $adj = false, $format = true, $tc = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); }
+ $datePreference = $this->dateFormat( $format );
+
+ $t = substr( $ts, 8, 2 ) . ":" . substr( $ts, 10, 2 );
+ if ( $datePreference == MW_DATE_ISO ) {
+ $t .= ':' . substr( $ts, 12, 2 );
+ }
+
+ return $t;
+ }
+
+ function timeanddate( $ts, $adj = false, $format = true, $tc = false ) {
+ return $this->date( $ts, $adj, $format, $tc ) . " " . $this->time( $ts, $adj, $format, $tc );
+ }
+
+ function stripForSearch( $string ) {
+ # MySQL fulltext index doesn't grok utf-8, so we
+ # need to fold cases and convert to hex
+ $s = $string;
+
+ # Strip known punctuation ?
+ #$s = preg_replace( '/\xe3\x80[\x80-\xbf]/', '', $s ); # U3000-303f
+
+ # Space strings of like hiragana/katakana/kanji
+ $hiragana = '(?:\xe3(?:\x81[\x80-\xbf]|\x82[\x80-\x9f]))'; # U3040-309f
+ $katakana = '(?:\xe3(?:\x82[\xa0-\xbf]|\x83[\x80-\xbf]))'; # U30a0-30ff
+ $kanji = '(?:\xe3[\x88-\xbf][\x80-\xbf]'
+ . '|[\xe4-\xe8][\x80-\xbf]{2}'
+ . '|\xe9[\x80-\xa5][\x80-\xbf]'
+ . '|\xe9\xa6[\x80-\x99])';
+ # U3200-9999 = \xe3\x88\x80-\xe9\xa6\x99
+ $s = preg_replace( "/({$hiragana}+|{$katakana}+|{$kanji}+)/", ' $1 ', $s );
+
+ # Double-width roman characters: ff00-ff5f ~= 0020-007f
+ $s = preg_replace( '/\xef\xbc([\x80-\xbf])/e', 'chr((ord("$1") & 0x3f) + 0x20)', $s );
+ $s = preg_replace( '/\xef\xbd([\x80-\x99])/e', 'chr((ord("$1") & 0x3f) + 0x60)', $s );
+
+ # Do general case folding and UTF-8 armoring
+ return LanguageUtf8::stripForSearch( $s );
+ }
+
+ # Italic is not appropriate for Japanese script
+ # Unfortunately most browsers do not recognise this, and render <em> as italic
+ function emphasize( $text ) {
+ return $text;
+ }
+}
+
+?>
diff --git a/languages/LanguageJv.php b/languages/LanguageJv.php
new file mode 100644
index 00000000..a380add8
--- /dev/null
+++ b/languages/LanguageJv.php
@@ -0,0 +1,115 @@
+<?php
+/** Javanese (Basa Jawa)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Niklas Laxström
+ *
+ * @copyright Copyright © 2006, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesJv.php');
+}
+
+class LanguageJv extends LanguageUtf8 {
+ private $mMessagesJv, $mNamespaceNamesJv, $mNamespaceAlternatesJv = null;
+
+ private $mQuickbarSettingsJv = array(
+ 'Ora ana', 'Tetep sisih kiwa', 'Tetep sisih tengen', 'Ngambang sisih kiwa'
+ );
+
+ private $mSkinNamesJv = array(
+ 'standard' => "Standar",
+ );
+
+ private $mBookstoreListJv = array(
+ 'Gramedia Cyberstore (via Google)' => 'http://www.google.com/search?q=%22ISBN+:+$1%22+%22product_detail%22+site:www.gramediacyberstore.com+OR+site:www.gramediaonline.com+OR+site:www.kompas.com&hl=id',
+ 'Bhinneka.com bookstore' => 'http://www.bhinneka.com/Buku/Engine/search.asp?fisbn=$1',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesJv;
+ $this->mMessagesJv =& $wgAllMessagesJv;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesJv = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Astamiwa',
+ NS_MAIN => '',
+ NS_TALK => 'Dhiskusi',
+ NS_USER => 'Panganggo',
+ NS_USER_TALK => 'Dhiskusi_Panganggo',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Dhiskusi_' . $wgMetaNamespace,
+ NS_IMAGE => 'Gambar',
+ NS_IMAGE_TALK => 'Dhiskusi_Gambar',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Dhiskusi_MediaWiki',
+ NS_TEMPLATE => 'Cithakan',
+ NS_TEMPLATE_TALK => 'Dhiskusi_Cithakan',
+ NS_HELP => 'Pitulung',
+ NS_HELP_TALK => 'Dhiskusi_Pitulung',
+ NS_CATEGORY => 'Kategori',
+ NS_CATEGORY_TALK => 'Dhiskusi_Kategori'
+ );
+
+ $this->mNamespaceAlternatesJv = array(
+ NS_IMAGE_TALK => 'Gambar_Dhiskusi',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Dhiskusi',
+ NS_TEMPLATE_TALK => 'Cithakan_Dhiskusi',
+ NS_HELP_TALK => 'Pitulung_Dhiskusi',
+ NS_CATEGORY_TALK => 'Kategori_Dhiskusi'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesJv + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsJv;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesJv + parent::getSkinNames();
+ }
+
+ function getBookstoreList() {
+ return $this->mBookstoreListJv + parent::getBookstoreList();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesJv[$key] ) ) {
+ return $this->mMessagesJv[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesJv;
+ }
+
+ function getNsIndex( $text ) {
+
+ foreach ( $this->getNamespaces() as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ foreach ( $this->mNamespaceAlternatesJv as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+
+ return false;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageKa.php b/languages/LanguageKa.php
new file mode 100644
index 00000000..b24bcf72
--- /dev/null
+++ b/languages/LanguageKa.php
@@ -0,0 +1,46 @@
+<?php
+/** Georgian (ქართული)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageKa extends LanguageUtf8 {
+ private $mNamespaceNamesKa = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesKa = array(
+ NS_MEDIA => 'მედია',
+ NS_SPECIAL => 'სპეციალური',
+ NS_MAIN => '',
+ NS_TALK => 'განხილვა',
+ NS_USER => 'მომხმარებელი',
+ NS_USER_TALK => 'მომხმარებელი_განხილვა',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_განხილვა',
+ NS_IMAGE => 'სურათი',
+ NS_IMAGE_TALK => 'სურათი_განხილვა',
+ NS_MEDIAWIKI => 'მედიავიკი',
+ NS_MEDIAWIKI_TALK => 'მედიავიკი_განხილვა',
+ NS_TEMPLATE => 'თარგი',
+ NS_TEMPLATE_TALK => 'თარგი_განხილვა',
+ NS_HELP => 'დახმარება',
+ NS_HELP_TALK => 'დახმარება_განხილვა',
+ NS_CATEGORY => 'კატეგორია',
+ NS_CATEGORY_TALK => 'კატეგორია_განხილვა'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesKa + parent::getNamespaces();
+ }
+
+}
+
+?>
diff --git a/languages/LanguageKm.php b/languages/LanguageKm.php
new file mode 100644
index 00000000..0c5f55b2
--- /dev/null
+++ b/languages/LanguageKm.php
@@ -0,0 +1,30 @@
+<?php
+/** Khmer (ភាសាខ្មែរ)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageKm extends LanguageUtf8 {
+ function digitTransformTable() {
+ return array(
+ '0' => '០',
+ '1' => '១',
+ '2' => '២',
+ '3' => '៣',
+ '4' => '៤',
+ '5' => '៥',
+ '6' => '៦',
+ '7' => '៧',
+ '8' => '៨',
+ '9' => '៩'
+ );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageKn.php b/languages/LanguageKn.php
new file mode 100644
index 00000000..755556cc
--- /dev/null
+++ b/languages/LanguageKn.php
@@ -0,0 +1,90 @@
+<?php
+/**
+ * Language file for Kannada.
+ * Mosty done by:
+ * Hari Prasad Nadig <hpnadig@gmail.com>
+ * http://en.wikipedia.org/wiki/User:Hpnadig
+ * Ashwath Mattur <ashwatham@gmail.com>
+ * http://en.wikipedia.org/wiki/User:Ashwatham
+ *
+ * Also see the Kannada Localisation Initiative at:
+ * http://kannada.sourceforge.net/
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesKn.php');
+}
+
+class LanguageKn extends LanguageUtf8 {
+ private $mMessagesKn, $mNamespaceNamesKn = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesKn;
+ $this->mMessagesKn =& $wgAllMessagesKn;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesKn = array(
+ NS_MEDIA => 'ಮೀಡಿಯ',
+ NS_SPECIAL => 'ವಿಶೇಷ',
+ NS_MAIN => '',
+ NS_TALK => 'ಚರ್ಚೆಪುಟ',
+ NS_USER => 'ಸದಸ್ಯ',
+ NS_USER_TALK => 'ಸದಸ್ಯರ_ಚರ್ಚೆಪುಟ',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_ಚರ್ಚೆ',
+ NS_IMAGE => 'ಚಿತ್ರ',
+ NS_IMAGE_TALK => 'ಚಿತ್ರ_ಚರ್ಚೆಪುಟ',
+ NS_MEDIAWIKI => 'ಮೀಡಿಯವಿಕಿ',
+ NS_MEDIAWIKI_TALK => 'ಮೀಡೀಯವಿಕಿ_ಚರ್ಚೆ',
+ NS_TEMPLATE => 'ಟೆಂಪ್ಲೇಟು',
+ NS_TEMPLATE_TALK => 'ಟೆಂಪ್ಲೇಟು_ಚರ್ಚೆ',
+ NS_HELP => 'ಸಹಾಯ',
+ NS_HELP_TALK => 'ಸಹಾಯ_ಚರ್ಚೆ',
+ NS_CATEGORY => 'ವರ್ಗ',
+ NS_CATEGORY_TALK => 'ವರ್ಗ_ಚರ್ಚೆ'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesKn + parent::getNamespaces();
+ }
+
+
+ function digitTransformTable() {
+ return array(
+ '0' => '೦',
+ '1' => '೧',
+ '2' => '೨',
+ '3' => '೩',
+ '4' => '೪',
+ '5' => '೫',
+ '6' => '೬',
+ '7' => '೭',
+ '8' => '೮',
+ '9' => '೯'
+ );
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesKn[$key] ) ) {
+ return $this->mMessagesKn[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesKn;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageKo.php b/languages/LanguageKo.php
new file mode 100644
index 00000000..d1a64b93
--- /dev/null
+++ b/languages/LanguageKo.php
@@ -0,0 +1,182 @@
+<?php
+/** Korean (한국어)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once('LanguageUtf8.php');
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesKo.php');
+}
+
+class LanguageKo extends LanguageUtf8 {
+ private $mMessagesKo, $mNamespaceNamesKo = null;
+
+ private $mQuickbarSettingsKo = array(
+ '없음', '왼쪽', '오른쪽', '왼쪽 고정', '오른쪽 고정'
+ );
+
+ private $mSkinNamesKo = array(
+ 'standard' => '기본값',
+ 'davinci' => '다빈치',
+ 'mono' => '모노',
+ 'monobook' => '모노북',
+ 'my skin' => '내 스킨',
+ );
+
+ private $mBookstoreListKo = array(
+ 'Aladdin.co.kr' => 'http://www.aladdin.co.kr/catalog/book.asp?ISBN=$1'
+ );
+
+ # (Okay, I think I got it right now. This can be adjusted
+ # in the 'date' function down at the bottom. --Brion)
+ #
+ # Thanks. And it's usual that the time comes after dates.
+ # So I've change the timeanddate function, just exchanged $time and $date
+ # But you should check before you install it, 'cause I'm quite stupid about
+ # the programming.
+ #
+
+ private $mWeekdayAbbreviationsKo = array(
+ '일', '월', '화', '수', '목', '금', '토'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesKo;
+ $this->mMessagesKo =& $wgAllMessagesKo;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesKo = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => '특수기능',
+ NS_MAIN => '',
+ NS_TALK => '토론',
+ NS_USER => '사용자',
+ NS_USER_TALK => '사용자토론',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace.'토론',
+ NS_IMAGE => '그림',
+ NS_IMAGE_TALK => '그림토론',
+ NS_HELP => '도움말',
+ NS_HELP_TALK => '도움말토론',
+ NS_CATEGORY => '분류',
+ NS_CATEGORY_TALK => '분류토론',
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesKo + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsKo;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesKo + parent::getSkinNames();
+ }
+
+ function getBookstoreList() {
+ return $this->mBookstoreListKo + parent::getBookstoreList();
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesKo[$key] ) ) {
+ return $this->mMessagesKo[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesKo;
+ }
+
+ function date( $ts, $adj = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+
+ $year = (int)substr( $ts, 0, 4 );
+ $month = (int)substr( $ts, 4, 2 );
+ $mday = (int)substr( $ts, 6, 2 );
+ $hour = (int)substr( $ts, 8, 2 );
+ $minute = (int)substr( $ts, 10, 2 );
+ $second = (int)substr( $ts, 12, 2 );
+ $time = mktime( $hour, $minute, $second, $month, $mday, $year );
+ $date = getdate( $time );
+
+ # "xxxx년 xx월 xx일 (월)"
+ # timeanddate works "xxxx년 xx월 xx일 (월) xx:xx"
+ $d = $year . "년 " .
+ $this->getMonthAbbreviation( $month ) . "월 " .
+ $mday . "일 ".
+ "(" . $this->mWeekdayAbbreviationsKo[ $date['wday'] ]. ")";
+
+ return $d;
+ }
+
+ function timeBeforeDate() {
+ return false;
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' ';
+ }
+
+ function firstChar( $s ) {
+ preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})/', $s, $matches);
+
+ if ( isset( $matches[1] ) ) {
+ if ( strlen( $matches[1] ) != 3 ) {
+ return $matches[1];
+ }
+ $code = (ord($matches[1]{0}) & 0x0f) << 12;
+ $code |= (ord($matches[1]{1}) & 0x3f) << 6;
+ $code |= (ord($matches[1]{2}) & 0x3f);
+ if ( $code < 0xac00 || 0xd7a4 <= $code) {
+ return $matches[1];
+ } elseif ( $code < 0xb098 ) {
+ return "\xe3\x84\xb1";
+ } elseif ( $code < 0xb2e4 ) {
+ return "\xe3\x84\xb4";
+ } elseif ( $code < 0xb77c ) {
+ return "\xe3\x84\xb7";
+ } elseif ( $code < 0xb9c8 ) {
+ return "\xe3\x84\xb9";
+ } elseif ( $code < 0xbc14 ) {
+ return "\xe3\x85\x81";
+ } elseif ( $code < 0xc0ac ) {
+ return "\xe3\x85\x82";
+ } elseif ( $code < 0xc544 ) {
+ return "\xe3\x85\x85";
+ } elseif ( $code < 0xc790 ) {
+ return "\xe3\x85\x87";
+ } elseif ( $code < 0xcc28 ) {
+ return "\xe3\x85\x88";
+ } elseif ( $code < 0xce74 ) {
+ return "\xe3\x85\x8a";
+ } elseif ( $code < 0xd0c0 ) {
+ return "\xe3\x85\x8b";
+ } elseif ( $code < 0xd30c ) {
+ return "\xe3\x85\x8c";
+ } elseif ( $code < 0xd558 ) {
+ return "\xe3\x85\x8d";
+ } else {
+ return "\xe3\x85\x8e";
+ }
+ } else {
+ return "";
+ }
+ }
+}
+
+?>
diff --git a/languages/LanguageKs.php b/languages/LanguageKs.php
new file mode 100644
index 00000000..082149b0
--- /dev/null
+++ b/languages/LanguageKs.php
@@ -0,0 +1,18 @@
+<?php
+/** Kashmiri language file ( कश्मीरी - (ﻚﺸﻤﻳﺮﻳ) )
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageKs extends LanguageUtf8 {
+ #FIXME: inherit almost everything for now
+
+ function isRTL() {
+ return true;
+ }
+}
+
+?>
diff --git a/languages/LanguageKu.php b/languages/LanguageKu.php
new file mode 100644
index 00000000..40677c7e
--- /dev/null
+++ b/languages/LanguageKu.php
@@ -0,0 +1,65 @@
+<?php
+/** Kurdish (Kurdî / كوردي)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesKu.php');
+}
+
+class LanguageKu extends LanguageUtf8 {
+ private $mMessagesKu, $mNamespaceNamesKu = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesKu;
+ $this->mMessagesKu =& $wgAllMessagesKu;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesKu = array(
+ NS_MEDIA => 'Medya',
+ NS_SPECIAL => 'Taybet',
+ NS_MAIN => '',
+ NS_TALK => 'Nîqaş',
+ NS_USER => 'Bikarhêner',
+ NS_USER_TALK => 'Bikarhêner_nîqaş',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_nîqaş',
+ NS_IMAGE => 'Wêne',
+ NS_IMAGE_TALK => 'Wêne_nîqaş',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_nîqaş',
+ NS_TEMPLATE => 'Şablon',
+ NS_TEMPLATE_TALK => 'Şablon_nîqaş',
+ NS_HELP => 'Alîkarî',
+ NS_HELP_TALK => 'Alîkarî_nîqaş',
+ NS_CATEGORY => 'Kategorî',
+ NS_CATEGORY_TALK => 'Kategorî_nîqaş'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesKu + parent::getNamespaces();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesKu[$key] ) ) {
+ return $this->mMessagesKu[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesKu;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageKv.deps.php b/languages/LanguageKv.deps.php
new file mode 100644
index 00000000..ea225901
--- /dev/null
+++ b/languages/LanguageKv.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageKv.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageRu.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageKv.php b/languages/LanguageKv.php
new file mode 100644
index 00000000..807d66d4
--- /dev/null
+++ b/languages/LanguageKv.php
@@ -0,0 +1,29 @@
+<?php
+/** Komi (Коми)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @author Ashar Voultoiz <hashar@altern.org>
+ *
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason, Ashar Voultoiz
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageRu.php';
+
+class LanguageKv extends LanguageRu {
+
+ function getFallbackLanguage() {
+ return 'ru';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+}
+
+?>
diff --git a/languages/LanguageLa.php b/languages/LanguageLa.php
new file mode 100644
index 00000000..0e783ad4
--- /dev/null
+++ b/languages/LanguageLa.php
@@ -0,0 +1,120 @@
+<?php
+/** Latin (lingua Latina)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesLa.php');
+}
+
+class LanguageLa extends LanguageUtf8 {
+ private $mMessagesLa, $mNamespaceNamesLa = null;
+
+ private $mQuickbarSettingsLa = array(
+ 'Nullus', 'Constituere a sinistra', 'Constituere a dextra', 'Innens a sinistra'
+ );
+
+ private $mSkinNamesLa = array(
+ 'standard' => 'Norma',
+ 'nostalgia' => 'Nostalgia',
+ 'cologneblue' => 'Caerulus Colonia'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesLa;
+ $this->mMessagesLa =& $wgAllMessagesLa;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesLa = array(
+ NS_SPECIAL => 'Specialis',
+ NS_MAIN => '',
+ NS_TALK => 'Disputatio',
+ NS_USER => 'Usor',
+ NS_USER_TALK => 'Disputatio_Usoris',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Disputatio_' . $this->convertGrammar( $wgMetaNamespace, 'genitive' ),
+ NS_IMAGE => 'Imago',
+ NS_IMAGE_TALK => 'Disputatio_Imaginis',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Disputatio_MediaWiki',
+ NS_TEMPLATE => 'Formula',
+ NS_TEMPLATE_TALK => 'Disputatio_Formulae',
+ NS_HELP => 'Auxilium',
+ NS_HELP_TALK => 'Disputatio_Auxilii',
+ NS_CATEGORY => 'Categoria',
+ NS_CATEGORY_TALK => 'Disputatio_Categoriae',
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesLa + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsLa;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesLa + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesLa[$key] ) ) {
+ return $this->mMessagesLa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesLa;
+ }
+
+ function getNsIndex( $text ) {
+ global $wgMetaNamespace;
+
+ foreach ( $this->mNamespaceNamesLa as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+
+ # Backwards compatibility hacks
+ if( $wgMetaNamespace == 'Vicipaedia' || $wgMetaNamespace == 'Victionarium' ) {
+ if( 0 == strcasecmp( 'Disputatio_Wikipedia', $text ) ) return NS_PROJECT_TALK;
+ }
+ return false;
+ }
+
+ /**
+ * Convert from the nominative form of a noun to some other case
+ *
+ * Just used in a couple places for sitenames; special-case as necessary.
+ * Rules are far from complete.
+ *
+ * Cases: genitive
+ */
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['la'][$case][$word]) ) {
+ return $wgGrammarForms['la'][$case][$word];
+ }
+
+ switch ( $case ) {
+ case 'genitive':
+ // 1st and 2nd declension singular only.
+ $in = array( '/a$/', '/u[ms]$/', '/tio$/' );
+ $out = array( 'ae', 'i', 'tionis' );
+ return preg_replace( $in, $out, $word );
+ default:
+ return $word;
+ }
+ }
+
+}
+
+
+?>
diff --git a/languages/LanguageLi.php b/languages/LanguageLi.php
new file mode 100644
index 00000000..2e7fe8c5
--- /dev/null
+++ b/languages/LanguageLi.php
@@ -0,0 +1,93 @@
+<?php
+/** Limburgian (Limburgs)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesLi.php');
+}
+
+class LanguageLi extends LanguageUtf8 {
+ private $mMessagesLi, $mNamespaceNamesLi = null;
+
+ private $mQuickbarSettingsLi = array(
+ 'Oetgesjakeld', 'Links vas', 'Rechts vas', 'Links zwevend'
+ );
+
+ private $mSkinNamesLi = array(
+ 'standard' => 'Standaard',
+ 'nostalgia' => 'Nostalgie',
+ 'cologneblue' => 'Keuls blauw',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesLi;
+ $this->mMessagesLi =& $wgAllMessagesLi;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesLi = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciaal',
+ NS_MAIN => '',
+ NS_TALK => 'Euverlik',
+ NS_USER => 'Gebroeker',
+ NS_USER_TALK => 'Euverlik_gebroeker',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Euverlik_' . $wgMetaNamespace,
+ NS_IMAGE => 'Aafbeilding',
+ NS_IMAGE_TALK => 'Euverlik_afbeelding',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Euverlik_MediaWiki',
+ NS_TEMPLATE => 'Sjabloon',
+ NS_TEMPLATE_TALK => 'Euverlik_sjabloon',
+ NS_HELP => 'Help',
+ NS_HELP_TALK => 'Euverlik_help',
+ NS_CATEGORY => 'Kategorie',
+ NS_CATEGORY_TALK => 'Euverlik_kategorie'
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesLi + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsLi;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesLi + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesLi[$key] ) ) {
+ return $this->mMessagesLi[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesLi;
+ }
+
+ function timeBeforeDate( ) {
+ return false;
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' ';
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+}
+?>
diff --git a/languages/LanguageLo.php b/languages/LanguageLo.php
new file mode 100644
index 00000000..7fd20ca9
--- /dev/null
+++ b/languages/LanguageLo.php
@@ -0,0 +1,30 @@
+<?php
+/** Lao (ພາສາລາວ)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageLo extends LanguageUtf8 {
+ function digitTransformTable() {
+ return array(
+ '0' => '໐',
+ '1' => '໑',
+ '2' => '໒',
+ '3' => '໓',
+ '4' => '໔',
+ '5' => '໕',
+ '6' => '໖',
+ '7' => '໗',
+ '8' => '໘',
+ '9' => '໙'
+ );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageLt.php b/languages/LanguageLt.php
new file mode 100644
index 00000000..688dfa0f
--- /dev/null
+++ b/languages/LanguageLt.php
@@ -0,0 +1,108 @@
+<?php
+/** Lithuanian (Lietuvių)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesLt.php');
+}
+
+class LanguageLt extends LanguageUtf8 {
+ private $mMessagesLt, $mNamespaceNamesLt = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesLt;
+ $this->mMessagesLt =& $wgAllMessagesLt;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesLt = array(
+ NS_MEDIA => 'Medija',
+ NS_SPECIAL => 'Specialus',
+ NS_MAIN => '',
+ NS_TALK => 'Aptarimas',
+ NS_USER => 'Naudotojas',
+ NS_USER_TALK => 'Naudotojo_aptarimas',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_aptarimas',
+ NS_IMAGE => 'Vaizdas',
+ NS_IMAGE_TALK => 'Vaizdo_aptarimas',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_aptarimas',
+ NS_TEMPLATE => 'Šablonas',
+ NS_TEMPLATE_TALK => 'Šablono_aptarimas',
+ NS_HELP => 'Pagalba',
+ NS_HELP_TALK => 'Pagalbos_aptarimas',
+ NS_CATEGORY => 'Kategorija',
+ NS_CATEGORY_TALK => 'Kategorijos_aptarimas',
+ );
+
+ }
+
+ private $mQuickbarSettingsLt = array(
+ 'Nerodyti', 'Fiksuoti kairėje', 'Fiksuoti dešinėje', 'Plaukiojantis kairėje'
+ );
+
+ private $mSkinNamesLt = array(
+ 'standard' => 'Standartinė',
+ 'nostalgia' => 'Nostalgija',
+ 'cologneblue' => 'Kiolno Mėlyna',
+ 'davinci' => 'Da Vinči',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ 'myskin' => 'MySkin',
+ 'chick' => 'Chick'
+ );
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesLt + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsLt;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesLt + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesLt[$key] ) ) {
+ return $this->mMessagesLt[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesLt;
+ }
+
+ function fallback8bitEncoding() {
+ return 'windows-1257';
+ }
+
+
+ function separatorTransformTable() {
+ return array(',' => ' ', '.' => ',' );
+ }
+
+ /* Word forms (with examples):
+ 1 - vienas (1) lapas
+ 2 - trys (3) lapai
+ 3 - penkiolika (15) lapų
+ */
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ $count = str_replace (' ', '', $count);
+ if ($count%10==1 && $count%100!=11) return $wordform1;
+ if ($count%10>=2 && ($count%100<10 || $count%100>=20)) return $wordform2;
+ return $wordform3;
+ }
+}
+?>
diff --git a/languages/LanguageLv.php b/languages/LanguageLv.php
new file mode 100644
index 00000000..7d07c070
--- /dev/null
+++ b/languages/LanguageLv.php
@@ -0,0 +1,118 @@
+<?php
+/** Latvian (Latviešu)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Niklas Laxström
+ *
+ * @copyright Copyright © 2006, Niklas Laxström
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesLv.php');
+}
+
+class LanguageLv extends LanguageUtf8 {
+ private $mMessagesLv, $mNamespaceNamesLv = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesLv;
+ $this->mMessagesLv =& $wgAllMessagesLv;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesLv = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_MAIN => '',
+ NS_TALK => 'Diskusija',
+ NS_USER => 'Lietotājs',
+ NS_USER_TALK => 'Lietotāja_diskusija',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $this->convertGrammar( $wgMetaNamespace, 'ģenitīvs' ) . '_diskusija',
+ NS_IMAGE => 'Attēls',
+ NS_IMAGE_TALK => 'Attēla_diskusija',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_diskusija',
+ NS_TEMPLATE => 'Veidne',
+ NS_TEMPLATE_TALK => 'Veidnes_diskusija',
+ NS_HELP => 'Palīdzība',
+ NS_HELP_TALK => 'Palīdzības_diskusija',
+ NS_CATEGORY => 'Kategorija',
+ NS_CATEGORY_TALK => 'Kategorijas_diskusija',
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesLv + parent::getNamespaces();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesLv[$key] ) ) {
+ return $this->mMessagesLv[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesLv;
+ }
+
+ /**
+ * Latvian numeric formatting is 123 456,78.
+ */
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+ /**
+ * Plural form transformations. Using the first form for words with the last digit 1, but not for words with the last digits 11, and the second form for all the others.
+ *
+ * Example: {{plural:{{NUMBEROFARTICLES}}|article|articles}}
+ *
+ * @param integer $count
+ * @param string $wordform1
+ * @param string $wordform2
+ * @param string $wordform3 (not used)
+ * @return string
+ */
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3 ) {
+ return ( ( $count % 10 == 1 ) && ( $count % 100 != 11 ) ) ? $wordform1 : $wordform2;
+ }
+
+ # Convert from the nominative form of a noun to some other case
+ # Invoked with {{GRAMMAR:case|word}}
+ # ģenitīvs - kā, datīvs - kam, akuzatīvs - ko, lokatīvs - kur.
+ /**
+ * Cases: ģenitīvs, datīvs, akuzatīvs, lokatīvs
+ */
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+
+ $wgGrammarForms['lv']['ģenitīvs' ]['Vikipēdija'] = 'Vikipēdijas';
+ $wgGrammarForms['lv']['ģenitīvs' ]['Vikivārdnīca'] = 'Vikivārdnīcas';
+ $wgGrammarForms['lv']['datīvs' ]['Vikipēdija'] = 'Vikipēdijai';
+ $wgGrammarForms['lv']['datīvs' ]['Vikivārdnīca'] = 'Vikivārdnīcai';
+ $wgGrammarForms['lv']['akuzatīvs']['Vikipēdija'] = 'Vikipēdiju';
+ $wgGrammarForms['lv']['akuzatīvs']['Vikivārdnīca'] = 'Vikivārdnīcu';
+ $wgGrammarForms['lv']['lokatīvs' ]['Vikipēdija'] = 'Vikipēdijā';
+ $wgGrammarForms['lv']['lokatīvs' ]['Vikivārdnīca'] = 'Vikivārdnīcā';
+
+ if ( isset($wgGrammarForms['lv'][$case][$word]) ) {
+ return $wgGrammarForms['lv'][$case][$word];
+ }
+
+ return $word;
+
+ }
+
+}
+
+?>
diff --git a/languages/LanguageMk.php b/languages/LanguageMk.php
new file mode 100644
index 00000000..536e0ec8
--- /dev/null
+++ b/languages/LanguageMk.php
@@ -0,0 +1,156 @@
+<?php
+/** Macedonian (Македонски)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesMk.php');
+}
+
+class LanguageMk extends LanguageUtf8 {
+ private $mMessagesMk, $mNamespaceNamesMk = null;
+
+ private $mQuickbarSettingsMk = array(
+ 'Без мени', 'Фиксирано лево', 'Фиксирано десно', 'Пловечко лево'
+ );
+
+ private $mSkinNamesMk = array(
+ 'standard' => 'Класика',
+ 'nostalgia' => 'Носталгија',
+ 'cologneblue' => 'Келнско сино',
+ 'davinci' => 'ДаВинчи',
+ 'mono' => 'Моно',
+ 'monobook' => 'Monobook',
+ 'myskin' => 'Моја маска',
+ 'chick' => 'Шик'
+ );
+
+ private $mDateFormatsMk = array(
+ 'Без преференции',
+ 'Јануари 15, 2001',
+ '15 Јануари 2001',
+ '2001 Јануари 15',
+ '2001-01-15'
+ );
+
+ private $mMagicWordsMk = array(
+ MAG_REDIRECT => array( 0, '#redirect', '#пренасочување', '#види' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__БЕЗСОДРЖИНА__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__СОСОДРЖИНА__' ),
+ MAG_TOC => array( 0, '__TOC__', '__СОДРЖИНА__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__' , '__БЕЗ_УРЕДУВАЊЕ_НА_СЕКЦИИ__'),
+ MAG_START => array( 0, '__START__' , '__ПОЧЕТОК__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'СЕГАШЕНМЕСЕЦ' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'СЕГАШЕНМЕСЕЦИМЕ' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'СЕГАШЕНМЕСЕЦИМЕРОД' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'СЕГАШЕНМЕСЕЦСКР' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'СЕГАШЕНДЕН' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'СЕГАШЕНДЕНИМЕ' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'СЕГАШНАГОДИНА' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'СЕГАШНОВРЕМЕ' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'БРОЈСТАТИИ' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'СТРАНИЦА' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'СТРАНИЦАИ' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'ИМЕПРОСТОР' ),
+ MAG_SUBST => array( 0, 'SUBST:', 'ЗАМЕСТ:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'ИЗВЕШТNW:' ),
+ MAG_END => array( 0, '', '__КРАЈ__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'мини' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'десно', 'д' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'лево', 'л' ),
+ MAG_IMG_NONE => array( 1, 'none', 'н' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1пкс' , '$1п' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'центар', 'ц' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'рамка', 'ворамка' ),
+ MAG_INT => array( 0, 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'ИМЕНАСАЈТ' ),
+ MAG_NS => array( 0, 'NS:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'ЛОКАЛНААДРЕСА:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'ЛОКАЛНААДРЕСАИ:' ),
+ MAG_SERVER => array( 0, 'SERVER', 'СЕРВЕР' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'ГРАМАТИКА:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__'),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__'),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK', 'СЕГАШНАСЕДМИЦА'),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID' ),
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesMk;
+ $this->mMessagesMk =& $wgAllMessagesMk;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesMk = array(
+ NS_MEDIA => 'Медија',
+ NS_SPECIAL => 'Специјални',
+ NS_MAIN => '',
+ NS_TALK => 'Разговор',
+ NS_USER => 'Корисник',
+ NS_USER_TALK => 'Разговор_со_корисник',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Разговор_за_' . $wgMetaNamespace ,
+ NS_IMAGE => 'Слика',
+ NS_IMAGE_TALK => 'Разговор_за_слика',
+ NS_MEDIAWIKI => 'МедијаВики',
+ NS_MEDIAWIKI_TALK => 'Разговор_за_МедијаВики',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Разговор_за_шаблон',
+ NS_HELP => 'Помош',
+ NS_HELP_TALK => 'Разговор_за_помош',
+ NS_CATEGORY => 'Категорија',
+ NS_CATEGORY_TALK => 'Разговор_за_категорија',
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesMk + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsMk;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesMk + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsMk;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesMk[$key] ) ) {
+ return $this->mMessagesMk[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesMk;
+ }
+
+ function &getMagicWords() {
+ $t = $this->mMagicWordsMk + parent::getMagicWords();
+ return $t;
+ }
+
+ function linkTrail() {
+ return '/^([a-zабвгдѓежзѕијклљмнњопрстќуфхцчџш]+)(.*)$/sDu';
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+
+}
+?>
diff --git a/languages/LanguageMl.php b/languages/LanguageMl.php
new file mode 100644
index 00000000..3f430c0f
--- /dev/null
+++ b/languages/LanguageMl.php
@@ -0,0 +1,30 @@
+<?php
+/** Malayalam (മലയാളം)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageMl extends LanguageUtf8 {
+ function digitTransformTable() {
+ return array(
+ '0' => '൦',
+ '1' => '൧',
+ '2' => '൨',
+ '3' => '൩',
+ '4' => '൪',
+ '5' => '൫',
+ '6' => '൬',
+ '7' => '൭',
+ '8' => '൮',
+ '9' => '൯'
+ );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageMs.php b/languages/LanguageMs.php
new file mode 100644
index 00000000..d3fc22ef
--- /dev/null
+++ b/languages/LanguageMs.php
@@ -0,0 +1,80 @@
+<?php
+/** Malay (Bahasa Melayu)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+# This localisation is based on a file kindly donated by the folks at MIMOS
+# http://www.asiaosc.org/enwiki/page/Knowledgebase_Home.html
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesMs.php');
+}
+
+class LanguageMs extends LanguageUtf8 {
+ private $mMessagesMs, $mNamespaceNamesMs = null;
+
+ private $mQuickbarSettingsMs = array(
+ 'Tiada', 'Tetap sebelah kiri', 'Tetap sebelah kanan', 'Berubah-ubah sebelah kiri'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesMs;
+ $this->mMessagesMs =& $wgAllMessagesMs;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesMs = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Istimewa', #Special
+ NS_MAIN => '',
+ NS_TALK => 'Perbualan',#Talk
+ NS_USER => 'Pengguna',#User
+ NS_USER_TALK => 'Perbualan_Pengguna',#User_talk
+ NS_PROJECT => $wgMetaNamespace,#Wikipedia
+ NS_PROJECT_TALK => 'Perbualan_' . $wgMetaNamespace,#Wikipedia_talk
+ NS_IMAGE => 'Imej',#Image
+ NS_IMAGE_TALK => 'Imej_Perbualan',#Image_talk
+ NS_MEDIAWIKI => 'MediaWiki',#MediaWiki
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Perbualan',#MediaWiki_talk
+ NS_TEMPLATE => 'Templat',#Template
+ NS_TEMPLATE_TALK => 'Perbualan_Templat',#Template_talk
+ NS_CATEGORY => 'Kategori',#Category
+ NS_CATEGORY_TALK => 'Perbualan_Kategori',#Category_talk
+ NS_HELP => 'Bantuan',#Help
+ NS_HELP_TALK => 'Perbualan_Bantuan' #Help_talk
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesMs + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsMs;
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesMs[$key] ) ) {
+ return $this->mMessagesMs[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesMs;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageNah.deps.php b/languages/LanguageNah.deps.php
new file mode 100644
index 00000000..453b18f5
--- /dev/null
+++ b/languages/LanguageNah.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageNah.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageEs.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageNah.php b/languages/LanguageNah.php
new file mode 100644
index 00000000..d29a53e2
--- /dev/null
+++ b/languages/LanguageNah.php
@@ -0,0 +1,52 @@
+<?php
+/** Nahuatl
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Rob Church <robchur@gmail.com>
+ *
+ * @copyright Copyright © 2006, Rob Church
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once( 'LanguageEs.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesNah.php');
+}
+
+# Per conversation with a user in IRC, we inherit from Spanish and work from there
+# Nahuatl was the language of the Aztecs, and a modern speaker is most likely to
+# understand Spanish if a Nah translation is not available
+
+class LanguageNah extends LanguageEs {
+ private $mMessagesNah = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesNah;
+ $this->mMessagesNah =& $wgAllMessagesNah;
+
+ }
+
+ function getFallbackLanguage() {
+ return 'es';
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesNah[$key] ) ) {
+ return $this->mMessagesNah[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesNah;
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/languages/LanguageNap.deps.php b/languages/LanguageNap.deps.php
new file mode 100644
index 00000000..2ee99672
--- /dev/null
+++ b/languages/LanguageNap.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageNap.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageIt.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageNap.php b/languages/LanguageNap.php
new file mode 100644
index 00000000..322bfdff
--- /dev/null
+++ b/languages/LanguageNap.php
@@ -0,0 +1,22 @@
+<?php
+/** Neapolitan (Nnapulitano)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageIt.php' );
+
+class LanguageNap extends LanguageIt {
+
+ function getFallbackLanguage() {
+ return 'it';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageNds.php b/languages/LanguageNds.php
new file mode 100644
index 00000000..e55f5858
--- /dev/null
+++ b/languages/LanguageNds.php
@@ -0,0 +1,155 @@
+<?php
+/** Low Saxon (Plattdüütsch)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesNds.php');
+}
+
+class LanguageNds extends LanguageUtf8 {
+ private $mMessagesNds, $mNamespaceNamesNds = null;
+
+ private $mQuickbarSettingsNds = array(
+ 'Keen', 'Links, fast', 'Rechts, fast', 'Links, sweven'
+ );
+
+ private $mMagicWordsNds = array(
+ # ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#redirect', '#wiederleiden' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__KEENINHOLTVERTEKEN__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__WIESINHOLTVERTEKEN__' ),
+ MAG_TOC => array( 0, '__TOC__', '__INHOLTVERTEKEN__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__KEENÄNNERNLINK__' ),
+ MAG_START => array( 0, '__START__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'AKTMAAND' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'AKTMAANDNAAM' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'AKTDAG' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'AKTDAGNAAM' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'AKTJOHR' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'AKTTIED' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'ARTIKELTALL' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'AKTMAANDNAAMGEN' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'SIETNAAM' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'SIETNAAME' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'NAAMRUUM' ),
+ MAG_SUBST => array( 0, 'SUBST:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:' ),
+ MAG_END => array( 0, '__END__', '__ENN__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'duum' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'rechts' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'links' ),
+ MAG_IMG_NONE => array( 1, 'none', 'keen' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1px' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'merrn' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'rahmt' ),
+ MAG_INT => array( 0, 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'STEEDNAAM' ),
+ MAG_NS => array( 0, 'NS:', 'NR:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'STEEDURL:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'STEEDURLE:' ),
+ MAG_SERVER => array( 0, 'SERVER', 'SERVER' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'GRAMMATIK:' )
+ );
+
+ private $mSkinNamesNds = array(
+ 'standard' => 'Klassik',
+ 'nostalgia' => 'Nostalgie',
+ 'cologneblue' => 'Kölsch Blau',
+ 'smarty' => 'Paddington',
+ 'chick' => 'Küken'
+ );
+
+
+ private $mBookstoreListNds = array(
+ 'Verteken vun leverbore Böker' => 'http://www.buchhandel.de/sixcms/list.php?page=buchhandel_profisuche_frameset&suchfeld=isbn&suchwert=$1=0&y=0',
+ 'abebooks.de' => 'http://www.abebooks.de/servlet/BookSearchPL?ph=2&isbn=$1',
+ 'Amazon.de' => 'http://www.amazon.de/exec/obidos/ISBN=$1',
+ 'Lehmanns Fachbuchhandlung' => 'http://www.lob.de/cgi-bin/work/suche?flag=new&stich1=$1',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesNds;
+ $this->mMessagesNds =& $wgAllMessagesNds;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesNds = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Spezial',
+ NS_MAIN => '',
+ NS_TALK => 'Diskuschoon',
+ NS_USER => 'Bruker',
+ NS_USER_TALK => 'Bruker_Diskuschoon',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_Diskuschoon',
+ NS_IMAGE => 'Bild',
+ NS_IMAGE_TALK => 'Bild_Diskuschoon',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Diskuschoon',
+ NS_TEMPLATE => 'Vörlaag',
+ NS_TEMPLATE_TALK => 'Vörlaag_Diskuschoon',
+ NS_HELP => 'Hülp',
+ NS_HELP_TALK => 'Hülp_Diskuschoon',
+ NS_CATEGORY => 'Kategorie',
+ NS_CATEGORY_TALK => 'Kategorie_Diskuschoon'
+ );
+
+ }
+
+ function getBookstoreList() {
+ return $this->mBookstoreListNds;
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesNds + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsNds;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesNds + parent::getSkinNames();
+ }
+
+ function &getMagicWords() {
+ $t = $this->mMagicWordsNds + parent::getMagicWords();
+ return $t;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesNds[$key] ) ) {
+ return $this->mMessagesNds[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesNds;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function formatDay( $day, $format ) {
+ return parent::formatDay( $day, $format ) . '.';
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function linkTrail() {
+ return '/^([äöüßa-z]+)(.*)$/sDu';
+ }
+
+}
+?>
diff --git a/languages/LanguageNds_nl.php b/languages/LanguageNds_nl.php
new file mode 100644
index 00000000..4167ffdf
--- /dev/null
+++ b/languages/LanguageNds_nl.php
@@ -0,0 +1,76 @@
+<?php
+/** Dutch Lower Saxon (Nedersaksisch)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 4497
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>, Jens Frank
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason, Jens Frank
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageNds.php';
+
+class LanguageNds_nl extends LanguageNds {
+ private $mNamespaceNamesNds_nl = null;
+
+ private $mSkinNamesNds_nl = array(
+ 'standard' => 'Klassiek',
+ 'nostalgia' => 'Nostalgie',
+ 'cologneblue' => 'Keuls blauw',
+ 'smarty' => 'Paddington',
+ 'chick' => 'Sjiek'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesNds_nl = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciaol',
+ NS_MAIN => '',
+ NS_TALK => 'Overleg',
+ NS_USER => 'Gebruker',
+ NS_USER_TALK => 'Overleg_gebruker',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Overleg_' . $wgMetaNamespace,
+ NS_IMAGE => 'Ofbeelding',
+ NS_IMAGE_TALK => 'Overleg_ofbeelding',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Overleg_MediaWiki',
+ NS_TEMPLATE => 'Sjabloon',
+ NS_TEMPLATE_TALK => 'Overleg_sjabloon',
+ NS_HELP => 'Help',
+ NS_HELP_TALK => 'Overleg_help',
+ NS_CATEGORY => 'Categorie',
+ NS_CATEGORY_TALK => 'Overleg_categorie'
+ );
+
+ }
+
+ function getFallbackLanguage() {
+ return 'nds';
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesNds_nl;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesNds_nl + parent::getSkinNames();
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+ function formatDay( $day, $format ) {
+ return Language::formatDay( $day, $format );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageNl.php b/languages/LanguageNl.php
new file mode 100644
index 00000000..a7d59c2d
--- /dev/null
+++ b/languages/LanguageNl.php
@@ -0,0 +1,101 @@
+<?php
+/** Dutch (Nederlands)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesNl.php');
+}
+
+class LanguageNl extends LanguageUtf8 {
+ private $mMessagesNl, $mNamespaceNamesNl = null;
+
+ private $mQuickbarSettingsNl = array(
+ 'Uitgeschakeld', 'Links vast', 'Rechts vast', 'Links zwevend'
+ );
+
+ private $mSkinNamesNl = array(
+ 'standard' => 'Standaard',
+ 'nostalgia' => 'Nostalgie',
+ 'cologneblue' => 'Keuls blauw',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesNl;
+ $this->mMessagesNl =& $wgAllMessagesNl;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesNl = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciaal',
+ NS_MAIN => '',
+ NS_TALK => 'Overleg',
+ NS_USER => 'Gebruiker',
+ NS_USER_TALK => 'Overleg_gebruiker',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Overleg_' . $wgMetaNamespace,
+ NS_IMAGE => 'Afbeelding',
+ NS_IMAGE_TALK => 'Overleg_afbeelding',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Overleg_MediaWiki',
+ NS_TEMPLATE => 'Sjabloon',
+ NS_TEMPLATE_TALK => 'Overleg_sjabloon',
+ NS_HELP => 'Help',
+ NS_HELP_TALK => 'Overleg_help',
+ NS_CATEGORY => 'Categorie',
+ NS_CATEGORY_TALK => 'Overleg_categorie'
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesNl + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsNl;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesNl + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesNl[$key] ) ) {
+ return $this->mMessagesNl[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesNl;
+ }
+
+ function timeBeforeDate( ) {
+ return false;
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' ';
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function linkTrail() {
+ return '/^([a-zäöüïëéèà]+)(.*)$/sDu';
+ }
+
+}
+?>
diff --git a/languages/LanguageNn.php b/languages/LanguageNn.php
new file mode 100644
index 00000000..78229ecd
--- /dev/null
+++ b/languages/LanguageNn.php
@@ -0,0 +1,233 @@
+<?php
+/** Norwegian (Nynorsk)
+ *
+ * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
+ *
+ * @author Olve Utne
+ * @author Guttorm Flatabø
+ * @link http://meta.wikimedia.org/w/index.php?title=LanguageNn.php&action=history
+ * @link http://nn.wikipedia.org/w/index.php?title=Brukar:Dittaeva/LanguageNn.php&action=history
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesNn.php');
+}
+
+class LanguageNn extends LanguageUtf8 {
+ private $mMessagesNn, $mNamespaceNamesNn = null;
+
+ private $mQuickbarSettingsNn = array(
+ 'Ingen', 'Venstre', 'Høgre', 'Flytande venstre', 'Flytande høgre'
+ );
+
+ private $mSkinNamesNn = array(
+ 'standard' => 'Klassisk',
+ 'nostalgia' => 'Nostalgi',
+ 'cologneblue' => 'Kölnerblå',
+ 'myskin' => 'MiDrakt'
+ );
+
+ private $mDateFormatsNn = array(
+ 'Standard',
+ '15. januar 2001 kl. 16:12',
+ '15. jan. 2001 kl. 16:12',
+ '16:12, 15. januar 2001',
+ '16:12, 15. jan. 2001',
+ 'ISO 8601' => '2001-01-15 16:12:34'
+ );
+
+ private $mBookstoreListNn = array(
+ 'Bibsys' => 'http://ask.bibsys.no/ask/action/result?kilde=biblio&fid=isbn&lang=nn&term=$1',
+ 'BokBerit' => 'http://www.bokberit.no/annet_sted/bocker/$1.html',
+ 'Bokkilden' => 'http://www.bokkilden.no/ProductDetails.aspx?ProductId=$1',
+ 'Haugenbok' => 'http://www.haugenbok.no/resultat.cfm?st=hurtig&isbn=$1',
+ 'Akademika' => 'http://www.akademika.no/sok.php?isbn=$1',
+ 'Gnist' => 'http://www.gnist.no/sok.php?isbn=$1',
+ 'Amazon.co.uk' => 'http://www.amazon.co.uk/exec/obidos/ISBN=$1',
+ 'Amazon.de' => 'http://www.amazon.de/exec/obidos/ISBN=$1',
+ 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1'
+ );
+
+ # Note to translators:
+ # Please include the English words as synonyms. This allows people
+ # from other wikis to contribute more easily.
+ #
+ private $mMagicWordsNn = array(
+ # ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#redirect', '#omdiriger' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__INGAINNHALDSLISTE__', '__INGENINNHOLDSLISTE__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__ALLTIDINNHALDSLISTE__', '__ALLTIDINNHOLDSLISTE__' ),
+ MAG_TOC => array( 0, '__TOC__', '__INNHALDSLISTE__', '__INNHOLDSLISTE__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__INGABOLKENDRING__', '__INGABOLKREDIGERING__', '__INGENDELENDRING__'),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'MÅNADNO', 'MÅNEDNÅ' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'MÅNADNONAMN', 'MÅNEDNÅNAVN' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'MÅNADNOKORT', 'MÅNEDNÅKORT' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'DAGNO', 'DAGNÅ' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'DAGNONAMN', 'DAGNÅNAVN' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'ÅRNO', 'ÅRNÅ' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'TIDNO', 'TIDNÅ' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'INNHALDSSIDETAL', 'INNHOLDSSIDETALL' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES', 'FILTAL' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'SIDENAMN', 'SIDENAVN' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'SIDENAMNE', 'SIDENAVNE' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'NAMNEROM', 'NAVNEROM' ),
+ MAG_SUBST => array( 0, 'SUBST:', 'LIMINN:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'IKWIKMELD:' ),
+ MAG_END => array( 0, '__END__', '__SLUTT__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'mini', 'miniatyr' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1', 'mini=$1', 'miniatyr=$1' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'høgre', 'høyre' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'venstre' ),
+ MAG_IMG_NONE => array( 1, 'none', 'ingen' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1pk' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'sentrum' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'ramme' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'NETTSTADNAMN' ),
+ MAG_NS => array( 0, 'NS:', 'NR:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'LOKALLENKJE:', 'LOKALLENKE:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'LOKALLENKJEE:', 'LOKALLENKEE:' ),
+ MAG_SERVER => array( 0, 'SERVER', 'TENAR', 'TJENER' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME', 'TENARNAMN', 'TJENERNAVN' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH', 'SKRIPTSTI' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'GRAMMATIKK:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__' ),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__' ),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK', 'VEKENRNO', 'UKENRNÅ' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW', 'VEKEDAGNRNO', 'UKEDAGNRNÅ' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID', 'VERSJONSID' )
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesNn;
+ $this->mMessagesNn =& $wgAllMessagesNn;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesNn = array(
+ NS_MEDIA => 'Filpeikar',
+ NS_SPECIAL => 'Spesial',
+ NS_MAIN => '',
+ NS_TALK => 'Diskusjon',
+ NS_USER => 'Brukar',
+ NS_USER_TALK => 'Brukardiskusjon',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '-diskusjon',
+ NS_IMAGE => 'Fil',
+ NS_IMAGE_TALK => 'Fildiskusjon',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki-diskusjon',
+ NS_TEMPLATE => 'Mal',
+ NS_TEMPLATE_TALK => 'Maldiskusjon',
+ NS_HELP => 'Hjelp',
+ NS_HELP_TALK => 'Hjelpdiskusjon',
+ NS_CATEGORY => 'Kategori',
+ NS_CATEGORY_TALK => 'Kategoridiskusjon'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesNn + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsNn;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesNn + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsNn;
+ }
+
+ function getBookstoreList() {
+ return $this->mBookstoreListNn;
+ }
+
+ function &getMagicWords() {
+ $t = $this->mMagicWordsNn + parent::getMagicWords();
+ return $t;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesNn[$key] ) ) {
+ return $this->mMessagesNn[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesNn;
+ }
+
+
+ function time($ts, $adj = false, $format = true) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); } # Adjust based on the timezone setting.
+
+ $format = $this->dateFormat($format);
+
+ switch( $format ) {
+ # 2001-01-15 16:12:34
+ case 'ISO 8601': return substr( $ts, 8, 2 ) . ':' . substr( $ts, 10, 2 ) . ':' . substr( $ts, 12, 2 );
+ default: return substr( $ts, 8, 2 ) . ':' . substr( $ts, 10, 2 );
+ }
+
+ }
+
+ function date( $ts, $adj = false, $format = true) {
+ global $wgUser;
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); } # Adjust based on the timezone setting.
+ $format = $this->dateFormat($format);
+
+ switch( $format ) {
+ # 15. jan. 2001 kl. 16:12 || 16:12, 15. jan. 2001
+ case '2': case '4': return (0 + substr( $ts, 6, 2 )) . '. ' .
+ $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) . '. ' .
+ substr($ts, 0, 4);
+ # 2001-01-15 16:12:34
+ case 'ISO 8601': return substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' .substr($ts, 6, 2);
+
+ # 15. januar 2001 kl. 16:12 || 16:12, 15. januar 2001
+ default: return (0 + substr( $ts, 6, 2 )) . '. ' .
+ $this->getMonthName( substr( $ts, 4, 2 ) ) . ' ' .
+ substr($ts, 0, 4);
+ }
+
+ }
+
+ function timeanddate( $ts, $adj = false, $format = true) {
+ global $wgUser;
+
+ $format = $this->dateFormat($format);
+
+ switch ( $format ) {
+ # 16:12, 15. januar 2001 || 16:12, 15. jan. 2001
+ case '3': case '4': return $this->time( $ts, $adj, $format ) . ', ' . $this->date( $ts, $adj, $format );
+ # 2001-01-15 16:12:34
+ case 'ISO 8601': return $this->date( $ts, $adj, $format ) . ' ' . $this->time( $ts, $adj, $format );
+ # 15. januar 2001 kl. 16:12 || 15. jan. 2001 kl. 16:12
+ default: return $this->date( $ts, $adj, $format ) . ' kl. ' . $this->time( $ts, $adj, $format );
+ }
+
+ }
+
+ function separatorTransformTable() {
+ return array(
+ ',' => "\xc2\xa0",
+ '.' => ','
+ );
+ }
+
+}
+
+?>
diff --git a/languages/LanguageNo.php b/languages/LanguageNo.php
new file mode 100644
index 00000000..c91fd4f0
--- /dev/null
+++ b/languages/LanguageNo.php
@@ -0,0 +1,114 @@
+<?php
+/** Norwegian (Norsk (bokmål))
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesNo.php');
+}
+
+class LanguageNo extends LanguageUtf8 {
+ private $mMessagesNo, $mNamespaceNamesNo;
+
+ private $mQuickbarSettingsNo = array(
+ 'Ingen', 'Fast venstre', 'Fast høyre', 'Flytende venstre'
+ );
+
+ private $mSkinNamesNo = array(
+ 'standard' => 'Standard',
+ 'nostalgia' => 'Nostalgi',
+ 'cologneblue' => 'Kölnerblå'
+ );
+
+ private $mBookstoreListNo = array(
+ 'Antikvariat.net' => 'http://www.antikvariat.net/',
+ 'Frida' => 'http://wo.uio.no/as/WebObjects/frida.woa/wa/fres?action=sok&isbn=$1&visParametre=1&sort=alfabetisk&bs=50',
+ 'Bibsys' => 'http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&fid=isbn&term=$1&op=and&fid=bd&term=&arstall=&sortering=sortdate-&treffPrSide=50',
+ 'Akademika' => 'http://www.akademika.no/sok.php?ts=4&sok=$1',
+ 'Haugenbok' => 'http://www.haugenbok.no/resultat.cfm?st=extended&isbn=$1',
+ 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesNo;
+ $this->mMessagesNo =& $wgAllMessagesNo;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesNo = array(
+ NS_MEDIA => 'Medium',
+ NS_SPECIAL => 'Spesial',
+ NS_MAIN => '',
+ NS_TALK => 'Diskusjon',
+ NS_USER => 'Bruker',
+ NS_USER_TALK => 'Brukerdiskusjon',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '-diskusjon',
+ NS_IMAGE => 'Bilde',
+ NS_IMAGE_TALK => 'Bildediskusjon',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki-diskusjon',
+ NS_TEMPLATE => 'Mal',
+ NS_TEMPLATE_TALK => 'Maldiskusjon',
+ NS_HELP => 'Hjelp',
+ NS_HELP_TALK => 'Hjelpdiskusjon',
+ NS_CATEGORY => 'Kategori',
+ NS_CATEGORY_TALK => 'Kategoridiskusjon',
+ );
+ }
+
+ function getBookstoreList () {
+ return $this->mBookstoreListNo;
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesNo + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsNo;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesNo + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesNo[$key] ) ) {
+ return $this->mMessagesNo[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesNo;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function formatDay( $day, $format ) {
+ return parent::formatDay( $day, $format ) . '.';
+ }
+
+ function timeBeforeDate() {
+ return false;
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' kl.';
+ }
+
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+}
+
+?>
diff --git a/languages/LanguageNon.deps.php b/languages/LanguageNon.deps.php
new file mode 100644
index 00000000..1378ed43
--- /dev/null
+++ b/languages/LanguageNon.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageNon.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageIs.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageNon.php b/languages/LanguageNon.php
new file mode 100644
index 00000000..48924402
--- /dev/null
+++ b/languages/LanguageNon.php
@@ -0,0 +1,24 @@
+<?php
+/** Old Norse (Norrǿna)
+ *
+ * Defaults to Icelandic instead of English.
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageIs.php' );
+
+class LanguageNon extends LanguageIs {
+
+ function getFallbackLanguage() {
+ return 'is';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageNv.php b/languages/LanguageNv.php
new file mode 100644
index 00000000..28a924b0
--- /dev/null
+++ b/languages/LanguageNv.php
@@ -0,0 +1,88 @@
+<?php
+/** Navajo (Diné bizaad)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageNv extends LanguageUtf8 {
+ private $mMessagesNv, $mNamespaceNamesNv = null;
+
+ private $mSkinNamesNv = array(
+ 'mono' => 'Łáa\'ígíí',
+ 'monobook' => 'NaaltsoosŁáa\'ígíí'
+ );
+
+ private $mWeekdayNamesNv = array(
+ 'Damóogo', 'Damóo biiskání', 'Damóodóó naakiską́o', 'Damóodóó tágí jį́', 'Damóodóó dį́į́\' yiską́o',
+ 'Nda\'iiníísh', 'Yiską́ damóo'
+ );
+
+ private $mMonthNamesNv = array(
+ 'Yas Niłt\'ees', 'Atsá Biyáázh', 'Wóózhch\'į́į́d', 'T\'ą́ą́chil', 'T\'ą́ą́tsoh', 'Ya\'iishjááshchilí',
+ 'Ya\'iishjáástsoh', 'Bini\'ant\'ą́ą́ts\'ózí', 'Bini\'ant\'ą́ą́tsoh', 'Ghąąjį', 'Níłch\'its\'ósí',
+ 'Níłch\'itsoh'
+ );
+
+ private $mMonthAbbreviationsNv = array(
+ 'Ynts', 'Atsb', 'Wozh', 'Tchi', 'Ttso', 'Yjsh', 'Yjts', 'Btsz',
+ 'Btsx', 'Ghąj', 'Ntss', 'Ntsx'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesNv = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_MAIN => '',
+ NS_TALK => 'Naaltsoos_baa_yinísht\'į́',
+ NS_USER => 'Choinish\'įįhí',
+ NS_USER_TALK => 'Choinish\'įįhí_baa_yinísht\'į́',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace.'_baa_yinísht\'į́',
+ NS_IMAGE => 'E\'elyaaígíí',
+ NS_IMAGE_TALK => 'E\'elyaaígíí_baa_yinísht\'į́',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_baa_yinísht\'į́',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Template_talk',
+ NS_HELP => 'Aná\'álwo\'',
+ NS_HELP_TALK => 'Aná\'álwo\'_baa_yinísht\'į́',
+ NS_CATEGORY => 'T\'ááłáhági_át\'éego',
+ NS_CATEGORY_TALK => 'T\'ááłáhági_át\'éego_baa_yinísht\'į́'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesNv + parent::getNamespaces();
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesNv;
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getMonthName( $key ) {
+ return $this->mMonthNamesNv[$key-1];
+ }
+
+ function getMonthAbbreviation( $key ) {
+ return @$this->mMonthAbbreviationsNv[$key-1];
+ }
+
+ function getWeekdayName( $key ) {
+ return $this->mWeekdayNamesNv[$key-1];
+ }
+
+
+}
+
+?>
diff --git a/languages/LanguageOc.php b/languages/LanguageOc.php
new file mode 100644
index 00000000..7bbe2d96
--- /dev/null
+++ b/languages/LanguageOc.php
@@ -0,0 +1,101 @@
+<?php
+/** Occitan (Occitan)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesOc.php');
+}
+
+class LanguageOc extends LanguageUtf8 {
+ private $mMessagesOc, $mNamespaceNamesOc;
+
+ private $mQuickbarSettingsOc = array(
+ 'Cap', 'Esquèr', 'Drech', 'Flotejant a esquèr'
+ );
+
+ private $mSkinNamesOc = array(
+ 'standard' => 'Normal',
+ 'nostalgia' => 'Nostalgia',
+ 'cologneblue' => 'Còlonha Blau',
+ );
+
+ private $mBookstoreListOc = array(
+ 'Amazon.fr' => 'http://www.amazon.fr/exec/obidos/ISBN=$1'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesOc;
+ $this->mMessagesOc =& $wgAllMessagesOc;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesOc = array(
+ NS_SPECIAL => 'Especial',
+ NS_MAIN => '',
+ NS_TALK => 'Discutir',
+ NS_USER => 'Utilisator',
+ NS_USER_TALK => 'Discutida_Utilisator',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Discutida_'.$wgMetaNamespace,
+ NS_IMAGE => 'Imatge',
+ NS_IMAGE_TALK => 'Discutida_Imatge',
+ NS_MEDIAWIKI => 'Mediaòiqui',
+ NS_MEDIAWIKI_TALK => 'Discutida_Mediaòiqui',
+ NS_TEMPLATE => 'Modèl',
+ NS_TEMPLATE_TALK => 'Discutida_Modèl',
+ NS_HELP => 'Ajuda',
+ NS_HELP_TALK => 'Discutida_Ajuda',
+ NS_CATEGORY => 'Categoria',
+ NS_CATEGORY_TALK => 'Discutida_Categoria',
+ );
+ }
+
+ function getBookstoreList () {
+ return $this->mBookstoreListOc;
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesOc + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsOc;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesOc + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesOc[$key] ) ) {
+ return $this->mMessagesOc[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesOc;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function timeBeforeDate() {
+ return false;
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' à ';
+ }
+
+}
+
+?>
diff --git a/languages/LanguageOr.php b/languages/LanguageOr.php
new file mode 100644
index 00000000..6db19843
--- /dev/null
+++ b/languages/LanguageOr.php
@@ -0,0 +1,30 @@
+<?php
+/** Oriya (ଓଡ଼ିଆ)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageOr extends LanguageUtf8 {
+
+ function digitTransformTable() {
+ return array(
+ '0' => '୦',
+ '1' => '୧',
+ '2' => '୨',
+ '3' => '୩',
+ '4' => '୪',
+ '5' => '୫',
+ '6' => '୬',
+ '7' => '୭',
+ '8' => '୮',
+ '9' => '୯',
+ );
+ }
+
+}
+?>
diff --git a/languages/LanguageOs.deps.php b/languages/LanguageOs.deps.php
new file mode 100644
index 00000000..a48e4968
--- /dev/null
+++ b/languages/LanguageOs.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageOs.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageRu.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageOs.php b/languages/LanguageOs.php
new file mode 100644
index 00000000..0dd7389b
--- /dev/null
+++ b/languages/LanguageOs.php
@@ -0,0 +1,102 @@
+<?php
+/** Ossetic (Иронау)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageRu.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesOs.php');
+}
+
+class LanguageOs extends LanguageRu {
+ private $mMessagesOs, $mNamespaceNamesOs = null;
+
+ private $mQuickbarSettingsOs = array(
+ 'Ма равдис', 'Галиуырдыгæй', 'Рахизырдыгæй', 'Рахизырдыгæй ленккæнгæ'
+ );
+
+ private $mSkinNamesOs = array(
+ 'standard' => 'Стандартон',
+ 'nostalgia' => 'Æнкъард',
+ 'cologneblue' => 'Кёльны æрхæндæг',
+ 'davinci' => 'Да Винчи',
+ 'mono' => 'Моно',
+ 'monobook' => 'Моно-чиныг',
+ 'myskin' => 'Мæхи',
+ 'chick' => 'Карк'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesOs;
+ $this->mMessagesOs =& $wgAllMessagesOs;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesOs = array(
+ NS_MEDIA => 'Media', //чтоб не писать "Мультимедия"
+ NS_SPECIAL => 'Сæрмагонд',
+ NS_MAIN => '',
+ NS_TALK => 'Дискусси',
+ NS_USER => 'Архайæг',
+ NS_USER_TALK => 'Архайæджы_дискусси',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Дискусси_' . $wgMetaNamespace,
+ NS_IMAGE => 'Ныв',
+ NS_IMAGE_TALK => 'Нывы_тыххæй_дискусси',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Дискусси_MediaWiki',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Шаблоны_тыххæй_дискусси',
+ NS_HELP => 'Æххуыс',
+ NS_HELP_TALK => 'Æххуысы_тыххæй_дискусси',
+ NS_CATEGORY => 'Категори',
+ NS_CATEGORY_TALK => 'Категорийы_тыххæй_дискусси',
+ );
+
+ }
+
+ function getFallbackLanguage() {
+ return 'ru';
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesOs + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsOs;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesOs + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesOs[$key] ) ) {
+ return $this->mMessagesOs[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesOs;
+ }
+
+ #'linkprefix' => '/^(.*?)(„|«)$/sD',
+
+ function linkTrail() {
+ return '/^((?:[a-z]|а|æ|б|в|г|д|е|ё|ж|з|и|й|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я|“|»)+)(.*)$/sDu';
+ }
+
+ function fallback8bitEncoding() {
+ return 'windows-1251';
+ }
+
+}
+
+?>
diff --git a/languages/LanguagePa.php b/languages/LanguagePa.php
new file mode 100644
index 00000000..4588e0b5
--- /dev/null
+++ b/languages/LanguagePa.php
@@ -0,0 +1,97 @@
+<?php
+/** Punjabi (Gurmukhi)
+ * @package MediaWiki
+ * @subpackage Language
+ */
+# This file is dual-licensed under GFDL and GPL.
+#
+# See: http://bugzilla.wikimedia.org/show_bug.cgi?id=1478
+
+require_once('LanguageUtf8.php');
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesPa.php');
+}
+
+class LanguagePa extends LanguageUtf8 {
+ private $mMessagesPa, $mNamespaceNamesPa = null;
+
+ private $mQuickbarSettingsPa = array(
+ 'ਕੋਈ ਨਹੀਂ', 'ਸਥਿਰ ਖੱਬੇ', 'ਸਥਿਰ ਸੱਜਾ', 'ਤੈਰਦਾ ਖੱਬੇ'
+ );
+
+ private $mSkinNamesPa = array(
+ 'standard' => 'ਮਿਆਰੀ',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesPa;
+ $this->mMessagesPa =& $wgAllMessagesPa;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesPa = array(
+ NS_MEDIA => 'ਮੀਡੀਆ',
+ NS_SPECIAL => 'ਖਾਸ',
+ NS_MAIN => '',
+ NS_TALK => 'ਚਰਚਾ',
+ NS_USER => 'ਮੈਂਬਰ',
+ NS_USER_TALK => 'ਮੈਂਬਰ_ਚਰਚਾ',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_ਚਰਚਾ',
+ NS_IMAGE => 'ਤਸਵੀਰ',
+ NS_IMAGE_TALK => 'ਤਸਵੀਰ_ਚਰਚਾ',
+ NS_MEDIAWIKI => 'ਮੀਡੀਆਵਿਕਿ',
+ NS_MEDIAWIKI_TALK => 'ਮੀਡੀਆਵਿਕਿ_ਚਰਚਾ',
+ NS_TEMPLATE => 'ਨਮੂਨਾ',
+ NS_TEMPLATE_TALK => 'ਨਮੂਨਾ_ਚਰਚਾ',
+ NS_HELP => 'ਮਦਦ',
+ NS_HELP_TALK => 'ਮਦਦ_ਚਰਚਾ',
+ NS_CATEGORY => 'ਸ਼੍ਰੇਣੀ',
+ NS_CATEGORY_TALK => 'ਸ਼੍ਰੇਣੀ_ਚਰਚਾ'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesPa + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsPa;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesPa + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesPa[$key] ) ) {
+ return $this->mMessagesPa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesPa;
+ }
+
+ function digitTransformTable() {
+ return array(
+ '0' => '੦',
+ '1' => '੧',
+ '2' => '੨',
+ '3' => '੩',
+ '4' => '੪',
+ '5' => '੫',
+ '6' => '੬',
+ '7' => '੭',
+ '8' => '੮',
+ '9' => '੯'
+ );
+ }
+
+}
+?>
diff --git a/languages/LanguagePl.php b/languages/LanguagePl.php
new file mode 100644
index 00000000..af5dd13f
--- /dev/null
+++ b/languages/LanguagePl.php
@@ -0,0 +1,133 @@
+<?php
+/** Polish (Polski)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesPl.php');
+}
+
+class LanguagePl extends LanguageUtf8 {
+ private $mMessagesPl, $mNamespaceNamesPl = null;
+
+ private $mQuickbarSettingsPl = array(
+ 'Brak', 'Stały, z lewej', 'Stały, z prawej', 'Unoszący się, z lewej'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesPl;
+ $this->mMessagesPl =& $wgAllMessagesPl;
+
+ global $wgMetaNamespace;
+ # Yucky hardcoding hack as polish grammar need tweaking :o)
+ switch( $wgMetaNamespace ) {
+ case 'Wikipedia':
+ $wgMetaTalkNamespace = 'Dyskusja_Wikipedii';
+ $wgMetaUserNamespace = 'Wikipedysta';
+ $wgMetaUserTalkNamespace = 'Dyskusja_Wikipedysty'; break;
+ case 'Wikisłownik':
+ $wgMetaTalkNamespace = 'Wikidyskusja';
+ $wgMetaUserNamespace = 'Wikipedysta';
+ $wgMetaUserTalkNamespace = 'Dyskusja_Wikipedysty'; break;
+ case 'Wikicytaty':
+ $wgMetaTalkNamespace = 'Dyskusja_Wikicytatów';
+ $wgMetaUserNamespace = 'Wikipedysta';
+ $wgMetaUserTalkNamespace = 'Dyskusja_Wikipedysty'; break;
+ case 'Wikiźródła':
+ $wgMetaTalkNamespace = 'Dyskusja_Wikiźródeł';
+ $wgMetaUserNamespace = 'Wikiskryba';
+ $wgMetaUserTalkNamespace = 'Dyskusja_Wikiskryby'; break;
+ case 'Wikibooks':
+ $wgMetaTalkNamespace = 'Dyskusja_Wikibooks';
+ $wgMetaUserNamespace = 'Wikipedysta';
+ $wgMetaUserTalkNamespace = 'Dyskusja_Wikipedysty'; break;
+ case 'Wikinews':
+ $wgMetaTalkNamespace = 'Dyskusja_Wikinews';
+ $wgMetaUserNamespace = 'Wikireporter';
+ $wgMetaUserTalkNamespace = 'Dyskusja_Wikireportera'; break;
+ default:
+ $wgMetaTalkNamespace = 'Dyskusja_' . $wgMetaNamespace;
+ $wgMetaUserNamespace = 'Użytkownik';
+ $wgMetaUserTalkNamespace = 'Dyskusja_użytkownika'; break;
+ }
+
+ $this->mNamespaceNamesPl = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Specjalna',
+ NS_MAIN => '',
+ NS_TALK => 'Dyskusja',
+ NS_USER => $wgMetaUserNamespace,
+ NS_USER_TALK => $wgMetaUserTalkNamespace,
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaTalkNamespace, // see above
+ NS_IMAGE => 'Grafika',
+ NS_IMAGE_TALK => 'Dyskusja_grafiki',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Dyskusja_MediaWiki',
+ NS_TEMPLATE => 'Szablon',
+ NS_TEMPLATE_TALK => 'Dyskusja_szablonu',
+ NS_HELP => 'Pomoc',
+ NS_HELP_TALK => 'Dyskusja_pomocy',
+ NS_CATEGORY => 'Kategoria',
+ NS_CATEGORY_TALK => 'Dyskusja_kategorii'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesPl + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsPl;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesPl[$key] ) ) {
+ return $this->mMessagesPl[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesPl;
+ }
+
+ function getMonthNameGen( $key ) {
+ global $wgMonthNamesGenEn, $wgContLang;
+ // see who called us and use the correct message function
+ if( get_class( $wgContLang->getLangObj() ) == get_class( $this ) )
+ return wfMsgForContent( $wgMonthNamesGenEn[$key-1] );
+ else
+ return wfMsg( $wgMonthNamesGenEn[$key-1] );
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ # Check for Latin-2 backwards-compatibility URLs
+ function fallback8bitEncoding() {
+ return 'iso-8859-2';
+ }
+
+ function separatorTransformTable() {
+ return array(
+ ',' => "\xc2\xa0", // @bug 2749
+ '.' => ','
+ );
+ }
+
+ function linkTrail() {
+ return '/^([a-zęóąśłżźćńĘÓĄŚŁŻŹĆŃ]+)(.*)$/sDu';
+ }
+
+}
+?>
diff --git a/languages/LanguagePms.deps.php b/languages/LanguagePms.deps.php
new file mode 100644
index 00000000..14bfca52
--- /dev/null
+++ b/languages/LanguagePms.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguagePms.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageIt.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguagePms.php b/languages/LanguagePms.php
new file mode 100644
index 00000000..ccf3e44d
--- /dev/null
+++ b/languages/LanguagePms.php
@@ -0,0 +1,75 @@
+<?php
+/** Piedmontese (Piemontèis)
+ * Users are bilingual in Piedmontese and Italian, using Italian as template.
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 5362
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>, Jens Frank
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason, Jens Frank
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageIt.php';
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesPms.php');
+}
+
+class LanguagePms extends LanguageIt {
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesPms;
+ $this->mMessagesPms =& $wgAllMessagesPms;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesPms = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_MAIN => '',
+ NS_TALK => 'Discussion',
+ NS_USER => 'Utent',
+ NS_USER_TALK => 'Ciaciarade',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Discussion_ant_sla_' . $wgMetaNamespace,
+ NS_IMAGE => 'Figura',
+ NS_IMAGE_TALK => 'Discussion_dla_figura',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discussion_dla_MediaWiki',
+ NS_TEMPLATE => 'Stamp',
+ NS_TEMPLATE_TALK => 'Discussion_dlë_stamp',
+ NS_HELP => 'Agiut',
+ NS_HELP_TALK => 'Discussion_ant_sl\'agiut',
+ NS_CATEGORY => 'Categorìa',
+ NS_CATEGORY_TALK => 'Discussion_ant_sla_categorìa'
+ );
+
+ }
+
+ function getFallbackLanguage() {
+ return 'it';
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesPms + parent::getNamespaces();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesPms[$key] ) ) {
+ return $this->mMessagesPms[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesPms;
+ }
+
+}
+
+?>
diff --git a/languages/LanguagePs.php b/languages/LanguagePs.php
new file mode 100644
index 00000000..ea5fa1bf
--- /dev/null
+++ b/languages/LanguagePs.php
@@ -0,0 +1,26 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+# Stub for Pashto
+
+require_once( "LanguageUtf8.php" );
+
+class LanguagePs extends LanguageUtf8 {
+
+ function getDefaultUserOptions() {
+ $opt = Language::getDefaultUserOptions();
+ $opt["quickbar"] = 2; # Right-to-left
+ $opt["underline"] = 0; # Underline is hard to read in Arabic script
+ return $opt;
+ }
+
+ # For right-to-left language support
+ function isRTL() {
+ return true;
+ }
+}
+
+?>
diff --git a/languages/LanguagePt.php b/languages/LanguagePt.php
new file mode 100644
index 00000000..47f8f95f
--- /dev/null
+++ b/languages/LanguagePt.php
@@ -0,0 +1,202 @@
+<?php
+/** Portuguese (Português)
+ * This translation was made by:
+ * - Yves Marques Junqueira
+ * - Rodrigo Calanca Nishino
+ * - Nuno Tavares
+ * - Paulo Juntas
+ * - Manuel Menezes de Sequeira
+ * - Sérgio Ribeiro
+ * from the Portuguese Wikipedia
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+#
+# In general you should not make customizations in these language files
+# directly, but should use the MediaWiki: special namespace to customize
+# user interface messages through the wiki.
+# See http://meta.wikimedia.org/wiki/MediaWiki_namespace
+#
+
+/* private */ $wgNamespaceNamesPt = array(
+ NS_MEDIA => 'Media', # -2
+ NS_SPECIAL => 'Especial', # -1
+ NS_MAIN => '', # 0
+ NS_TALK => 'Discussão', # 1
+ NS_USER => 'Usuário',
+ NS_USER_TALK => 'Usuário_Discussão',
+/*
+ Above entries are for PT_br. The following entries should
+ be used instead. But:
+
+ DO NOT USE THOSE ENTRIES WITHOUT MIGRATING STUFF ON
+ WIKIMEDIA WEB SERVERS FIRST !! You will just break a lot
+ of links 8-)
+
+ NS_USER => 'Utilizador', # 2
+ NS_USER_TALK => 'Utilizador_Discussão', # 3
+*/
+ NS_PROJECT => $wgMetaNamespace, # 4
+ NS_PROJECT_TALK => $wgMetaNamespace.'_Discussão', # 5
+ NS_IMAGE => 'Imagem', # 6
+ NS_IMAGE_TALK => 'Imagem_Discussão', # 7
+ NS_MEDIAWIKI => 'MediaWiki', # 8
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Discussão', # 9
+ NS_TEMPLATE => 'Predefinição', # 10
+ NS_TEMPLATE_TALK => 'Predefinição_Discussão', # 11
+ NS_HELP => 'Ajuda', # 12
+ NS_HELP_TALK => 'Ajuda_Discussão', # 13
+ NS_CATEGORY => 'Categoria', # 14
+ NS_CATEGORY_TALK => 'Categoria_Discussão' # 15
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsPt = array(
+ 'Nenhuma', 'Fixo à esquerda', 'Fixo à direita', 'Flutuando à esquerda', 'Flutuando à direita'
+);
+
+/* private */ $wgSkinNamesPt = array(
+ 'standard' => 'Clássico',
+ 'nostalgia' => 'Nostalgia',
+ 'cologneblue' => 'Azul colonial',
+ 'davinci' => 'DaVinci',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ 'myskin' => 'MySkin',
+ 'chick' => 'Chick'
+) + $wgSkinNamesEn;
+
+# Whether to use user or default setting in Language::date()
+/* private */ $wgDateFormatsPt = array(
+ MW_DATE_DEFAULT => 'Sem preferência',
+ MW_DATE_DMY => '16:12, 15 Janeiro 2001',
+ MW_DATE_MDY => '16:12, Janeiro 15, 2001',
+ MW_DATE_YMD => '16:12, 2001 Janeiro 15',
+ MW_DATE_ISO => '2001-01-15 16:12:34'
+);
+
+
+# Note to translators:
+# Please include the English words as synonyms. This allows people
+# from other wikis to contribute more easily.
+#
+/* private */ $wgMagicWordsPt = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#REDIRECT', '#redir' ),
+ MAG_NOTOC => array( 0, '__NOTOC__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__' ),
+ MAG_TOC => array( 0, '__TOC__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__' ),
+ MAG_START => array( 0, '__START__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE' ),
+ MAG_MSG => array( 0, 'MSG:' ),
+ MAG_SUBST => array( 0, 'SUBST:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:' ),
+ MAG_END => array( 0, '__END__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1'),
+ MAG_IMG_RIGHT => array( 1, 'right', 'direita' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'esquerda' ),
+ MAG_IMG_NONE => array( 1, 'none', 'nenhum' ),
+ MAG_IMG_WIDTH => array( 1, '$1px' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame' ),
+ MAG_INT => array( 0, 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME' ),
+ MAG_NS => array( 0, 'NS:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:' ),
+ MAG_SERVER => array( 0, 'SERVER' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__'),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__'),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID' ),
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesPt.php');
+}
+
+class LanguagePt extends LanguageUtf8 {
+
+ /**
+ * Portuguese numeric format is 123 456,78
+ */
+ function separatorTransformTable() {
+ return array(',' => ' ', '.' => ',' );
+ }
+
+ /**
+ * Exports $wgNamespaceNamesPt
+ * @return array
+ */
+ function getNamespaces() {
+ global $wgNamespaceNamesPt;
+ return $wgNamespaceNamesPt;
+ }
+
+ /**
+ * Exports $wgQuickbarSettingsPt
+ * @return array
+ */
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsPt;
+ return $wgQuickbarSettingsPt;
+ }
+
+ /**
+ * Exports $wgSkinNamesPt
+ * @return array
+ */
+ function getSkinNames() {
+ global $wgSkinNamesPt;
+ return $wgSkinNamesPt;
+ }
+
+ /**
+ * Exports $wgDateFormatsPt
+ * @return array
+ */
+ function getDateFormats() {
+ global $wgDateFormatsPt;
+ return $wgDateFormatsPt;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesPt;
+ if ( isset( $wgAllMessagesPt[$key] ) ) {
+ return $wgAllMessagesPt[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ /**
+ * Exports $wgMagicWordsPt
+ * @return array
+ */
+ function getMagicWords() {
+ global $wgMagicWordsPt;
+ return $wgMagicWordsPt;
+ }
+}
+?>
diff --git a/languages/LanguagePt_br.deps.php b/languages/LanguagePt_br.deps.php
new file mode 100644
index 00000000..7fccaceb
--- /dev/null
+++ b/languages/LanguagePt_br.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguagePt_br.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguagePt.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguagePt_br.php b/languages/LanguagePt_br.php
new file mode 100644
index 00000000..f4abef79
--- /dev/null
+++ b/languages/LanguagePt_br.php
@@ -0,0 +1,80 @@
+<?php
+/** Brazilian Portugese (Portuguêsi do Brasil)
+ * @package MediaWiki
+ * @subpackage Language
+ */
+#
+# This translation was made by Yves Marques Junqueira
+# and Rodrigo Calanca Nishino from Portuguese Wikipedia
+#
+
+require_once( 'LanguagePt.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesPt_br.php');
+}
+
+class LanguagePt_br extends LanguagePt {
+ private $mMessagesPt_br, $mNamespaceNamesPt_br = null;
+
+ private $mSkinNamesPt_br = array(
+ 'standard' => 'Padrão',
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesPt_br;
+ $this->mMessagesPt_br =& $wgAllMessagesPt_br;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesPt_br = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Especial',
+ NS_MAIN => '',
+ NS_TALK => 'Discussão',
+ NS_USER => 'Usuário',
+ NS_USER_TALK => 'Usuário_Discussão',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_Discussão',
+ NS_IMAGE => 'Imagem',
+ NS_IMAGE_TALK => 'Imagem_Discussão',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Discussão',
+ NS_TEMPLATE => 'Predefinição',
+ NS_TEMPLATE_TALK => 'Predefinição_Discussão',
+ NS_HELP => 'Ajuda',
+ NS_HELP_TALK => 'Ajuda_Discussão',
+ NS_CATEGORY => 'Categoria',
+ NS_CATEGORY_TALK => 'Categoria_Discussão'
+ );
+
+ }
+
+ function getFallbackLanguage() {
+ return 'pt';
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesPt_br + parent::getNamespaces();
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesPt_br + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesPt_br[$key] ) ) {
+ return $this->mMessagesPt_br[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesPt_br;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageQu.deps.php b/languages/LanguageQu.deps.php
new file mode 100644
index 00000000..5c4a4fd2
--- /dev/null
+++ b/languages/LanguageQu.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageQu.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageEs.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageQu.php b/languages/LanguageQu.php
new file mode 100644
index 00000000..d9362bc5
--- /dev/null
+++ b/languages/LanguageQu.php
@@ -0,0 +1,28 @@
+<?php
+/** Quechua (Runa Simi)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageEs.php';
+
+class LanguageQu extends LanguageEs {
+
+ function getFallbackLanguage() {
+ return 'es';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageRmy.deps.php b/languages/LanguageRmy.deps.php
new file mode 100644
index 00000000..cde8afef
--- /dev/null
+++ b/languages/LanguageRmy.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageRmy.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageRo.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageRmy.php b/languages/LanguageRmy.php
new file mode 100644
index 00000000..f4b9583d
--- /dev/null
+++ b/languages/LanguageRmy.php
@@ -0,0 +1,52 @@
+<?php
+/** Vlax Romany (Romani)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 5422
+ *
+ * @author Niklas Laxström
+ *
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+/**
+ * Use Romanian as default instead of English
+ */
+require_once 'LanguageRo.php';
+
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesRmy.php');
+}
+
+class LanguageRmy extends LanguageRo {
+ private $mMessagesRmy = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesRmy;
+ $this->mMessagesRmy =& $wgAllMessagesRmy;
+
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesRmy[$key] ) ) {
+ return $this->mMessagesRmy[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesRmy;
+ }
+
+ function getFallbackLanguage() {
+ return 'ro';
+ }
+
+}
+?> \ No newline at end of file
diff --git a/languages/LanguageRo.php b/languages/LanguageRo.php
new file mode 100644
index 00000000..1cac3d02
--- /dev/null
+++ b/languages/LanguageRo.php
@@ -0,0 +1,130 @@
+<?php
+/** Romanian (Română)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesRo.php');
+}
+
+class LanguageRo extends LanguageUtf8 {
+ private $mMessagesRo, $mNamespaceNamesRo = null;
+
+ private $mQuickbarSettingsRo = array(
+ 'Fără', 'Fixă, în stânga', 'Fixă, în dreapta', 'Liberă'
+ );
+
+ private $mSkinNamesRo = array(
+ 'standard' => 'Normală',
+ 'nostalgia' => 'Nostalgie'
+ );
+
+ private $mMagicWordsRo = array(
+ # ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#redirect' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__FARACUPRINS__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__FARAEDITSECTIUNE__' ),
+ MAG_START => array( 0, '__START__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', '{{NUMARLUNACURENTA}}' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', '{{NUMELUNACURENTA}}' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', '{{NUMARZIUACURENTA}}' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', '{{NUMEZIUACURENTA}}' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', '{{ANULCURENT}}' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', '{{ORACURENTA}}' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', '{{NUMARDEARTICOLE}}' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', '{{NUMELUNACURENTAGEN}}' ),
+ MAG_SUBST => array( 0, 'SUBST:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'MSJNOU:' ),
+ MAG_END => array( 0, '__END__', '__FINAL__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb' ),
+ MAG_IMG_RIGHT => array( 1, 'right' ),
+ MAG_IMG_LEFT => array( 1, 'left' ),
+ MAG_IMG_NONE => array( 1, 'none' ),
+ MAG_IMG_WIDTH => array( 1, '$1px' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre' ),
+ MAG_INT => array( 0, 'INT:' )
+ );
+
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesRo;
+ $this->mMessagesRo =& $wgAllMessagesRo;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesRo = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_MAIN => '',
+ NS_TALK => 'Discuţie',
+ NS_USER => 'Utilizator',
+ NS_USER_TALK => 'Discuţie_Utilizator',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Discuţie_'.$wgMetaNamespace,
+ NS_IMAGE => 'Imagine',
+ NS_IMAGE_TALK => 'Discuţie_Imagine',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discuţie_MediaWiki',
+ NS_TEMPLATE => 'Format',
+ NS_TEMPLATE_TALK => 'Discuţie_Format',
+ NS_HELP => 'Ajutor',
+ NS_HELP_TALK => 'Discuţie_Ajutor',
+ NS_CATEGORY => 'Categorie',
+ NS_CATEGORY_TALK => 'Discuţie_Categorie'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesRo + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsRo;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesRo + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function &getMagicWords() {
+ $t = $this->mMagicWordsRo + parent::getMagicWords();
+ return $t;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesRo[$key] ) ) {
+ return $this->mMessagesRo[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesRo;
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' ';
+ }
+
+ function timeBeforeDate() {
+ return false;
+ }
+
+ function fallback8bitEncoding() {
+ return 'iso8859-2';
+ }
+
+}
+
+?>
diff --git a/languages/LanguageRu.php b/languages/LanguageRu.php
new file mode 100644
index 00000000..4b1b385f
--- /dev/null
+++ b/languages/LanguageRu.php
@@ -0,0 +1,245 @@
+<?php
+/** Russian (русский язык)
+ *
+ * You can contact Alexander Sigachov (alexander.sigachov at Googgle Mail)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+
+/* private */ $wgNamespaceNamesRu = array(
+ NS_MEDIA => 'Медиа',
+ NS_SPECIAL => 'Служебная',
+ NS_MAIN => '',
+ NS_TALK => 'Обсуждение',
+ NS_USER => 'Участник',
+ NS_USER_TALK => 'Обсуждение_участника',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => FALSE, #Set in constructor
+ NS_IMAGE => 'Изображение',
+ NS_IMAGE_TALK => 'Обсуждение_изображения',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Обсуждение_MediaWiki',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Обсуждение_шаблона',
+ NS_HELP => 'Справка',
+ NS_HELP_TALK => 'Обсуждение_справки',
+ NS_CATEGORY => 'Категория',
+ NS_CATEGORY_TALK => 'Обсуждение_категории',
+) + $wgNamespaceNamesEn;
+
+
+/* private */ $wgQuickbarSettingsRu = array(
+ 'Не показывать', 'Неподвижная слева', 'Неподвижная справа', 'Плавающая слева', 'Плавающая справа'
+);
+
+/* private */ $wgSkinNamesRu = array(
+ 'standard' => 'Стандартный',
+ 'nostalgia' => 'Ностальгия',
+ 'cologneblue' => 'Кёльнская тоска',
+ 'davinci' => 'Да Винчи',
+ 'mono' => 'Моно',
+ 'monobook' => 'Моно-книга',
+ 'myskin' => 'Своё',
+ 'chick' => 'Цыпа'
+);
+
+
+/* private */ $wgBookstoreListRu = array(
+ 'ОЗОН' => 'http://www.ozon.ru/?context=advsearch_book&isbn=$1',
+ 'Books.Ru' => 'http://www.books.ru/shop/search/advanced?as%5Btype%5D=books&as%5Bname%5D=&as%5Bisbn%5D=$1&as%5Bauthor%5D=&as%5Bmaker%5D=&as%5Bcontents%5D=&as%5Binfo%5D=&as%5Bdate_after%5D=&as%5Bdate_before%5D=&as%5Bprice_less%5D=&as%5Bprice_more%5D=&as%5Bstrict%5D=%E4%E0&as%5Bsub%5D=%E8%F1%EA%E0%F2%FC&x=22&y=8',
+ 'Яндекс.Маркет' => 'http://market.yandex.ru/search.xml?text=$1',
+ 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1'
+);
+
+
+# Note to translators:
+# Please include the English words as synonyms. This allows people
+# from other wikis to contribute more easily.
+#
+/* private */ $wgMagicWordsRu = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#REDIRECT', '#ПЕРЕНАПРАВЛЕНИЕ', '#ПЕРЕНАПР'),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__БЕЗСОДЕРЖАНИЯ__'),
+ MAG_FORCETOC => array( 0, '__FORCETOC__'),
+ MAG_TOC => array( 0, '__TOC__', '__СОДЕРЖАНИЕ__'),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__БЕЗРЕДАКТИРОВАНИЯРАЗДЕЛА__'),
+ MAG_START => array( 0, '__START__', '__НАЧАЛО__'),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'ТЕКУЩИЙМЕСЯЦ'),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME','НАЗВАНИЕТЕКУЩЕГОМЕСЯЦА'),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN','НАЗВАНИЕТЕКУЩЕГОМЕСЯЦАРОД'),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'НАЗВАНИЕТЕКУЩЕГОМЕСЯЦААБР'),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY','ТЕКУЩИЙДЕНЬ'),
+ MAG_CURRENTDAY2 => array( 1, 'CURRENTDAY2','ТЕКУЩИЙДЕНЬ2'),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME','НАЗВАНИЕТЕКУЩЕГОДНЯ'),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR','ТЕКУЩИЙГОД'),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME','ТЕКУЩЕЕВРЕМЯ'),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES','КОЛИЧЕСТВОСТАТЕЙ'),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES', 'КОЛИЧЕСТВОФАЛОВ'),
+ MAG_PAGENAME => array( 1, 'PAGENAME','НАЗВАНИЕСТРАНИЦЫ'),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE','НАЗВАНИЕСТРАНИЦЫ2'),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE','ПРОСТРАНСТВОИМЁН'),
+ MAG_MSG => array( 0, 'MSG:'),
+ MAG_SUBST => array( 0, 'SUBST:','ПОДСТ:'),
+ MAG_MSGNW => array( 0, 'MSGNW:'),
+ MAG_END => array( 0, '__END__','__КОНЕЦ__'),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'мини'),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1', 'мини=$1'),
+ MAG_IMG_RIGHT => array( 1, 'right','справа'),
+ MAG_IMG_LEFT => array( 1, 'left','слева'),
+ MAG_IMG_NONE => array( 1, 'none'),
+ MAG_IMG_WIDTH => array( 1, '$1px','$1пкс'),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre','центр'),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame','обрамить'),
+ MAG_INT => array( 0, 'INT:'),
+ MAG_SITENAME => array( 1, 'SITENAME','НАЗВАНИЕСАЙТА'),
+ MAG_NS => array( 0, 'NS:','ПИ:'),
+ MAG_LOCALURL => array( 0, 'LOCALURL:'),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:'),
+ MAG_SERVER => array( 0, 'SERVER','СЕРВЕР'),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME', 'НАЗВАНИЕСЕРВЕРА'),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH', 'ПУТЬКСКРИПТУ'),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:'),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__БЕЗПРЕОБРАЗОВАНИЯЗАГОЛОВКА__'),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__БЕЗПРЕОБРАЗОВАНИЯТЕКСТА__'),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK','ТЕКУЩАЯНЕДЕЛЯ'),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW','ТЕКУЩИЙДЕНЬНЕДЕЛИ'),
+ MAG_REVISIONID => array( 1, 'REVISIONID', 'ИДВЕРСИИ'),
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesRu.php');
+}
+
+/* Please, see Language.php for general function comments */
+class LanguageRu extends LanguageUtf8 {
+ function __construct() {
+ global $wgNamespaceNamesRu, $wgMetaNamespace;
+ parent::__construct();
+ $wgNamespaceNamesRu[NS_PROJECT_TALK] = 'Обсуждение_' . $this->convertGrammar( $wgMetaNamespace, 'genitive' );
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesRu;
+ return $wgNamespaceNamesRu;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsRu;
+ return $wgQuickbarSettingsRu;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesRu;
+ return $wgSkinNamesRu;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsRu;
+ return $wgDateFormatsRu;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesRu;
+ return isset($wgAllMessagesRu[$key]) ? $wgAllMessagesRu[$key] : parent::getMessage($key);
+ }
+
+ function fallback8bitEncoding() {
+ return "windows-1251";
+ }
+
+ //only for quotation mark
+ function linkPrefixExtension() { return true; }
+
+ function getMagicWords() {
+ global $wgMagicWordsRu;
+ return $wgMagicWordsRu;
+ }
+
+ # 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['ru'][$case][$word]) ) {
+ return $wgGrammarForms['ru'][$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': #винительный падеж
+ #stub
+ break;
+ case 'instrumental': #творительный падеж
+ #stub
+ break;
+ case 'prepositional': #предложный падеж
+ #stub
+ break;
+ }
+ return $word;
+ }
+
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ $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;
+ }
+ }
+ }
+
+ /*
+ * Russian 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 $_;
+ }
+ }
+
+ function separatorTransformTable() {
+ return array(
+ ',' => "\xc2\xa0",
+ '.' => ','
+ );
+ }
+
+}
+?>
diff --git a/languages/LanguageSc.php b/languages/LanguageSc.php
new file mode 100644
index 00000000..8a7c9c01
--- /dev/null
+++ b/languages/LanguageSc.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+/* private */ $wgNamespaceNamesSc = array(
+ NS_SPECIAL => 'Speciale',
+ NS_MAIN => '',
+ NS_TALK => 'Contièndha',
+ NS_USER => 'Utente',
+ NS_USER_TALK => 'Utente_discussioni',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_discussioni',
+ NS_IMAGE => 'Immàgini',
+ NS_IMAGE_TALK => 'Immàgini_contièndha'
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsSc = array(
+ "Nessuno", "Fisso a sinistra", "Fisso a destra", "Fluttuante a sinistra"
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesSc.php');
+}
+
+class LanguageSc extends LanguageUtf8 {
+
+ function getNamespaces() {
+ global $wgNamespaceNamesSc;
+ return $wgNamespaceNamesSc;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsSc;
+ return $wgQuickbarSettingsSc;
+ }
+
+ function formatMonth( $month, $format ) {
+ return $this->getMonthAbbreviation( $month );
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesSc;
+ if(array_key_exists($key, $wgAllMessagesSc))
+ return $wgAllMessagesSc[$key];
+ else
+ return parent::getMessage($key);
+ }
+
+}
+
+?>
diff --git a/languages/LanguageSd.php b/languages/LanguageSd.php
new file mode 100644
index 00000000..15268155
--- /dev/null
+++ b/languages/LanguageSd.php
@@ -0,0 +1,18 @@
+<?php
+/** Sindhi language file ( सिनधि )
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageSd extends LanguageUtf8 {
+ #FIXME: inherit almost everything for now
+
+ function isRTL() {
+ return true;
+ }
+}
+
+?>
diff --git a/languages/LanguageSk.php b/languages/LanguageSk.php
new file mode 100644
index 00000000..be509000
--- /dev/null
+++ b/languages/LanguageSk.php
@@ -0,0 +1,263 @@
+<?php
+/**
+ * Slovak (Slovenčina)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesSk.php');
+}
+
+class LanguageSk extends LanguageUtf8 {
+
+ private $mQuickbarSettingsSk = array(
+ 'Žiadne', 'Ukotvené vľavo', 'Ukotvené vpravo', 'Plávajúce vľavo'
+ );
+
+ private $mDateFormatsSk = array(
+ 'Default',
+ '15. január 2001 16:12',
+ '15. jan. 2001 16:12',
+ '16:12, 15. január 2001',
+ '16:12, 15. jan. 2001',
+ 'ISO 8601' => '2001-01-15 16:12:34'
+ );
+
+ private $mBookstoreListSk = array(
+ 'Bibsys' => 'http://ask.bibsys.no/ask/action/result?cmd=&kilde=biblio&fid=isbn&term=$1',
+ 'BokBerit' => 'http://www.bokberit.no/annet_sted/bocker/$1.html',
+ 'Bokkilden' => 'http://www.bokkilden.no/ProductDetails.aspx?ProductId=$1',
+ 'Haugenbok' => 'http://www.haugenbok.no/searchresults.cfm?searchtype=simple&isbn=$1',
+ 'Akademika' => 'http://www.akademika.no/sok.php?isbn=$1',
+ 'Gnist' => 'http://www.gnist.no/sok.php?isbn=$1',
+ 'Amazon.co.uk' => 'http://www.amazon.co.uk/exec/obidos/ISBN=$1',
+ 'Amazon.de' => 'http://www.amazon.de/exec/obidos/ISBN=$1',
+ 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1'
+ );
+
+ # Note to translators:
+ # Please include the English words as synonyms. This allows people
+ # from other wikis to contribute more easily.
+ #
+ private $mMagicWordsSk = array(
+ # ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#redirect', '#presmeruj' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__BEZOBSAHU__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__VYNÚŤOBSAH__' ),
+ MAG_TOC => array( 0, '__TOC__', '__OBSAH__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__NEUPRAVUJSEKCIE__' ),
+ MAG_START => array( 0, '__START__', '__ŠTART__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'MESIAC' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'MENOMESIACA' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'MENOAKTUÁLNEHOMESIACAGEN' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'MENOAKTUÁLNEHOMESIACASKRATKA' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'AKTUÁLNYDEŇ' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'MENOAKTUÁLNEHODŇA' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'AKTUÁLNYROK' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'AKTUÁLNYČAS' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'POČETČLÁNKOV' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'MENOSTRÁNKY' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'MENNÝPRIESTOR' ),
+ MAG_MSG => array( 0, 'MSG:', 'SPRÁVA:' ),
+ MAG_SUBST => array( 0, 'SUBST:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:' ),
+ MAG_END => array( 0, '__END__', '__KONIEC__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'náhľad', 'náhľadobrázka' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'vpravo' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'vľavo' ),
+ MAG_IMG_NONE => array( 1, 'none', 'žiadny' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1bod' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'stred' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'rám' ),
+ MAG_INT => array( 0, 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'MENOLOKALITY' ),
+ MAG_NS => array( 0, 'NS:', 'MP:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:' ),
+ MAG_SERVER => array( 0, 'SERVER' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'GRAMATIKA:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__' ),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__' ),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK', 'AKTUÁLNYTÝŽDEŇ' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID' ),
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesSk;
+ $this->mMessagesSk =& $wgAllMessagesSk;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesSk = array(
+ NS_MEDIA => 'Médiá',
+ NS_SPECIAL => 'Špeciálne',
+ NS_MAIN => '',
+ NS_TALK => 'Diskusia',
+ NS_USER => 'Redaktor',
+ NS_USER_TALK => 'Diskusia_s_redaktorom',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Diskusia_k_' . $this->convertGrammar( $wgMetaNamespace, 'datív' ),
+ NS_IMAGE => 'Obrázok',
+ NS_IMAGE_TALK => 'Diskusia_k_obrázku',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Diskusia_k_MediaWiki',
+ NS_TEMPLATE => 'Šablóna',
+ NS_TEMPLATE_TALK => 'Diskusia_k_šablóne',
+ NS_HELP => 'Pomoc',
+ NS_HELP_TALK => 'Diskusia_k_pomoci',
+ NS_CATEGORY => 'Kategória',
+ NS_CATEGORY_TALK => 'Diskusia_ku_kategórii'
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesSk + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsSk;
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsSk;
+ }
+
+ function getBookstoreList() {
+ return $this->mBookstoreListSk;
+ }
+
+ function &getMagicWords() {
+ $t = $this->mMagicWordsSk + parent::getMagicWords();
+ return $t;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesSk[$key] ) ) {
+ return $this->mMessagesSk[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesSk;
+ }
+
+ function getNsIndex( $text ) {
+
+ foreach ( $this->mNamespaceNamesSk as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ # Compatbility with old names:
+ if( 0 == strcasecmp( "Komentár", $text ) ) { return NS_TALK; }
+ if( 0 == strcasecmp( "Komentár_k_redaktorovi", $text ) ) { return NS_USER_TALK; }
+ if( 0 == strcasecmp( "Komentár_k_Wikipédii", $text ) ) { return NS_PROJECT_TALK; }
+ if( 0 == strcasecmp( "Komentár_k_obrázku", $text ) ) { return NS_IMAGE_TALK; }
+ if( 0 == strcasecmp( "Komentár_k_MediaWiki", $text ) ) { return NS_MEDIAWIKI_TALK; }
+ return false;
+ }
+
+ function separatorTransformTable() {
+ return array(
+ ',' => "\xc2\xa0",
+ '.' => ','
+ );
+ }
+
+ function linkTrail() {
+ return '/^([a-záäčďéíľĺňóôŕšťúýž]+)(.*)$/sDu';
+ }
+
+ # Convert from the nominative form of a noun to some other case
+ # Invoked with {{GRAMMAR:case|word}}
+ /**
+ * Cases: genitív, datív, akuzatív, lokál, inštrumentál
+ */
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['sk'][$case][$word]) ) {
+ return $wgGrammarForms['sk'][$case][$word];
+ }
+
+ switch ( $case ) {
+ case 'genitív':
+ if ( $word == 'Wikipédia' ) {
+ $word = 'Wikipédie';
+ } elseif ( $word == 'Wikislovník' ) {
+ $word = 'Wikislovníku';
+ } elseif ( $word == 'Wikicitáty' ) {
+ $word = 'Wikicitátov';
+ } elseif ( $word == 'Wikiknihy' ) {
+ $word = 'Wikikníh';
+ }
+ break;
+ case 'datív':
+ if ( $word == 'Wikipédia' ) {
+ $word = 'Wikipédii';
+ } elseif ( $word == 'Wikislovník' ) {
+ $word = 'Wikislovníku';
+ } elseif ( $word == 'Wikicitáty' ) {
+ $word = 'Wikicitátom';
+ } elseif ( $word == 'Wikiknihy' ) {
+ $word = 'Wikiknihám';
+ }
+ break;
+ case 'akuzatív':
+ if ( $word == 'Wikipédia' ) {
+ $word = 'Wikipédiu';
+ } elseif ( $word == 'Wikislovník' ) {
+ $word = 'Wikislovník';
+ } elseif ( $word == 'Wikicitáty' ) {
+ $word = 'Wikicitáty';
+ } elseif ( $word == 'Wikiknihy' ) {
+ $word = 'Wikiknihy';
+ }
+ break;
+ case 'lokál':
+ if ( $word == 'Wikipédia' ) {
+ $word = 'Wikipédii';
+ } elseif ( $word == 'Wikislovník' ) {
+ $word = 'Wikislovníku';
+ } elseif ( $word == 'Wikicitáty' ) {
+ $word = 'Wikicitátoch';
+ } elseif ( $word == 'Wikiknihy' ) {
+ $word = 'Wikiknihách';
+ }
+ break;
+ case 'inštrumentál':
+ if ( $word == 'Wikipédia' ) {
+ $word = 'Wikipédiou';
+ } elseif ( $word == 'Wikislovník' ) {
+ $word = 'Wikislovníkom';
+ } elseif ( $word == 'Wikicitáty' ) {
+ $word = 'Wikicitátmi';
+ } elseif ( $word == 'Wikiknihy' ) {
+ $word = 'Wikiknihami';
+ }
+ break;
+ }
+ return $word;
+ }
+
+ function convertPlural( $count, $w1, $w2, $w3) {
+ $count = str_replace ('.', '', $count);
+ $forms = array( $w1, $w2, $w3);
+ if ( $count == 1 ) {
+ $index = 0;
+ } elseif ( $count == 2 || $count == 3 || $count == 4 ) {
+ $index = 1;
+ } else {
+ $index = 2;
+ }
+ return $forms[$index];
+ }
+
+}
+?>
diff --git a/languages/LanguageSl.php b/languages/LanguageSl.php
new file mode 100644
index 00000000..1cffbde7
--- /dev/null
+++ b/languages/LanguageSl.php
@@ -0,0 +1,223 @@
+<?php
+/** Slovenian (Slovenščina)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ */
+
+#
+# Revision/
+# Inačica 1.00.00 XJamRastafire 2003-07-08 |NOT COMPLETE
+# 1.00.10 XJamRastafire 2003-11-03 |NOT COMPLETE
+# ______________________________________________________
+# 1.00.20 XJamRastafire 2003-11-05 | COMPLETE
+# 1.00.30 romanm 2003-11-07 | minor changes
+# 1.00.31 romanm 2003-11-11 | merged incorrectly broken lines
+# 1.00.32 romanm 2003-11-19 | merged incorrectly broken lines
+# 1.00.40 romanm 2003-11-21 | fixed Google search
+
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesSl.php');
+}
+
+class LanguageSl extends LanguageUtf8 {
+ private $mMessagesSl, $mNamespaceNamesSl = null;
+
+ private $mQuickbarSettingsSl = array(
+ 'Brez', 'Levo nepomično', 'Desno nepomično', 'Levo leteče'
+ );
+
+ private $mMonthNameGenSl = array(
+ 'januarja', 'februarja', 'marca', 'aprila', 'maja', 'junija',
+ 'julija', 'avgusta', 'septembra', 'oktobra', 'novembra', 'decembra'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesSl;
+ $this->mMessagesSl =& $wgAllMessagesSl;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesSl = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Posebno',
+ NS_MAIN => '',
+ NS_TALK => 'Pogovor',
+ NS_USER => 'Uporabnik',
+ NS_USER_TALK => 'Uporabniški_pogovor',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Pogovor_' .
+ str_replace( ' ', '_', $this->convertGrammar( $wgMetaNamespace, 'mestnik' ) ),
+ NS_IMAGE => 'Slika',
+ NS_IMAGE_TALK => 'Pogovor_o_sliki',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Pogovor_o_MediaWiki',
+ NS_TEMPLATE => 'Predloga',
+ NS_TEMPLATE_TALK => 'Pogovor_o_predlogi',
+ NS_HELP => 'Pomoč',
+ NS_HELP_TALK => 'Pogovor_o_pomoči',
+ NS_CATEGORY => 'Kategorija',
+ NS_CATEGORY_TALK => 'Pogovor_o_kategoriji'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesSl + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsSl;
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesSl[$key] ) ) {
+ return $this->mMessagesSl[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesSl;
+ }
+
+
+ function fallback8bitEncoding() {
+ return "iso-8859-2";
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function getMonthNameGen( $key ) {
+ return $this->mMonthNameGenSl[$key-1];
+ }
+
+
+ # Convert from the nominative form of a noun to some other case
+ # Invoked with {{GRAMMAR:case|word}}
+ /**
+ * Cases: rodilnik, dajalnik, tožilnik, mestnik, orodnik
+ */
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['sl'][$case][$word]) ) {
+ return $wgGrammarForms['sl'][$case][$word];
+ }
+
+ 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';
+ }
+ 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';
+ }
+ 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';
+ }
+ 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;
+ }
+ 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;
+ }
+ break;
+ }
+
+ return $word; # this will return the original value for 'imenovalnik' (nominativ) and all undefined case values
+ }
+
+ function convertPlural( $count, $w1, $w2, $w3, $w4, $w5) {
+ $count = str_replace ('.', '', $count);
+ $forms = array( $w1, $w2, $w3, $w4, $w5 );
+ if ( $count % 100 == 1 ) {
+ $index = 0;
+ } elseif ( $count % 100 == 2 ) {
+ $index = 1;
+ } elseif ( $count % 100 == 3 || $count % 100 == 4 ) {
+ $index = 2;
+ } elseif ( $count != 0 ) {
+ $index = 3;
+ } else {
+ $index = 4;
+ }
+ return $forms[$index];
+ }
+
+
+}
+?> \ No newline at end of file
diff --git a/languages/LanguageSq.php b/languages/LanguageSq.php
new file mode 100644
index 00000000..3ec5734f
--- /dev/null
+++ b/languages/LanguageSq.php
@@ -0,0 +1,112 @@
+<?php
+/** Albanian (Shqip)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesSq.php');
+}
+
+class LanguageSq extends LanguageUtf8 {
+ private $mMessagesSq, $mNamespaceNamesSq = null;
+
+ private $mQuickbarSettingsSq = array(
+ 'Asnjë', 'Lidhur majtas', 'Lidhur djathtas', 'Pezull majtas', 'Pezull djathtas'
+ );
+
+ private $mSkinNamesSq = array(
+ 'standard' => "Standarte",
+ 'nostalgia' => "Nostalgjike",
+ 'cologneblue' => "Kolonjë Blu"
+ );
+
+ private $mDateFormatsSq = array(
+ MW_DATE_DEFAULT => 'No preference',
+ MW_DATE_DMY => '16:12, 15 January 2001',
+ MW_DATE_ISO => '2001-01-15 16:12:34'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesSq;
+ $this->mMessagesSq =& $wgAllMessagesSq;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesSq = array(
+ NS_MEDIA => "Media",
+ NS_SPECIAL => "Speciale",
+ NS_MAIN => "",
+ NS_TALK => "Diskutim",
+ NS_USER => "Përdoruesi",
+ NS_USER_TALK => "Përdoruesi_diskutim",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . "_diskutim",
+ NS_IMAGE => "Figura",
+ NS_IMAGE_TALK => "Figura_diskutim",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_diskutim",
+ NS_TEMPLATE => "Stampa",
+ NS_TEMPLATE_TALK => "Stampa_diskutim",
+ NS_HELP => 'Ndihmë',
+ NS_HELP_TALK => 'Ndihmë_diskutim'
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesSq + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsSq;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesSq + parent::getSkinNames();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsSq;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesSq[$key] ) ) {
+ return $this->mMessagesSq[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesSq;
+ }
+
+ function getNsIndex( $text ) {
+ foreach ( $this->mNamespaceNamesSq as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ # Compatbility with alt names:
+ if( 0 == strcasecmp( "Perdoruesi", $text ) ) return NS_USER;
+ if( 0 == strcasecmp( "Perdoruesi_diskutim", $text ) ) return NS_USER_TALK;
+ return false;
+ }
+
+ function timeDateSeparator( $format ) {
+ return ' ';
+ }
+
+
+ function timeBeforeDate( $format ) {
+ return false;
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+}
+?>
diff --git a/languages/LanguageSr.deps.php b/languages/LanguageSr.deps.php
new file mode 100644
index 00000000..f533eadb
--- /dev/null
+++ b/languages/LanguageSr.deps.php
@@ -0,0 +1,10 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageSr.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageSr_ec.php" );
+require_once( "LanguageConverter.php" );
+?>
diff --git a/languages/LanguageSr.php b/languages/LanguageSr.php
new file mode 100644
index 00000000..ffbb6784
--- /dev/null
+++ b/languages/LanguageSr.php
@@ -0,0 +1,224 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+/*
+ There are two levels of conversion for Serbian: the script level
+ (Cyrillics <-> Latin), and the variant level (ekavian
+ <->iyekavian). The two are orthogonal. So we really only need two
+ dictionaries: one for Cyrillics and Latin, and one for ekavian and
+ iyekavian.
+*/
+require_once( "LanguageConverter.php" );
+require_once( "LanguageSr_ec.php" );
+require_once( "LanguageSr_el.php" );
+require_once( "LanguageSr_jc.php" );
+require_once( "LanguageSr_jl.php" );
+
+class SrConverter extends LanguageConverter {
+ var $mToLatin = array(
+ 'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
+ 'ђ' => 'đ', 'е' => 'e', 'ж' => 'ž', 'з' => 'z', 'и' => 'i',
+ 'ј' => 'j', 'к' => 'k', 'л' => 'l', 'љ' => 'lj', 'м' => 'm',
+ 'н' => 'n', 'њ' => 'nj', 'о' => 'o', 'п' => 'p', 'р' => 'r',
+ 'с' => 's', 'т' => 't', 'ћ' => 'ć', 'у' => 'u', 'ф' => 'f',
+ 'х' => 'h', 'ц' => 'c', 'ч' => 'č', 'џ' => 'dž', 'ш' => 'š',
+
+ 'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D',
+ 'Ђ' => 'Đ', 'Е' => 'E', 'Ж' => 'Ž', 'З' => 'Z', 'И' => 'I',
+ 'Ј' => 'J', 'К' => 'K', 'Л' => 'L', 'Љ' => 'Lj', 'М' => 'M',
+ 'Н' => 'N', 'Њ' => 'Nj', 'О' => 'O', 'П' => 'P', 'Р' => 'R',
+ 'С' => 'S', 'Т' => 'T', 'Ћ' => 'Ć', 'У' => 'U', 'Ф' => 'F',
+ 'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Č', 'Џ' => 'Dž', 'Ш' => 'Š',
+ );
+
+ var $mToCyrillics = array(
+ 'a' => 'а', 'b' => 'б', 'c' => 'ц', 'č' => 'ч', 'ć' => 'ћ',
+ 'd' => 'д', 'dž' => 'џ', 'đ' => 'ђ', 'e' => 'е', 'f' => 'ф',
+ 'g' => 'г', 'h' => 'х', 'i' => 'и', 'j' => 'ј', 'k' => 'к',
+ 'l' => 'л', 'lj' => 'љ', 'm' => 'м', 'n' => 'н', 'nj' => 'њ',
+ 'o' => 'о', 'p' => 'п', 'r' => 'р', 's' => 'с', 'š' => 'ш',
+ 't' => 'т', 'u' => 'у', 'v' => 'в', 'z' => 'з', 'ž' => 'ж',
+
+ 'A' => 'А', 'B' => 'Б', 'C' => 'Ц', 'Č' => 'Ч', 'Ć' => 'Ћ',
+ 'D' => 'Д', 'Dž' => 'Џ', 'Đ' => 'Ђ', 'E' => 'Е', 'F' => 'Ф',
+ 'G' => 'Г', 'H' => 'Х', 'I' => 'И', 'J' => 'Ј', 'K' => 'К',
+ 'L' => 'Л', 'LJ' => 'Љ', 'M' => 'М', 'N' => 'Н', 'NJ' => 'Њ',
+ 'O' => 'О', 'P' => 'П', 'R' => 'Р', 'S' => 'С', 'Š' => 'Ш',
+ 'T' => 'Т', 'U' => 'У', 'V' => 'В', 'Z' => 'З', 'Ž' => 'Ж',
+
+ 'DŽ' => 'Џ', 'd!ž' => 'дж', 'D!ž'=> 'Дж', 'D!Ž'=> 'ДЖ',
+ 'Lj' => 'Љ', 'l!j' => 'лј', 'L!j'=> 'Лј', 'L!J'=> 'ЛЈ',
+ 'Nj' => 'Њ', 'n!j' => 'нј', 'N!j'=> 'Нј', 'N!J'=> 'НЈ'
+ );
+
+ function loadDefaultTables() {
+ $this->mTables = array();
+ $this->mTables['sr-ec'] = $this->mToCyrillics;
+ $this->mTables['sr-jc'] = $this->mToCyrillics;
+ $this->mTables['sr-el'] = $this->mToLatin;
+ $this->mTables['sr-jl'] = $this->mToLatin;
+ $this->mTables['sr'] = array();
+ }
+
+ /* rules should be defined as -{ekavian | iyekavian-} -or-
+ -{code:text | code:text | ...}-
+ */
+ function parseManualRule($rule, $flags) {
+
+ $echoices = preg_split("/(<[^>]+>)/",$rule,-1,PREG_SPLIT_DELIM_CAPTURE);
+ $choices = array();
+
+ // check if we did a split across an HTML tag
+ // if so, glue them back together
+
+ $ctold = '';
+ foreach($echoices as $ct){
+ if($ct=='');
+ else if(preg_match('/<[^>]+>/',$ct)){
+ $ctold.=$ct;
+ }
+ else{
+ $c = explode($this->mMarkup['varsep'],$ct);
+ if(count($c)>1){
+ $choices[]=$ctold.array_shift($c);
+ $ctold=array_pop($c);
+ $choices=array_merge($choices,$c);
+ }
+ else $ctold.=array_pop($c);
+ }
+ }
+ if($ctold!='') $choices[]=$ctold;
+
+ $carray = array();
+ if(sizeof($choices) == 1) {
+ if(in_array('W', $flags)) {
+ $carray['sr'] = $this->autoConvert($choices[0], 'sr-ec');
+ $carray['sr-ec'] = $this->autoConvert($choices[0], 'sr-ec');
+ $carray['sr-jc'] = $this->autoConvert($choices[0], 'sr-jc');
+ $carray['sr-el'] = $this->autoConvert($choices[0], 'sr-el');
+ $carray['sr-jl'] = $this->autoConvert($choices[0], 'sr-jl');
+ }
+ foreach($this->mVariants as $v) {
+ $carray[$v] = $choices[0];
+ }
+ return $carray;
+ }
+
+ /* detect which format is used, also trim the choices*/
+ $n=0;
+ foreach($choices as $c=>$t) {
+ if(strpos($t, $this->mMarkup['codesep']) !== false) { $n++; }
+ $choices[$c] = trim($t);
+ }
+ /* the -{code:text | ...}- format */
+ if($n == sizeof($choices)) {
+ foreach($choices as $c) {
+ list($code, $text) = explode($this->mMarkup['codesep'], $c);
+ $carray[trim($code)] = trim($text);
+ }
+ return $carray;
+ }
+
+ /* the two choice format -{choice1; choice2}-*/
+ if(sizeof($choices == 2) && $n==0) {
+ if(in_array('S', $flags)) {
+ // conversion between Cyrillics and Latin
+ $carray['sr'] = $carray['sr-ec'] =$carray['sr-jc'] = $choices[0];
+ $carray['sr-el'] =$carray['sr-jl'] = $choices[1];
+ }
+ else {
+ $carray['sr'] = $this->autoConvert($choices[0], 'sr-ec');
+ $carray['sr-ec'] = $this->autoConvert($choices[0], 'sr-ec');
+ $carray['sr-jc'] = $this->autoConvert($choices[1], 'sr-jc');
+ $carray['sr-el'] = $this->autoConvert($choices[0], 'sr-el');
+ $carray['sr-jl'] = $this->autoConvert($choices[1], 'sr-jl');
+ }
+ return $carray;
+ }
+ return $carray;
+ }
+
+ /*
+ * Override function from LanguageConvertor
+ * Additional checks:
+ * - There should be no conversion for Talk pages
+ */
+ function getPreferredVariant(){
+ global $wgTitle;
+ if($wgTitle!=NULL && $wgTitle->isTalkPage()){
+ return $this->mMainLanguageCode;
+ }
+ return parent::getPreferredVariant();
+ }
+
+
+ /*
+ * A function wrapper, if there is no selected variant,
+ * leave the link names as they were
+ */
+ function findVariantLink( &$link, &$nt ) {
+ $oldlink=$link;
+ parent::findVariantLink($link,$nt);
+ if($this->getPreferredVariant()==$this->mMainLanguageCode)
+ $link=$oldlink;
+ }
+
+
+ /*
+ * We want our external link captions to be converted in variants,
+ * so we return the original text instead -{$text}-, except for URLs
+ */
+ function markNoConversion($text) {
+ if(preg_match("/^https?:\/\/|ftp:\/\/|irc:\/\//",$text))
+ return parent::markNoConversion($text);
+ return $text;
+ }
+
+ /*
+ * An ugly function wrapper for parsing Image titles
+ * (to prevent image name conversion)
+ */
+ function autoConvert($text, $toVariant=false) {
+ global $wgTitle;
+ if($wgTitle->getNameSpace()==NS_IMAGE){
+ $imagename = $wgTitle->getNsText();
+ if(preg_match("/^$imagename:/",$text)) return $text;
+ }
+ return parent::autoConvert($text,$toVariant);
+ }
+
+
+}
+
+class LanguageSr extends LanguageSr_ec {
+ function __construct() {
+ global $wgHooks;
+ $variants = array('sr', 'sr-ec', 'sr-jc', 'sr-el', 'sr-jl');
+ $variantfallbacks = array(
+ 'sr' => 'sr-ec',
+ 'sr-ec' => 'sr-jc',
+ 'sr-jc' => 'sr-ec',
+ 'sr-el' => 'sr-jl',
+ 'sr-jl' => 'sr-el'
+ );
+ $marker = array();//don't mess with these, leave them as they are
+ $flags = array(
+ 'S' => 'S', 'писмо' => 'S', 'pismo' => 'S',
+ 'W' => 'W', 'реч' => 'W', 'reč' => 'W', 'ријеч' => 'W', 'riječ' => 'W'
+ );
+ $this->mConverter = new SrConverter($this, 'sr', $variants, $variantfallbacks, $marker, $flags);
+ $wgHooks['ArticleSaveComplete'][] = $this->mConverter;
+ }
+ function getVariantname( $code ) {
+ return wfMsg( "variantname-$code" );
+ }
+
+ function linkTrail() {
+ return "/^([abvgdđežzijklljmnnjoprstćufhcčdžšабвгдђежзијклљмнњопрстћуфхцчџш]+)(.*)$/usD";
+ }
+
+}
+?>
diff --git a/languages/LanguageSr_ec.php b/languages/LanguageSr_ec.php
new file mode 100644
index 00000000..bacca1b4
--- /dev/null
+++ b/languages/LanguageSr_ec.php
@@ -0,0 +1,281 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+/* private */ $wgNamespaceNamesSr_ec = array(
+ NS_MEDIA => "Медија",
+ NS_SPECIAL => "Посебно",
+ NS_MAIN => "",
+ NS_TALK => "Разговор",
+ NS_USER => "Корисник",
+ NS_USER_TALK => "Разговор_са_корисником",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => ($wgMetaNamespaceTalk ? $wgMetaNamespaceTalk : "Разговор_о_".$wgMetaNamespace ),
+ NS_IMAGE => "Слика",
+ NS_IMAGE_TALK => "Разговор_о_слици",
+ NS_MEDIAWIKI => "МедијаВики",
+ NS_MEDIAWIKI_TALK => "Разговор_о_МедијаВикију",
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Разговор_о_шаблону',
+ NS_HELP => 'Помоћ',
+ NS_HELP_TALK => 'Разговор_о_помоћи',
+ NS_CATEGORY => 'Категорија',
+ NS_CATEGORY_TALK => 'Разговор_о_категорији',
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsSr_ec = array(
+ "Никаква", "Причвршћена лево", "Причвршћена десно", "Плутајућа лево"
+);
+
+/* private */ $wgSkinNamesSr_ec = array(
+ "Обична", "Носталгија", "Келнско плаво", "Педингтон", "Монпарнас"
+) + $wgSkinNamesEn;
+
+/* private */ $wgUserTogglesSr_ec = array(
+ 'nolangconversion',
+) + $wgUserTogglesEn;
+
+/* private */ $wgDateFormatsSr_ec = array(
+ 'Није битно',
+ '06:12, 5. јануар 2001.',
+ '06:12, 5 јануар 2001',
+ '06:12, 05.01.2001.',
+ '06:12, 5.1.2001.',
+ '06:12, 5. јан 2001.',
+ '06:12, 5 јан 2001',
+ '6:12, 5. јануар 2001.',
+ '6:12, 5 јануар 2001',
+ '6:12, 05.01.2001.',
+ '6:12, 5.1.2001.',
+ '6:12, 5. јан 2001.',
+ '6:12, 5 јан 2001',
+);
+
+/* NOT USED IN STABLE VERSION */
+/* private */ $wgMagicWordsSr_ec = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#Преусмери', '#redirect', '#преусмери', '#ПРЕУСМЕРИ' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__БЕЗСАДРЖАЈА__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__ФОРСИРАНИСАДРЖАЈ__' ),
+ MAG_TOC => array( 0, '__TOC__', '__САДРЖАЈ__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__БЕЗ_ИЗМЕНА__', '__БЕЗИЗМЕНА__' ),
+ MAG_START => array( 0, '__START__', '__ПОЧЕТАК__' ),
+ MAG_END => array( 0, '__END__', '__КРАЈ__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'ТРЕНУТНИМЕСЕЦ' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'ТРЕНУТНИМЕСЕЦИМЕ' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'ТРЕНУТНИМЕСЕЦРОД' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'ТРЕНУТНИМЕСЕЦСКР' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'ТРЕНУТНИДАН' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'ТРЕНУТНИДАНИМЕ' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'ТРЕНУТНАГОДИНА' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'ТРЕНУТНОВРЕМЕ' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'БРОЈЧЛАНАКА' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES', 'БРОЈДАТОТЕКА', 'БРОЈФАЈЛОВА' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'СТРАНИЦА' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'СТРАНИЦЕ' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'ИМЕНСКИПРОСТОР' ),
+ MAG_NAMESPACEE => array( 1, 'NAMESPACEE', 'ИМЕНСКИПРОСТОРИ' ),
+ MAG_FULLPAGENAME => array( 1, 'FULLPAGENAME', 'ПУНОИМЕСТРАНЕ' ),
+ MAG_FULLPAGENAMEE => array( 1, 'FULLPAGENAMEE', 'ПУНОИМЕСТРАНЕЕ' ),
+ MAG_MSG => array( 0, 'MSG:', 'ПОР:' ),
+ MAG_SUBST => array( 0, 'SUBST:', 'ЗАМЕНИ:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'НВПОР:' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'мини' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1', 'мини=$1' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'десно', 'д' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'лево', 'л' ),
+ MAG_IMG_NONE => array( 1, 'none', 'н', 'без' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1пискел' , '$1п' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'центар', 'ц' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'оквир', 'рам' ),
+ MAG_INT => array( 0, 'INT:', 'ИНТ:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'ИМЕСАЈТА' ),
+ MAG_NS => array( 0, 'NS:', 'ИП:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'ЛОКАЛНААДРЕСА:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'ЛОКАЛНЕАДРЕСЕ:' ),
+ MAG_SERVER => array( 0, 'SERVER', 'СЕРВЕР' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME', 'ИМЕСЕРВЕРА' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH', 'СКРИПТА' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'ГРАМАТИКА:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__БЕЗТЦ__' ),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__БЕЗЦЦ__' ),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK', 'ТРЕНУТНАНЕДЕЉА' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW', 'ТРЕНУТНИДОВ' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID', 'ИДРЕВИЗИЈЕ' ),
+ MAG_PLURAL => array( 0, 'PLURAL:', 'МНОЖИНА:' ),
+ MAG_FULLURL => array( 0, 'FULLURL:', 'ПУНУРЛ:' ),
+ MAG_FULLURLE => array( 0, 'FULLURLE:', 'ПУНУРЛЕ:' ),
+ MAG_LCFIRST => array( 0, 'LCFIRST:', 'ЛЦПРВИ:' ),
+ MAG_UCFIRST => array( 0, 'UCFIRST:', 'УЦПРВИ:' ),
+ MAG_LC => array( 0, 'LC:', 'ЛЦ:' ),
+ MAG_UC => array( 0, 'UC:', 'УЦ:' ),
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesSr_ec.php');
+}
+
+#--------------------------------------------------------------------------
+# Internationalisation code
+#--------------------------------------------------------------------------
+
+class LanguageSr_ec extends LanguageUtf8 {
+
+ function getNamespaces() {
+ global $wgNamespaceNamesSr_ec;
+ return $wgNamespaceNamesSr_ec;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsSr_ec;
+ return $wgQuickbarSettingsSr_ec;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesSr_ec;
+ return $wgSkinNamesSr_ec;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsSr_ec;
+ return $wgDateFormatsSr_ec;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesSr_ec;
+ if(array_key_exists($key, $wgAllMessagesSr_ec))
+ return $wgAllMessagesSr_ec[$key];
+ else
+ return parent::getMessage($key);
+ }
+
+ /**
+ * Exports $wgMagicWordsSr_ec
+ * @return array
+ */
+ function getMagicWords() {
+ global $wgMagicWordsSr_ec;
+ return $wgMagicWordsSr_ec;
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ /**
+ * @access public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format what format to return, if it's false output the
+ * default one.
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+ $mm = substr( $ts, 4, 2 );
+ $m = 0 + $mm;
+ $mmmm = $this->getMonthName( $mm );
+ $mmm = $this->getMonthAbbreviation( $mm );
+ $dd = substr( $ts, 6, 2 );
+ $d = 0 + $dd;
+ $yyyy = substr( $ts, 0, 4 );
+ $yy = substr( $ts, 2, 2 );
+
+ switch( $format ) {
+ case '2':
+ case '8':
+ return "$d $mmmm $yyyy";
+ case '3':
+ case '9':
+ return "$dd.$mm.$yyyy.";
+ case '4':
+ case '10':
+ return "$d.$m.$yyyy.";
+ case '5':
+ case '11':
+ return "$d. $mmm $yyyy.";
+ case '6':
+ case '12':
+ return "$d $mmm $yyyy";
+ default:
+ return "$d. $mmmm $yyyy.";
+ }
+
+ }
+
+ /**
+ * @access public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format what format to return, if it's false output the
+ * default one (default true)
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function time( $ts, $adj = false, $format = true, $timecorrection = false ) {
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+ $hh = substr( $ts, 8, 2 );
+ $h = 0 + $hh;
+ $mm = substr( $ts, 10, 2 );
+ switch( $format ) {
+ case '7':
+ case '8':
+ case '9':
+ case '10':
+ case '11':
+ case '12':
+ return "$h:$mm";
+ default:
+ return "$hh:$mm";
+ }
+ }
+
+ /**
+ * @access public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format what format to return, if it's false output the
+ * default one (default true)
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false) {
+ $datePreference = $this->dateFormat($format);
+ return $this->time( $ts, $adj, $datePreference, $timecorrection ) . ', ' . $this->date( $ts, $adj, $datePreference, $timecorrection );
+
+ }
+
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ $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;
+ }
+ }
+ }
+
+}
+?>
diff --git a/languages/LanguageSr_el.deps.php b/languages/LanguageSr_el.deps.php
new file mode 100644
index 00000000..d465eed8
--- /dev/null
+++ b/languages/LanguageSr_el.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageSr_el.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageSr_ec.php" );
+?>
diff --git a/languages/LanguageSr_el.php b/languages/LanguageSr_el.php
new file mode 100644
index 00000000..2c56bd88
--- /dev/null
+++ b/languages/LanguageSr_el.php
@@ -0,0 +1,281 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+/* private */ $wgNamespaceNamesSr_el = array(
+ NS_MEDIA => "Medija",
+ NS_SPECIAL => "Posebno",
+ NS_MAIN => "",
+ NS_TALK => "Razgovor",
+ NS_USER => "Korisnik",
+ NS_USER_TALK => "Razgovor_sa_korisnikom",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => ($wgMetaNamespaceTalk ? $wgMetaNamespaceTalk : "Razgovor_o_".$wgMetaNamespace ),
+ NS_IMAGE => "Slika",
+ NS_IMAGE_TALK => "Razgovor_o_slici",
+ NS_MEDIAWIKI => "MedijaViki",
+ NS_MEDIAWIKI_TALK => "Razgovor_o_MedijaVikiju",
+ NS_TEMPLATE => 'Šablon',
+ NS_TEMPLATE_TALK => 'Razgovor_o_šablonu',
+ NS_HELP => 'Pomoć',
+ NS_HELP_TALK => 'Razgovor_o_pomoći',
+ NS_CATEGORY => 'Kategorija',
+ NS_CATEGORY_TALK => 'Razgovor_o_kategoriji',
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsSr_el = array(
+ "Nikakva", "Pričvršćena levo", "Pričvršćena desno", "Plutajuća levo"
+);
+
+/* private */ $wgSkinNamesSr_el = array(
+ "Obična", "Nostalgija", "Kelnsko plavo", "Pedington", "Monparnas"
+) + $wgSkinNamesEn;
+
+/* private */ $wgUserTogglesSr_el = array(
+ 'nolangconversion',
+) + $wgUserTogglesEn;
+
+/* private */ $wgDateFormatsSr_el = array(
+ 'Nije bitno',
+ '06:12, 5. januar 2001.',
+ '06:12, 5 januar 2001',
+ '06:12, 05.01.2001.',
+ '06:12, 5.1.2001.',
+ '06:12, 5. jan 2001.',
+ '06:12, 5 jan 2001',
+ '6:12, 5. januar 2001.',
+ '6:12, 5 januar 2001',
+ '6:12, 05.01.2001.',
+ '6:12, 5.1.2001.',
+ '6:12, 5. jan 2001.',
+ '6:12, 5 jan 2001',
+);
+
+/* NOT USED IN STABLE VERSION */
+/* private */ $wgMagicWordsSr_el = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#Preusmeri', '#redirect', '#preusmeri', '#PREUSMERI' ),
+ MAG_NOTOC => array( 0, '__NOTOC__', '__BEZSADRŽAJA__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__FORSIRANISADRŽAJ__' ),
+ MAG_TOC => array( 0, '__TOC__', '__SADRŽAJ__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__BEZ_IZMENA__', '__BEZIZMENA__' ),
+ MAG_START => array( 0, '__START__', '__POČETAK__' ),
+ MAG_END => array( 0, '__END__', '__KRAJ__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH', 'TRENUTNIMESEC' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME', 'TRENUTNIMESECIME' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN', 'TRENUTNIMESECROD' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV', 'TRENUTNIMESECSKR' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY', 'TRENUTNIDAN' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME', 'TRENUTNIDANIME' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR', 'TRENUTNAGODINA' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME', 'TRENUTNOVREME' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES', 'BROJČLANAKA' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES', 'BROJDATOTEKA', 'BROJFAJLOVA' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME', 'STRANICA' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE', 'STRANICE' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE', 'IMENSKIPROSTOR' ),
+ MAG_NAMESPACEE => array( 1, 'NAMESPACEE', 'IMENSKIPROSTORI' ),
+ MAG_FULLPAGENAME => array( 1, 'FULLPAGENAME', 'PUNOIMESTRANE' ),
+ MAG_FULLPAGENAMEE => array( 1, 'FULLPAGENAMEE', 'PUNOIMESTRANEE' ),
+ MAG_MSG => array( 0, 'MSG:', 'POR:' ),
+ MAG_SUBST => array( 0, 'SUBST:', 'ZAMENI:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:', 'NVPOR:' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb', 'mini' ),
+ MAG_IMG_MANUALTHUMB => array( 1, 'thumbnail=$1', 'thumb=$1', 'mini=$1' ),
+ MAG_IMG_RIGHT => array( 1, 'right', 'desno', 'd' ),
+ MAG_IMG_LEFT => array( 1, 'left', 'levo', 'l' ),
+ MAG_IMG_NONE => array( 1, 'none', 'n', 'bez' ),
+ MAG_IMG_WIDTH => array( 1, '$1px', '$1piskel' , '$1p' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre', 'centar', 'c' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame', 'okvir', 'ram' ),
+ MAG_INT => array( 0, 'INT:', 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME', 'IMESAJTA' ),
+ MAG_NS => array( 0, 'NS:', 'IP:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:', 'LOKALNAADRESA:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:', 'LOKALNEADRESE:' ),
+ MAG_SERVER => array( 0, 'SERVER', 'SERVER' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME', 'IMESERVERA' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH', 'SKRIPTA' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:', 'GRAMATIKA:' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__', '__NOTC__', '__BEZTC__' ),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__', '__NOCC__', '__BEZCC__' ),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK', 'TRENUTNANEDELjA' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW', 'TRENUTNIDOV' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID', 'IDREVIZIJE' ),
+ MAG_PLURAL => array( 0, 'PLURAL:', 'MNOŽINA:' ),
+ MAG_FULLURL => array( 0, 'FULLURL:', 'PUNURL:' ),
+ MAG_FULLURLE => array( 0, 'FULLURLE:', 'PUNURLE:' ),
+ MAG_LCFIRST => array( 0, 'LCFIRST:', 'LCPRVI:' ),
+ MAG_UCFIRST => array( 0, 'UCFIRST:', 'UCPRVI:' ),
+ MAG_LC => array( 0, 'LC:', 'LC:' ),
+ MAG_UC => array( 0, 'UC:', 'UC:' ),
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesSr_el.php');
+}
+
+#--------------------------------------------------------------------------
+# Internationalisation code
+#--------------------------------------------------------------------------
+
+class LanguageSr_el extends LanguageUtf8 {
+
+ function getNamespaces() {
+ global $wgNamespaceNamesSr_el;
+ return $wgNamespaceNamesSr_el;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsSr_el;
+ return $wgQuickbarSettingsSr_el;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesSr_el;
+ return $wgSkinNamesSr_el;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsSr_el;
+ return $wgDateFormatsSr_el;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesSr_el;
+ if(array_key_exists($key, $wgAllMessagesSr_el))
+ return $wgAllMessagesSr_el[$key];
+ else
+ return parent::getMessage($key);
+ }
+
+ /**
+ * Exports $wgMagicWordsSr_el
+ * @return array
+ */
+ function getMagicWords() {
+ global $wgMagicWordsSr_el;
+ return $wgMagicWordsSr_el;
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ /**
+ * @access public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format what format to return, if it's false output the
+ * default one.
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+ $mm = substr( $ts, 4, 2 );
+ $m = 0 + $mm;
+ $mmmm = $this->getMonthName( $mm );
+ $mmm = $this->getMonthAbbreviation( $mm );
+ $dd = substr( $ts, 6, 2 );
+ $d = 0 + $dd;
+ $yyyy = substr( $ts, 0, 4 );
+ $yy = substr( $ts, 2, 2 );
+
+ switch( $format ) {
+ case '2':
+ case '8':
+ return "$d $mmmm $yyyy";
+ case '3':
+ case '9':
+ return "$dd.$mm.$yyyy.";
+ case '4':
+ case '10':
+ return "$d.$m.$yyyy.";
+ case '5':
+ case '11':
+ return "$d. $mmm $yyyy.";
+ case '6':
+ case '12':
+ return "$d $mmm $yyyy";
+ default:
+ return "$d. $mmmm $yyyy.";
+ }
+
+ }
+
+ /**
+ * @access public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format what format to return, if it's false output the
+ * default one (default true)
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function time( $ts, $adj = false, $format = true, $timecorrection = false ) {
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+ $hh = substr( $ts, 8, 2 );
+ $h = 0 + $hh;
+ $mm = substr( $ts, 10, 2 );
+ switch( $format ) {
+ case '7':
+ case '8':
+ case '9':
+ case '10':
+ case '11':
+ case '12':
+ return "$h:$mm";
+ default:
+ return "$hh:$mm";
+ }
+ }
+
+ /**
+ * @access public
+ * @param mixed $ts the time format which needs to be turned into a
+ * date('YmdHis') format with wfTimestamp(TS_MW,$ts)
+ * @param bool $adj whether to adjust the time output according to the
+ * user configured offset ($timecorrection)
+ * @param mixed $format what format to return, if it's false output the
+ * default one (default true)
+ * @param string $timecorrection the time offset as returned by
+ * validateTimeZone() in Special:Preferences
+ * @return string
+ */
+ function timeanddate( $ts, $adj = false, $format = true, $timecorrection = false) {
+ $datePreference = $this->dateFormat($format);
+ return $this->time( $ts, $adj, $datePreference, $timecorrection ) . ', ' . $this->date( $ts, $adj, $datePreference, $timecorrection );
+
+ }
+
+ function convertPlural( $count, $wordform1, $wordform2, $wordform3) {
+ $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;
+ }
+ }
+ }
+
+}
+?>
diff --git a/languages/LanguageSr_jc.deps.php b/languages/LanguageSr_jc.deps.php
new file mode 100644
index 00000000..b1eff269
--- /dev/null
+++ b/languages/LanguageSr_jc.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageSr_jc.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageSr_ec.php" );
+?>
diff --git a/languages/LanguageSr_jc.php b/languages/LanguageSr_jc.php
new file mode 100644
index 00000000..1ec41676
--- /dev/null
+++ b/languages/LanguageSr_jc.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+require_once( "LanguageSr_ec.php");
+
+class LanguageSr_jc extends LanguageSr_ec {
+# Inherit everything for now
+}
+?> \ No newline at end of file
diff --git a/languages/LanguageSr_jl.deps.php b/languages/LanguageSr_jl.deps.php
new file mode 100644
index 00000000..5c47e5f2
--- /dev/null
+++ b/languages/LanguageSr_jl.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageSr_jl.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageSr_jc.php" );
+?>
diff --git a/languages/LanguageSr_jl.php b/languages/LanguageSr_jl.php
new file mode 100644
index 00000000..5028c89b
--- /dev/null
+++ b/languages/LanguageSr_jl.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+require_once( "LanguageSr_ec.php");
+
+class LanguageSr_jl extends LanguageSr_ec {
+# Inherit everything for now
+}
+?> \ No newline at end of file
diff --git a/languages/LanguageSu.php b/languages/LanguageSu.php
new file mode 100644
index 00000000..515863d1
--- /dev/null
+++ b/languages/LanguageSu.php
@@ -0,0 +1,53 @@
+<?php
+/** Sundanese language file (Basa Sunda)
+ *
+ * Source: http://su.wikipedia.org/
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+/* private */ $wgNamespaceNamesSu = array(
+ NS_MEDIA => 'Média',
+ NS_SPECIAL => 'Husus',
+ NS_MAIN => '',
+ NS_TALK => 'Obrolan',
+ NS_USER => 'Pamaké',
+ NS_USER_TALK => 'Obrolan_pamaké',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Obrolan_' . $wgMetaNamespace,
+ NS_IMAGE => 'Gambar',
+ NS_IMAGE_TALK => 'Obrolan_gambar',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Obrolan_MediaWiki',
+ NS_TEMPLATE => 'Citakan',
+ NS_TEMPLATE_TALK => 'Obrolan_citakan',
+ NS_HELP => 'Pitulung',
+ NS_HELP_TALK => 'Obrolan_pitulung',
+ NS_CATEGORY => 'Kategori',
+ NS_CATEGORY_TALK => 'Obrolan_kategori',
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesSu.php');
+}
+
+class LanguageSu extends LanguageUtf8 {
+
+ function getNamespaces() {
+ global $wgNamespaceNamesSu;
+ return $wgNamespaceNamesSu;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesSu;
+ if( isset( $wgAllMessagesSu[$key] ) ) {
+ return $wgAllMessagesSu[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+}
+?>
diff --git a/languages/LanguageSv.php b/languages/LanguageSv.php
new file mode 100644
index 00000000..4abb1e03
--- /dev/null
+++ b/languages/LanguageSv.php
@@ -0,0 +1,114 @@
+<?php
+/**
+ * Swedish (Svenska)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesSv.php');
+}
+
+class LanguageSv extends LanguageUtf8 {
+ private $mMessagesSv, $mNamespaceNamesSv;
+
+ private $mQuickbarSettingsSv = array(
+ "Ingen",
+ "Fast vänster",
+ "Fast höger",
+ "Flytande vänster"
+ );
+
+ private $mSkinNamesSv = array(
+ 'standard' => "Standard",
+ 'nostalgia' => "Nostalgi",
+ 'cologneblue' => "Cologne Blå",
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesSv;
+ $this->mMessagesSv =& $wgAllMessagesSv;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesSv = array(
+ NS_MEDIA => "Media",
+ NS_SPECIAL => "Special",
+ NS_MAIN => "",
+ NS_TALK => "Diskussion",
+ NS_USER => "Användare",
+ NS_USER_TALK => "Användardiskussion",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . "diskussion",
+ NS_IMAGE => "Bild",
+ NS_IMAGE_TALK => "Bilddiskussion",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_diskussion",
+ NS_TEMPLATE => "Mall",
+ NS_TEMPLATE_TALK => "Malldiskussion",
+ NS_HELP => "Hjälp",
+ NS_HELP_TALK => "Hjälp_diskussion",
+ NS_CATEGORY => "Kategori",
+ NS_CATEGORY_TALK => "Kategoridiskussion"
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesSv + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsSv;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesSv + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesSv[$key] ) ) {
+ return $this->mMessagesSv[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesSv;
+ }
+
+ function linkTrail() {
+ return '/^([a-zåäöéÅÄÖÉ]+)(.*)$/sDu';
+ }
+
+
+ function separatorTransformTable() {
+ return array(
+ ',' => "\xc2\xa0", // @bug 2749
+ '.' => ','
+ );
+ }
+
+ // "." is used as the character to separate the
+ // hours from the minutes in the date output
+ function timeSeparator( $format ) {
+ return '.';
+ }
+
+ function timeanddate( $ts, $adj = false, $format = false, $timecorrection = false ) {
+ $format = $this->dateFormat( $format );
+ if( $format == MW_DATE_ISO ) {
+ return parent::timeanddate( $ts, $adj, $format, $timecorrection );
+ } else {
+ return $this->date( $ts, $adj, $format, $timecorrection ) .
+ " kl." .
+ $this->time( $ts, $adj, $format, $timecorrection );
+ }
+ }
+
+}
+?>
diff --git a/languages/LanguageTa.php b/languages/LanguageTa.php
new file mode 100644
index 00000000..778c16d3
--- /dev/null
+++ b/languages/LanguageTa.php
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Tamil (தமிழ்)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesTa.php');
+}
+
+class LanguageTa extends LanguageUtf8 {
+ private $mMessagesTa, $mNamespaceNamesTa = null;
+
+ private $mQuickbarSettingsTa = array(
+ "எதுவுமில்லை", "இடம் நிலைத்த", "வலம் நிலைத்த", "இடம் மிதப்பு"
+ );
+
+ private $mSkinNamesTa = array(
+ 'standard' => "இயல்பான",
+ 'nostalgia' => "பசுமை நினைவு (Nostalgia)",
+ 'cologneblue' => "கொலோன் (Cologne) நீலம் Blue",
+ 'smarty' => "பாடிங்டன் (Paddington)",
+ 'montparnasse' => "மொண்ட்பார்னாசே (Montparnasse)",
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesTa;
+ $this->mMessagesTa =& $wgAllMessagesTa;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesTa = array(
+ NS_MEDIA => 'ஊடகம்',
+ NS_SPECIAL => 'சிறப்பு',
+ NS_MAIN => '',
+ NS_TALK => 'பேச்சு',
+ NS_USER => 'பயனர்',
+ NS_USER_TALK => 'பயனர்_பேச்சு',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_பேச்சு',
+ NS_IMAGE => 'படிமம்',
+ NS_IMAGE_TALK => 'படிமப்_பேச்சு',
+ NS_MEDIAWIKI => 'மீடியாவிக்கி',
+ NS_MEDIAWIKI_TALK => 'மீடியாவிக்கி_பேச்சு',
+ NS_TEMPLATE => 'வார்ப்புரு',
+ NS_TEMPLATE_TALK => 'வார்ப்புரு_பேச்சு',
+ NS_HELP => 'உதவி',
+ NS_HELP_TALK => 'உதவி_பேச்சு',
+ NS_CATEGORY => 'பகுப்பு',
+ NS_CATEGORY_TALK => 'பகுப்பு_பேச்சு',
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesTa + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsTa;
+ }
+
+ function getSkinNames() {
+ return $this->mSkinNamesTa + parent::getSkinNames();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesTa[$key] ) ) {
+ return $this->mMessagesTa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesTa;
+ }
+
+ function getNsIndex( $text ) {
+ $ns = $this->getNamespaces();
+
+ foreach ( $ns as $i => $n ) {
+ if ( strcasecmp( $n, $text ) == 0)
+ return $i;
+ }
+
+ if ( strcasecmp( 'விக்கிபீடியா', $text) == 0) return NS_PROJECT;
+ if ( strcasecmp( 'விக்கிபீடியா_பேச்சு', $text) == 0) return NS_PROJECT_TALK;
+ if ( strcasecmp( 'உருவப்_பேச்சு', $text) == 0) return NS_IMAGE_TALK;
+
+ return false;
+ }
+
+ function linkTrail() {
+ /* Range from U+0B80 to U+0BFF */
+ return "/^([\xE0\xAE\x80-\xE0\xAF\xBF]+)(.*)$/sDu";
+ }
+
+}
+
+?>
diff --git a/languages/LanguageTe.php b/languages/LanguageTe.php
new file mode 100644
index 00000000..631fcc9c
--- /dev/null
+++ b/languages/LanguageTe.php
@@ -0,0 +1,83 @@
+<?php
+/** Telugu (Telugu)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesTe.php');
+}
+
+class LanguageTe extends LanguageUtf8 {
+ private $mMessagesTe, $mNamespaceNamesTe = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesTe;
+ $this->mMessagesTe =& $wgAllMessagesTe;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesTe = array(
+ NS_MEDIA => 'మీడియా',
+ NS_SPECIAL => 'ప్రత్యేక',
+ NS_MAIN => '',
+ NS_TALK => 'చర్చ',
+ NS_USER => 'సభ్యుడు',
+ NS_USER_TALK => 'సభ్యునిపై_చర్చ',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_చర్చ',
+ NS_IMAGE => 'బొమ్మ',
+ NS_IMAGE_TALK => 'బొమ్మపై_చర్చ',
+ NS_MEDIAWIKI => 'మీడియావికీ',
+ NS_MEDIAWIKI_TALK => 'మీడియావికీ_చర్చ',
+ NS_TEMPLATE => 'మూస',
+ NS_TEMPLATE_TALK => 'మూస_చర్చ',
+ NS_HELP => 'సహాయము',
+ NS_HELP_TALK => 'సహాయము_చర్చ',
+ NS_CATEGORY => 'వర్గం',
+ NS_CATEGORY_TALK => 'వర్గం_చర్చ'
+ );
+
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesTe + parent::getNamespaces();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesTe[$key] ) ) {
+ return $this->mMessagesTe[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesTe;
+ }
+
+ // nobody seems to use these anymore
+ /*function digitTransformTable() {
+
+ return array(
+ '0' => '౦',
+ '1' => '౧',
+ '2' => '౨',
+ '3' => '౩',
+ '4' => '౪',
+ '5' => '౫',
+ '6' => '౬',
+ '7' => '౭',
+ '8' => '౮',
+ '9' => '౯'
+ );
+ }*/
+
+}
+?>
diff --git a/languages/LanguageTh.php b/languages/LanguageTh.php
new file mode 100644
index 00000000..193a353d
--- /dev/null
+++ b/languages/LanguageTh.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+#--------------------------------------------------------------------------
+# ผู้แปล (Translators)
+# - วรากร อึ้งวิเชียร (Varakorn Ungvichian)
+# - จักรกฤช วงศ์สระหลวง (Jakkrit Vongsraluang) / PaePae
+#--------------------------------------------------------------------------
+
+/* private */ $wgNamespaceNamesTh = array(
+ NS_MEDIA => 'สื่อ',
+ NS_SPECIAL => 'พิเศษ',
+ NS_MAIN => '',
+ NS_TALK => 'พูดคุย',
+ NS_USER => 'ผู้ใช้',
+ NS_USER_TALK => 'คุยกับผู้ใช้',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'คุยเรื่อง' . $wgMetaNamespace,
+ NS_IMAGE => 'ภาพ',
+ NS_IMAGE_TALK => 'คุยเรื่องภาพ',
+ NS_MEDIAWIKI => 'มีเดียวิกิ',
+ NS_MEDIAWIKI_TALK => 'คุยเรื่องมีเดียวิกิ',
+ NS_TEMPLATE => 'แม่แบบ',
+ NS_TEMPLATE_TALK => 'คุยเรื่องแม่แบบ',
+ NS_HELP => 'วิธีใช้',
+ NS_HELP_TALK => 'คุยเรื่องวิธีใช้',
+ NS_CATEGORY => 'หมวดหมู่',
+ NS_CATEGORY_TALK => 'คุยเรื่องหมวดหมู่',
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsTh = array(
+ "ไม่มี", "อยู่ทางซ้าย", "อยู่ทางขวา", "ลอยทางซ้าย"
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesTh.php');
+}
+
+#--------------------------------------------------------------------------
+# Internationalisation code
+#--------------------------------------------------------------------------
+
+require_once( "LanguageUtf8.php" );
+
+class LanguageTh extends LanguageUtf8 {
+
+ function getNamespaces() {
+ global $wgNamespaceNamesTh;
+ return $wgNamespaceNamesTh;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsTh;
+ return $wgQuickbarSettingsTh;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesTh;
+ if( isset( $wgAllMessagesTh[$key] ) ) {
+ return $wgAllMessagesTh[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ global $wgAllMessagesTh;
+ return $wgAllMessagesTh;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageTlh.php b/languages/LanguageTlh.php
new file mode 100644
index 00000000..1f4e1f63
--- /dev/null
+++ b/languages/LanguageTlh.php
@@ -0,0 +1,38 @@
+<?php
+/** Klingon (tlhIngan-Hol)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+/* private */ $wgNamespaceNamesTlh = array(
+ NS_MEDIA => "Doch",
+ NS_SPECIAL => "le'",
+ NS_MAIN => "",
+ NS_TALK => "ja'chuq",
+ NS_USER => "lo'wI'",
+ NS_USER_TALK => "lo'wI'_ja'chuq",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . "_ja'chuq",
+ NS_IMAGE => "nagh_beQ",
+ NS_IMAGE_TALK => "nagh_beQ_ja'chuq",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_ja'chuq",
+ NS_TEMPLATE => "chen'ay'",
+ NS_TEMPLATE_TALK => "chen'ay'_ja'chuq",
+ NS_HELP => "QaH",
+ NS_HELP_TALK => "QaH_ja'chuq",
+ NS_CATEGORY => "Segh",
+ NS_CATEGORY_TALK => "Segh_ja'chuq"
+) + $wgNamespaceNamesEn;
+
+class LanguageTlh extends LanguageUtf8 {
+ function getNamespaces() {
+ global $wgNamespaceNamesTlh;
+ return $wgNamespaceNamesTlh;
+ }
+}
+
+?>
diff --git a/languages/LanguageTr.php b/languages/LanguageTr.php
new file mode 100644
index 00000000..82fa096d
--- /dev/null
+++ b/languages/LanguageTr.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Turkish (Türkçe)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesTr.php');
+}
+
+class LanguageTr extends LanguageUtf8 {
+
+ private $mDateFormatsTr = array(
+ MW_DATE_DEFAULT => 'Tercih yok',
+ MW_DATE_MDY => '16:12, Ocak 15, 2001',
+ MW_DATE_DMY => '16:12, 15 Ocak 2001',
+ MW_DATE_YMD => '16:12, 2001 Ocak 15',
+ MW_DATE_ISO => '2001-01-15 16:12:34'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesTr;
+ $this->mMessagesTr =& $wgAllMessagesTr;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesTr = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Özel',
+ NS_MAIN => '',
+ NS_TALK => 'Tartışma',
+ NS_USER => 'Kullanıcı',
+ NS_USER_TALK => 'Kullanıcı_mesaj',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_tartışma',
+ NS_IMAGE => 'Resim',
+ NS_IMAGE_TALK => 'Resim_tartışma',
+ NS_MEDIAWIKI => 'MedyaViki',
+ NS_MEDIAWIKI_TALK => 'MedyaViki_tartışma',
+ NS_TEMPLATE => 'Şablon',
+ NS_TEMPLATE_TALK => 'Şablon_tartışma',
+ NS_HELP => 'Yardım',
+ NS_HELP_TALK => 'Yardım_tartışma',
+ NS_CATEGORY => 'Kategori',
+ NS_CATEGORY_TALK => 'Kategori_tartışma',
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesTr + parent::getNamespaces();
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsTr;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesTr[$key] ) ) {
+ return $this->mMessagesTr[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesTr;
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function ucfirst ( $string ) {
+ if ( $string[0] == 'i' ) {
+ return 'İ' . substr( $string, 1 );
+ } else {
+ return parent::ucfirst( $string );
+ }
+ }
+
+}
+?>
diff --git a/languages/LanguageTt.php b/languages/LanguageTt.php
new file mode 100644
index 00000000..80eec2ab
--- /dev/null
+++ b/languages/LanguageTt.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+#
+# Tatarish localisation for MediaWiki
+#
+
+require_once( "LanguageUtf8.php" );
+
+/* private */ $wgNamespaceNamesTt = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Maxsus',
+ NS_MAIN => '',
+ NS_TALK => 'Bäxäs',
+ NS_USER => 'Äğzä',
+ NS_USER_TALK => "Äğzä_bäxäse",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_bäxäse',
+ NS_IMAGE => "Räsem",
+ NS_IMAGE_TALK => "Räsem_bäxäse",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_bäxäse",
+ NS_TEMPLATE => "Ürnäk",
+ NS_TEMPLATE_TALK => "Ürnäk_bäxäse",
+ NS_HELP => "Yärdäm",
+ NS_HELP_TALK => "Yärdäm_bäxäse",
+ NS_CATEGORY => "Törkem",
+ NS_CATEGORY_TALK => "Törkem_bäxäse"
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgDateFormatsTt = array(
+# "köyläwsez",
+);
+
+# Note to translators:
+# Please include the English words as synonyms. This allows people
+# from other wikis to contribute more easily.
+#
+/* private */ $wgMagicWordsTt = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#yünältü' ),
+ MAG_NOTOC => array( 0, '__ETYUQ__' ),
+ MAG_FORCETOC => array( 0, '__ETTIQ__' ),
+ MAG_TOC => array( 0, '__ET__' ),
+ MAG_NOEDITSECTION => array( 0, '__BÜLEMTÖZÄTÜYUQ__' ),
+ MAG_START => array( 0, '__BAŞLAW__' ),
+ MAG_CURRENTMONTH => array( 1, 'AĞIMDAĞI_AY' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'AĞIMDAĞI_AY_İSEME' ),
+ MAG_CURRENTDAY => array( 1, 'AĞIMDAĞI_KÖN' ),
+ MAG_CURRENTDAYNAME => array( 1, 'AĞIMDAĞI_KÖN_İSEME' ),
+ MAG_CURRENTYEAR => array( 1, 'AĞIMDAĞI_YIL' ),
+ MAG_CURRENTTIME => array( 1, 'AĞIMDAĞI_WAQIT' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'MÄQÄLÄ_SANI' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'AĞIMDAĞI_AY_İSEME_GEN' ),
+ MAG_PAGENAME => array( 1, 'BİTİSEME' ),
+ MAG_NAMESPACE => array( 1, 'İSEMARA' ),
+ MAG_SUBST => array( 0, 'TÖPÇEK:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:' ),
+ MAG_END => array( 0, '__AZAQ__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb' ),
+ MAG_IMG_RIGHT => array( 1, 'uñda' ),
+ MAG_IMG_LEFT => array( 1, 'sulda' ),
+ MAG_IMG_NONE => array( 1, 'yuq' ),
+ MAG_IMG_WIDTH => array( 1, '$1px' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame' ),
+ MAG_INT => array( 0, 'EÇKE:' ),
+ MAG_SITENAME => array( 1, 'SÄXİFÄİSEME' ),
+ MAG_NS => array( 0, 'İA:' ),
+ MAG_LOCALURL => array( 0, 'URINLIURL:' ),
+ MAG_LOCALURLE => array( 0, 'URINLIURLE:' ),
+ MAG_SERVER => array( 0, 'SERVER' )
+) + $wgMagicWordsEn;
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesTt.php');
+}
+
+class LanguageTt extends LanguageUtf8 {
+
+ function getNamespaces() {
+ global $wgNamespaceNamesTt;
+ return $wgNamespaceNamesTt;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsTt;
+ return $wgDateFormatsTt;
+ }
+
+
+ function date( $ts, $adj = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+
+ $d = (0 + substr( $ts, 6, 2 )) . ". " .
+ $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) . " " .
+ substr( $ts, 0, 4 );
+ return $d;
+ }
+
+ function time( $ts, $adj = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+
+ $t = substr( $ts, 8, 2 ) . ":" . substr( $ts, 10, 2 );
+ return $t;
+ }
+
+ function timeanddate( $ts, $adj = false ) {
+ return $this->date( $ts, $adj ) . ", " . $this->time( $ts, $adj );
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesTt;
+ if( isset( $wgAllMessagesTt[$key] ) ) {
+ return $wgAllMessagesTt[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function fallback8bitEncoding() {
+ # Windows codepage 1252 is a superset of iso 8859-1
+ # override this to use difference source encoding to
+ # translate incoming 8-bit URLs.
+ return "windows-1254";
+ }
+}
+
+?>
diff --git a/languages/LanguageTy.deps.php b/languages/LanguageTy.deps.php
new file mode 100644
index 00000000..50e66fc6
--- /dev/null
+++ b/languages/LanguageTy.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageTy.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageFr.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageTy.php b/languages/LanguageTy.php
new file mode 100644
index 00000000..37846e33
--- /dev/null
+++ b/languages/LanguageTy.php
@@ -0,0 +1,28 @@
+<?php
+/** Tahitian (Reo Mā`ohi)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageFr.php';
+
+class LanguageTy extends LanguageFr {
+
+ function getFallbackLanguage() {
+ return 'fr';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageTyv.php b/languages/LanguageTyv.php
new file mode 100644
index 00000000..1c7abe0b
--- /dev/null
+++ b/languages/LanguageTyv.php
@@ -0,0 +1,312 @@
+<?php
+/** Tyvan localization (Тыва дыл)
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+# From friends at tyvawiki.org
+# Originally based upon LanguageRu.php
+
+require_once( 'LanguageUtf8.php' );
+
+#--------------------------------------------------------------------------
+# Language-specific text
+#--------------------------------------------------------------------------
+
+/* private */ $wgNamespaceNamesTyv = array(
+ NS_MEDIA => 'Медиа', //Media
+ NS_SPECIAL => 'Тускай', //Special
+ NS_MAIN => '',
+ NS_TALK => 'Чугаа', //Talk
+ NS_USER => 'Aжыглакчы', //User
+ NS_USER_TALK => 'Aжыглакчы_чугаа', //User_talk
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_чугаа', //_talk
+ NS_IMAGE => 'Чурук', //Image
+ NS_IMAGE_TALK => 'Чурук_чугаа', //Image_talk
+ NS_MEDIAWIKI => 'МедиаВики', //MediaWiki
+ NS_MEDIAWIKI_TALK => 'МедиаВики_чугаа', //MediaWiki_talk
+ NS_TEMPLATE => 'Хээ', //Template
+ NS_TEMPLATE_TALK => 'Хээ_чугаа', //Template_talk
+ NS_HELP => 'Дуза', //Help
+ NS_HELP_TALK => 'Дуза_чугаа', //Help_talk
+ NS_CATEGORY => 'Бөлүк', //Category
+ NS_CATEGORY_TALK => 'Бөлүк_чугаа', //Category_talk
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgSkinNamesTyv = array(
+ 'standard' => 'Classic', //Classic
+ 'nostalgia' => 'Nostalgia', //Nostalgia
+ 'cologneblue' => 'Cologne Blue', //Cologne Blue
+ 'davinci' => 'ДаВинчи', //DaVinci
+ 'mono' => 'Моно', //Mono
+ 'monobook' => 'Моно-Ном', //MonoBook
+ 'myskin' => 'MySkin', //MySkin
+ 'chick' => 'Chick' //Chick
+) + $wgSkinNamesEn;
+
+/* private */ $wgBookstoreListTyv = array(
+ 'ОЗОН' => 'http://www.ozon.ru/?context=advsearch_book&isbn=$1',
+ 'Books.Ru' => 'http://www.books.ru/shop/search/advanced?as%5Btype%5D=books&as%5Bname%5D=&as%5Bisbn%5D=$1&as%5Bauthor%5D=&as%5Bmaker%5D=&as%5Bcontents%5D=&as%5Binfo%5D=&as%5Bdate_after%5D=&as%5Bdate_before%5D=&as%5Bprice_less%5D=&as%5Bprice_more%5D=&as%5Bstrict%5D=%E4%E0&as%5Bsub%5D=%E8%F1%EA%E0%F2%FC&x=22&y=8',
+ 'Яндекс.Маркет' => 'http://market.yandex.ru/search.xml?text=$1',
+ 'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1',
+ 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN',
+ 'PriceSCAN' => 'http://www.pricescan.com/books/bookDetail.asp?isbn=$1',
+ 'Barnes & Noble' => 'http://shop.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1'
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesTyv.php');
+}
+
+
+#--------------------------------------------------------------------------
+# Internationalisation code
+#--------------------------------------------------------------------------
+
+class LanguageTyv extends LanguageUtf8 {
+ function __construct() {
+ global $wgNamespaceNamesTyv, $wgMetaNamespace;
+ parent::__construct();
+ $wgNamespaceNamesTyv[NS_PROJECT_TALK] = $wgMetaNamespace . '_чугаа';
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesTyv;
+ return $wgNamespaceNamesTyv;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesTyv;
+ return $wgSkinNamesTyv;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesTyv;
+ return isset($wgAllMessagesTyv[$key]) ? $wgAllMessagesTyv[$key] : parent::getMessage($key);
+ }
+
+ function fallback8bitEncoding() {
+ return "windows-1251";
+ }
+
+ /**
+ * Grammatical transformations, needed for inflected languages
+ * Invoked by putting {{grammar:case|word}} in a message
+ *
+ * @param string $word
+ * @param string $case
+ * @return string
+ */
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset($wgGrammarForms['tyv'][$case][$word]) ) {
+ return $wgGrammarForms['tyv'][$case][$word];
+ }
+
+
+ // Set up some constants...
+ $allVowels = array("е", "и", "э", "ө", "ү", "а", "ё", "о", "у", "ы", "ю", "я", "a", "e", "i", "o", "ö", "u", "ü", "y");
+ $frontVowels = array("е", "и", "э", "ө", "ү", "e", "i", "ö", "ü");
+ $backVowels = array("а", "ё", "о", "у", "ы", "ю", "я", "a", "o", "u", "y");
+ $unroundFrontVowels = array("е", "и", "э", "e", "i");
+ $roundFrontVowels = array("ө", "ү", "ö", "ü");
+ $unroundBackVowels = array("а", "ы", "я", "a", "y");
+ $roundBackVowels = array("ё", "о", "у", "ю", "o", "u");
+ $voicedPhonemes = array("д", "б", "з", "ж", "г", "d", "b", "z", "g");
+ $unvoicedPhonemes = array("т", "п", "с", "ш", "к", "ч", "х", "t", "p", "s", "k", "x");
+ $directiveUnvoicedStems = array("т", "п", "с", "ш", "к", "ч", "х", "л", "м", "н", "ң", "t", "p", "s", "k", "x", "l", "m", "n", "ŋ");
+ $directiveVoicedStems = array("д", "б", "з", "ж", "г", "р", "й", "d", "b", "z", "g", "r", "j");
+
+// $allSonants = array("л", "м", "н", "ң", "р", "й");
+// $allNasals = array("м", "н", "ң");
+
+ // Put the word in a form we can play with since we're using UTF-8
+ preg_match_all( '/./us', $word, $ar );
+
+ $wordEnding = $ar[0][count($ar[0]) - 1]; //Here's the last letter in the word
+ $wordReversed = array_reverse($ar[0]); //Here's an array with the order of the letters in the word reversed so we can find a match quicker *shrug*
+
+ // Find the last vowel in the word
+ $wordLastVowel = NULL;
+ foreach ( $wordReversed as $xvalue ) {
+ foreach ( $allVowels as $yvalue ) {
+ if ( strcmp($xvalue, $yvalue) == 0 ) {
+ $wordLastVowel = $xvalue;
+ break;
+ } else {
+ continue;
+ }
+ }
+ if ( $wordLastVowel !== NULL ) {
+ break;
+ } else {
+ continue;
+ }
+ }
+
+ // Now convert the word
+ switch ( $case ) {
+ case "genitive":
+ if ( in_array($wordEnding, $unvoicedPhonemes) ) {
+ if ( in_array($wordLastVowel, $roundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "түң";
+ } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "тиң";
+ } elseif ( in_array($wordLastVowel, $roundBackVowels) ) {
+ $word = implode("",$ar[0]) . "туң";
+ } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) {
+ $word = implode("",$ar[0]) . "тың";
+ } else {
+ }
+ } elseif ( $wordEnding === "л" || $wordEnding === "l") {
+ if ( in_array($wordLastVowel, $roundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "дүң";
+ } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "диң";
+ } elseif ( in_array($wordLastVowel, $roundBackVowels) ) {
+ $word = implode("",$ar[0]) . "дуң";
+ } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) {
+ $word = implode("",$ar[0]) . "дың";
+ } else {
+ }
+ } else {
+ if ( in_array($wordLastVowel, $roundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "нүң";
+ } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "ниң";
+ } elseif ( in_array($wordLastVowel, $roundBackVowels) ) {
+ $word = implode("",$ar[0]) . "нуң";
+ } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) {
+ $word = implode("",$ar[0]) . "ның";
+ } else {
+ }
+ }
+ break;
+ case "dative":
+ if ( in_array($wordEnding, $unvoicedPhonemes) ) {
+ if ( in_array($wordLastVowel, $frontVowels) ) {
+ $word = implode("",$ar[0]) . "ке";
+ } elseif ( in_array($wordLastVowel, $backVowels) ) {
+ $word = implode("",$ar[0]) . "ка";
+ } else {
+ }
+ } else {
+ if ( in_array($wordLastVowel, $frontVowels) ) {
+ $word = implode("",$ar[0]) . "ге";
+ } elseif ( in_array($wordLastVowel, $backVowels) ) {
+ $word = implode("",$ar[0]) . "га";
+ } else {
+ }
+ }
+ break;
+ case "accusative":
+ if ( in_array($wordEnding, $unvoicedPhonemes) ) {
+ if ( in_array($wordLastVowel, $roundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "тү";
+ } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "ти";
+ } elseif ( in_array($wordLastVowel, $roundBackVowels) ) {
+ $word = implode("",$ar[0]) . "ту";
+ } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) {
+ $word = implode("",$ar[0]) . "ты";
+ } else {
+ }
+ } elseif ( $wordEnding === "л" || $wordEnding === "l") {
+ if ( in_array($wordLastVowel, $roundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "дү";
+ } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "ди";
+ } elseif ( in_array($wordLastVowel, $roundBackVowels) ) {
+ $word = implode("",$ar[0]) . "ду";
+ } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) {
+ $word = implode("",$ar[0]) . "ды";
+ } else {
+ }
+ } else {
+ if ( in_array($wordLastVowel, $roundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "нү";
+ } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "ни";
+ } elseif ( in_array($wordLastVowel, $roundBackVowels) ) {
+ $word = implode("",$ar[0]) . "ну";
+ } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) {
+ $word = implode("",$ar[0]) . "ны";
+ } else {
+ }
+ }
+ break;
+ case "locative":
+ if ( in_array($wordEnding, $unvoicedPhonemes) ) {
+ if ( in_array($wordLastVowel, $frontVowels) ) {
+ $word = implode("",$ar[0]) . "те";
+ } elseif ( in_array($wordLastVowel, $backVowels) ) {
+ $word = implode("",$ar[0]) . "та";
+ } else {
+ }
+ } else {
+ if ( in_array($wordLastVowel, $frontVowels) ) {
+ $word = implode("",$ar[0]) . "де";
+ } elseif ( in_array($wordLastVowel, $backVowels) ) {
+ $word = implode("",$ar[0]) . "да";
+ } else {
+ }
+ }
+ break;
+ case "ablative":
+ if ( in_array($wordEnding, $unvoicedPhonemes) ) {
+ if ( in_array($wordLastVowel, $frontVowels) ) {
+ $word = implode("",$ar[0]) . "тен";
+ } elseif ( in_array($wordLastVowel, $backVowels) ) {
+ $word = implode("",$ar[0]) . "тан";
+ } else {
+ }
+ } else {
+ if ( in_array($wordLastVowel, $frontVowels) ) {
+ $word = implode("",$ar[0]) . "ден";
+ } elseif ( in_array($wordLastVowel, $backVowels) ) {
+ $word = implode("",$ar[0]) . "дан";
+ } else {
+ }
+ }
+ break;
+ case "directive1":
+ if ( in_array($wordEnding, $directiveVoicedStems) ) {
+ $word = implode("",$ar[0]) . "же";
+ } elseif ( in_array($wordEnding, $directiveUnvoicedStems) ) {
+ $word = implode("",$ar[0]) . "че";
+ } else {
+ }
+ break;
+ case "directive2":
+ if ( in_array($wordEnding, $unvoicedPhonemes) ) {
+ if ( in_array($wordLastVowel, $roundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "түве";
+ } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "тиве";
+ } elseif ( in_array($wordLastVowel, $roundBackVowels) ) {
+ $word = implode("",$ar[0]) . "туве";
+ } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) {
+ $word = implode("",$ar[0]) . "тыве";
+ } else {
+ }
+ } else {
+ if ( in_array($wordLastVowel, $roundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "дүве";
+ } elseif ( in_array($wordLastVowel, $unroundFrontVowels) ) {
+ $word = implode("",$ar[0]) . "диве";
+ } elseif ( in_array($wordLastVowel, $roundBackVowels) ) {
+ $word = implode("",$ar[0]) . "дуве";
+ } elseif ( in_array($wordLastVowel, $unroundBackVowels) ) {
+ $word = implode("",$ar[0]) . "дыве";
+ } else {
+ }
+ }
+ break;
+ default:
+ break;
+ }
+ return $word;
+ }
+}
+?> \ No newline at end of file
diff --git a/languages/LanguageUdm.deps.php b/languages/LanguageUdm.deps.php
new file mode 100644
index 00000000..65861099
--- /dev/null
+++ b/languages/LanguageUdm.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageUdm.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageRu.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageUdm.php b/languages/LanguageUdm.php
new file mode 100644
index 00000000..d4d8a55f
--- /dev/null
+++ b/languages/LanguageUdm.php
@@ -0,0 +1,81 @@
+<?php
+/** Udmurt (Удмурт)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ */
+
+require_once( 'LanguageRu.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesUdm.php');
+}
+
+class LanguageUdm extends LanguageUtf8 {
+ private $mMessagesUdm, $mNamespaceNamesUdm = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesUdm;
+ $this->mMessagesUdm =& $wgAllMessagesUdm;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesUdm = array(
+ NS_MEDIA => 'Медиа',
+ NS_SPECIAL => 'Панель',
+ NS_MAIN => '',
+ NS_TALK => 'Вераськон',
+ NS_USER => 'Викиавтор',
+ NS_USER_TALK => 'Викиавтор_сярысь_вераськон',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_сярысь_вераськон',
+ NS_IMAGE => 'Суред',
+ NS_IMAGE_TALK => 'Суред_сярысь_вераськон',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_сярысь_вераськон',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Шаблон_сярысь_вераськон',
+ NS_HELP => 'Валэктон',
+ NS_HELP_TALK => 'Валэктон_сярысь_вераськон',
+ NS_CATEGORY => 'Категория',
+ NS_CATEGORY_TALK => 'Категория_сярысь_вераськон',
+ );
+
+ }
+
+ function getFallbackLanguage() {
+ return 'ru';
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesUdm + parent::getNamespaces();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesUdm[$key] ) ) {
+ return $this->mMessagesUdm[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesUdm;
+ }
+
+ function linkTrail() {
+ return '/^([a-zа-яёӝӟӥӧӵ“»]+)(.*)$/sDu';
+ }
+
+ function fallback8bitEncoding() {
+ return 'windows-1251';
+ }
+
+ function separatorTransformTable() {
+ return array(',' => ' ', '.' => ',' );
+ }
+
+}
+?>
diff --git a/languages/LanguageUg.php b/languages/LanguageUg.php
new file mode 100644
index 00000000..bd860547
--- /dev/null
+++ b/languages/LanguageUg.php
@@ -0,0 +1,22 @@
+<?php
+/** Uyghur (Oyghurque)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+class LanguageUg extends LanguageUtf8 {
+
+ function isRTL() {
+ return true;
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageUk.php b/languages/LanguageUk.php
new file mode 100644
index 00000000..a3bdfd51
--- /dev/null
+++ b/languages/LanguageUk.php
@@ -0,0 +1,98 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+/* private */ $wgNamespaceNamesUk = array(
+ NS_MEDIA => 'Медіа',
+ NS_SPECIAL => 'Спеціальні',
+ NS_MAIN => '',
+ NS_TALK => 'Обговорення',
+ NS_USER => 'Користувач',
+ NS_USER_TALK => 'Обговорення_користувача',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Обговорення_' . $wgMetaNamespace,
+ NS_IMAGE => 'Зображення',
+ NS_IMAGE_TALK => 'Обговорення_зображення',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Обговорення_MediaWiki',
+ NS_TEMPLATE => 'Шаблон',
+ NS_TEMPLATE_TALK => 'Обговорення_шаблону',
+ NS_HELP => 'Довідка',
+ NS_HELP_TALK => 'Обговорення_довідки',
+ NS_CATEGORY => 'Категорія',
+ NS_CATEGORY_TALK => 'Обговорення_категорії'
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsUk = array(
+ "Не показувати панель", "Фіксована зліва", "Фіксована справа", "Плаваюча зліва"
+);
+
+/* private */ $wgSkinNamesUk = array(
+ 'standard' => "Стандартне",
+ 'nostalgia' => "Ностальгія",
+ 'cologneblue' => "Кельнське Синє"
+) + $wgSkinNamesEn;
+
+
+/* private */ $wgDateFormatsUk = array(
+# "Немає значення",
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesUk.php');
+}
+
+class LanguageUk extends LanguageUtf8 {
+
+ function getNamespaces() {
+ global $wgNamespaceNamesUk;
+ return $wgNamespaceNamesUk;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsUk;
+ return $wgQuickbarSettingsUk;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesUk;
+ return $wgSkinNamesUk;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsUk;
+ return $wgDateFormatsUk;
+ }
+
+ function getMonthNameGen( $key ) {
+ global $wgMonthNamesGenEn, $wgContLang;
+ // see who called us and use the correct message function
+ if( get_class( $wgContLang->getLangObj() ) == get_class( $this ) )
+ return wfMsgForContent( $wgMonthNamesGenEn[$key-1] );
+ else
+ return wfMsg( $wgMonthNamesGenEn[$key-1] );
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesUk;
+ if( isset( $wgAllMessagesUk[$key] ) ) {
+ return $wgAllMessagesUk[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function fallback8bitEncoding() {
+ return "windows-1251";
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+}
+?> \ No newline at end of file
diff --git a/languages/LanguageUr.php b/languages/LanguageUr.php
new file mode 100644
index 00000000..1b994bea
--- /dev/null
+++ b/languages/LanguageUr.php
@@ -0,0 +1,45 @@
+<?php
+/** Urdu (اردو)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+class LanguageUr extends LanguageUtf8 {
+ private $mMessagesUr = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesUr;
+ $this->mMessagesUr =& $wgAllMessagesUr;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesUr[$key] ) ) {
+ return $this->mMessagesUr[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesUr;
+ }
+
+ function getDefaultUserOptions() {
+ $opt = parent::getDefaultUserOptions();
+ $opt["quickbar"] = 2; # Right-to-left
+ $opt["underline"] = 0; # Underline is hard to read in Arabic script
+ return $opt;
+ }
+
+ # For right-to-left language support
+ function isRTL() {
+ return true;
+ }
+}
+
+?>
diff --git a/languages/LanguageUtf8.php b/languages/LanguageUtf8.php
new file mode 100644
index 00000000..d738624b
--- /dev/null
+++ b/languages/LanguageUtf8.php
@@ -0,0 +1,199 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+if( defined( "MEDIAWIKI" ) ) {
+
+# This file and LanguageLatin1.php may be included from within functions, so
+# we need to have global statements
+
+global $wgInputEncoding, $wgOutputEncoding, $wikiUpperChars, $wikiLowerChars;
+global $wgDBname, $wgMemc;
+
+$wgInputEncoding = "UTF-8";
+$wgOutputEncoding = "UTF-8";
+
+if( function_exists( 'mb_strtoupper' ) ) {
+ mb_internal_encoding('UTF-8');
+} else {
+ # Hack our own case conversion routines
+
+ # Loading serialized arrays is faster than parsing code :P
+ $wikiUpperChars = $wgMemc->get( $key1 = "$wgDBname:utf8:upper" );
+ $wikiLowerChars = $wgMemc->get( $key2 = "$wgDBname:utf8:lower" );
+
+ if(empty( $wikiUpperChars) || empty($wikiLowerChars )) {
+ require_once( "includes/Utf8Case.php" );
+ $wgMemc->set( $key1, $wikiUpperChars );
+ $wgMemc->set( $key2, $wikiLowerChars );
+ }
+}
+
+/**
+ * Base stuff useful to all UTF-8 based language files
+ * @package MediaWiki
+ */
+class LanguageUtf8 extends Language {
+
+ # These functions use mbstring library, if it is loaded
+ # or compiled and character mapping arrays otherwise.
+ # In case of language-specific character mismatch
+ # it should be dealt with in Language classes.
+
+ function ucfirst( $str ) {
+ return LanguageUtf8::uc( $str, true );
+ }
+
+ function uc( $str, $first = false ) {
+ if ( function_exists( 'mb_strtoupper' ) )
+ if ( $first )
+ if ( LanguageUtf8::isMultibyte( $str ) )
+ return mb_strtoupper( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
+ else
+ return ucfirst( $str );
+ else
+ return LanguageUtf8::isMultibyte( $str ) ? mb_strtoupper( $str ) : strtoupper( $str );
+ else
+ if ( LanguageUtf8::isMultibyte( $str ) ) {
+ global $wikiUpperChars;
+ $x = $first ? '^' : '';
+ return preg_replace(
+ "/$x([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "strtr( \"\$1\" , \$wikiUpperChars )",
+ $str
+ );
+ } else
+ return $first ? ucfirst( $str ) : strtoupper( $str );
+ }
+
+ function lcfirst( $str ) {
+ return LanguageUtf8::lc( $str, true );
+ }
+
+ function lc( $str, $first = false ) {
+ if ( function_exists( 'mb_strtolower' ) )
+ if ( $first )
+ if ( LanguageUtf8::isMultibyte( $str ) )
+ return mb_strtolower( mb_substr( $str, 0, 1 ) ) . mb_substr( $str, 1 );
+ else
+ return strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 );
+ else
+ return LanguageUtf8::isMultibyte( $str ) ? mb_strtolower( $str ) : strtolower( $str );
+ else
+ if ( LanguageUtf8::isMultibyte( $str ) ) {
+ global $wikiLowerChars;
+ $x = $first ? '^' : '';
+ return preg_replace(
+ "/$x([A-Z]|[\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "strtr( \"\$1\" , \$wikiLowerChars )",
+ $str
+ );
+ } else
+ return $first ? strtolower( substr( $str, 0, 1 ) ) . substr( $str, 1 ) : strtolower( $str );
+ }
+
+ function isMultibyte( $str ) {
+ return (bool)preg_match( '/^[\x80-\xff]/', $str );
+ }
+
+ function stripForSearch( $string ) {
+ # MySQL fulltext index doesn't grok utf-8, so we
+ # need to fold cases and convert to hex
+
+ # In Language:: it just returns lowercase, maybe
+ # all strtolower on stripped output or argument
+ # should be removed and all stripForSearch
+ # methods adjusted to that.
+
+ wfProfileIn( "LanguageUtf8::stripForSearch" );
+ if( function_exists( 'mb_strtolower' ) ) {
+ $out = preg_replace(
+ "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "'U8' . bin2hex( \"$1\" )",
+ mb_strtolower( $string ) );
+ } else {
+ global $wikiLowerChars;
+ $out = preg_replace(
+ "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "'U8' . bin2hex( strtr( \"\$1\", \$wikiLowerChars ) )",
+ $string );
+ }
+ wfProfileOut( "LanguageUtf8::stripForSearch" );
+ return $out;
+ }
+
+ function fallback8bitEncoding() {
+ # Windows codepage 1252 is a superset of iso 8859-1
+ # override this to use difference source encoding to
+ # translate incoming 8-bit URLs.
+ return "windows-1252";
+ }
+
+ function checkTitleEncoding( $s ) {
+ global $wgInputEncoding;
+
+ if( is_array( $s ) ) {
+ wfDebugDieBacktrace( 'Given array to checkTitleEncoding.' );
+ }
+ # Check for non-UTF-8 URLs
+ $ishigh = preg_match( '/[\x80-\xff]/', $s);
+ if(!$ishigh) return $s;
+
+ $isutf8 = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+ if( $isutf8 ) return $s;
+
+ return $this->iconv( $this->fallback8bitEncoding(), "utf-8", $s );
+ }
+
+ function firstChar( $s ) {
+ preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})/', $s, $matches);
+
+ return isset( $matches[1] ) ? $matches[1] : "";
+ }
+
+ # Crop a string from the beginning or end to a certain number of bytes.
+ # (Bytes are used because our storage has limited byte lengths for some
+ # columns in the database.) Multibyte charsets will need to make sure that
+ # only whole characters are included!
+ #
+ # $length does not include the optional ellipsis.
+ # If $length is negative, snip from the beginning
+ function truncate( $string, $length, $ellipsis = "" ) {
+ if( $length == 0 ) {
+ return $ellipsis;
+ }
+ if ( strlen( $string ) <= abs( $length ) ) {
+ return $string;
+ }
+ if( $length > 0 ) {
+ $string = substr( $string, 0, $length );
+ $char = ord( $string[strlen( $string ) - 1] );
+ if ($char >= 0xc0) {
+ # We got the first byte only of a multibyte char; remove it.
+ $string = substr( $string, 0, -1 );
+ } elseif( $char >= 0x80 &&
+ preg_match( '/^(.*)(?:[\xe0-\xef][\x80-\xbf]|' .
+ '[\xf0-\xf7][\x80-\xbf]{1,2})$/', $string, $m ) ) {
+ # We chopped in the middle of a character; remove it
+ $string = $m[1];
+ }
+ return $string . $ellipsis;
+ } else {
+ $string = substr( $string, $length );
+ $char = ord( $string[0] );
+ if( $char >= 0x80 && $char < 0xc0 ) {
+ # We chopped in the middle of a character; remove the whole thing
+ $string = preg_replace( '/^[\x80-\xbf]+/', '', $string );
+ }
+ return $ellipsis . $string;
+ }
+ }
+}
+
+} # ifdef MEDIAWIKI
+
+?>
diff --git a/languages/LanguageVec.deps.php b/languages/LanguageVec.deps.php
new file mode 100644
index 00000000..4b89673d
--- /dev/null
+++ b/languages/LanguageVec.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageVec.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageIt.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageVec.php b/languages/LanguageVec.php
new file mode 100644
index 00000000..a87ddd8e
--- /dev/null
+++ b/languages/LanguageVec.php
@@ -0,0 +1,77 @@
+<?php
+/** Venitian ( Vèneto )
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( 'LanguageIt.php' );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesVec.php');
+}
+
+class LanguageVec extends LanguageIt {
+ private $mMessagesVec, $mNamespaceNamesVec = null;
+
+ private $mQuickbarSettingsVec = array(
+ 'Nessun', 'Fisso a sinistra', 'Fisso a destra', 'Fluttuante a sinistra'
+ );
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesVec;
+ $this->mMessagesVec =& $wgAllMessagesVec;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesVec = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Speciale',
+ NS_MAIN => '',
+ NS_TALK => 'Discussion',
+ NS_USER => 'Utente',
+ NS_USER_TALK => 'Discussion_utente',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Discussion_' . $wgMetaNamespace,
+ NS_IMAGE => 'Imagine',
+ NS_IMAGE_TALK => 'Discussion_imagine',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discussion_MediaWiki',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Discussion_template',
+ NS_HELP => 'Aiuto',
+ NS_HELP_TALK => 'Discussion_aiuto',
+ NS_CATEGORY => 'Categoria',
+ NS_CATEGORY_TALK => 'Discussion_categoria'
+ );
+
+ }
+
+ function getFallbackLanguage() {
+ return 'it';
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesVec + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsVec;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesVec[$key] ) ) {
+ return $this->mMessagesVec[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesVec;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageVi.php b/languages/LanguageVi.php
new file mode 100644
index 00000000..b9ba462b
--- /dev/null
+++ b/languages/LanguageVi.php
@@ -0,0 +1,216 @@
+<?php
+/**
+ * Based on Language.php 1.645
+ * @package MediaWiki
+ * @subpackage Language
+ * Compatible to MediaWiki 1.5
+ * Initial translation by Trần Thế Trung and Nguyễn Thanh Quang
+ * Last update 28 August 2005 (UTC)
+ */
+
+require_once( 'LanguageUtf8.php' );
+
+/* private */ $wgNamespaceNamesVi = array(
+ NS_MEDIA => 'Phương_tiện',
+ NS_SPECIAL => 'Đặc_biệt',
+ NS_MAIN => '',
+ NS_TALK => 'Thảo_luận',
+ NS_USER => 'Thành_viên',
+ NS_USER_TALK => 'Thảo_luận_Thành_viên',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => 'Thảo_luận_'.$wgMetaNamespace,
+ NS_IMAGE => 'Hình',
+ NS_IMAGE_TALK => 'Thảo_luận_Hình',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Thảo_luận_MediaWiki',
+ NS_TEMPLATE => 'Tiêu_bản',
+ NS_TEMPLATE_TALK => 'Thảo_luận_Tiêu_bản',
+ NS_HELP => 'Trợ_giúp',
+ NS_HELP_TALK => 'Thảo_luận_Trợ_giúp',
+ NS_CATEGORY => 'Thể_loại',
+ NS_CATEGORY_TALK => 'Thảo_luận_Thể_loại'
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsVi = array(
+ 'Không', 'Trái', 'Phải', 'Nổi bên trái'
+);
+
+/* private */ $wgSkinNamesVi = array(
+ 'standard' => 'Cổ điển',
+ 'nostalgia' => 'Vọng cổ',
+ 'myskin' => 'Cá nhân'
+) + $wgSkinNamesEn;
+
+ /* private */ $wgMagicWordsVi = array(
+ MAG_REDIRECT => array( 0, '#redirect' , '#đổi' ),
+ MAG_NOTOC => array( 0, '__NOTOC__' , '__KHÔNGMỤCMỤC__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__', '__LUÔNMỤCLỤC__' ),
+ MAG_TOC => array( 0, '__TOC__' , '__MỤCLỤC__' ),
+ MAG_NOEDITSECTION => array( 0, '__NOEDITSECTION__', '__KHÔNGSỬAMỤC__' ),
+ MAG_START => array( 0, '__START__' , '__BẮTĐẦU__' ),
+ MAG_CURRENTMONTH => array( 1, 'CURRENTMONTH' , 'THÁNGNÀY' ),
+ MAG_CURRENTMONTHNAME => array( 1, 'CURRENTMONTHNAME' , 'TÊNTHÁNGNÀY' ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, 'CURRENTMONTHNAMEGEN' , 'TÊNDÀITHÁNGNÀY' ),
+ MAG_CURRENTMONTHABBREV => array( 1, 'CURRENTMONTHABBREV' , 'TÊNNGẮNTHÁNGNÀY' ),
+ MAG_CURRENTDAY => array( 1, 'CURRENTDAY' , 'NGÀYNÀY' ),
+ MAG_CURRENTDAYNAME => array( 1, 'CURRENTDAYNAME' , 'TÊNNGÀYNÀY' ),
+ MAG_CURRENTYEAR => array( 1, 'CURRENTYEAR' , 'NĂMNÀY' ),
+ MAG_CURRENTTIME => array( 1, 'CURRENTTIME' , 'GIỜNÀY' ),
+ MAG_NUMBEROFARTICLES => array( 1, 'NUMBEROFARTICLES' , 'SỐBÀI' ),
+ MAG_NUMBEROFFILES => array( 1, 'NUMBEROFFILES' , 'SỐTẬPTIN' ),
+ MAG_PAGENAME => array( 1, 'PAGENAME' , 'TÊNTRANG' ),
+ MAG_PAGENAMEE => array( 1, 'PAGENAMEE' , 'TÊNTRANG2' ),
+ MAG_NAMESPACE => array( 1, 'NAMESPACE' , 'KHÔNGGIANTÊN' ),
+ MAG_MSG => array( 0, 'MSG:' , 'NHẮN:' ),
+ MAG_SUBST => array( 0, 'SUBST:' , 'THẾ:' ),
+ MAG_MSGNW => array( 0, 'MSGNW:' , 'NHẮNMỚI:' ),
+ MAG_END => array( 0, '__END__' , '__KẾT__' ),
+ MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb' , 'nhỏ' ),
+ MAG_IMG_RIGHT => array( 1, 'right' , 'phải' ),
+ MAG_IMG_LEFT => array( 1, 'left' , 'trái' ),
+ MAG_IMG_NONE => array( 1, 'none' , 'không' ),
+ MAG_IMG_WIDTH => array( 1, '$1px' ),
+ MAG_IMG_CENTER => array( 1, 'center', 'centre' , 'giữa' ),
+ MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame' , 'khung'),
+ MAG_INT => array( 0, 'INT:' ),
+ MAG_SITENAME => array( 1, 'SITENAME' , 'TÊNMẠNG' ),
+ MAG_NS => array( 0, 'NS:' ),
+ MAG_LOCALURL => array( 0, 'LOCALURL:' ),
+ MAG_LOCALURLE => array( 0, 'LOCALURLE:' ),
+ MAG_SERVER => array( 0, 'SERVER' , 'MÁYCHỦ' ),
+ MAG_SERVERNAME => array( 0, 'SERVERNAME' , 'TÊNMÁYCHỦ' ),
+ MAG_SCRIPTPATH => array( 0, 'SCRIPTPATH' , '' ),
+ MAG_GRAMMAR => array( 0, 'GRAMMAR:' , 'NGỮPHÁP' ),
+ MAG_NOTITLECONVERT => array( 0, '__NOTITLECONVERT__',
+'__NOTC__', '__KHÔNGCHUYỂNTÊN__'),
+ MAG_NOCONTENTCONVERT => array( 0, '__NOCONTENTCONVERT__',
+'__NOCC__', '__KHÔNGCHUYỂNNỘIDUNG__'),
+ MAG_CURRENTWEEK => array( 1, 'CURRENTWEEK' , 'TUẦNNÀY' ),
+ MAG_CURRENTDOW => array( 1, 'CURRENTDOW' ),
+ MAG_REVISIONID => array( 1, 'REVISIONID' , 'SỐBẢN' ),
+ );
+
+/* private */ $wgDateFormatsVi = array(
+ MW_DATE_DEFAULT => 'Không lựa chọn',
+ 1 => '16:12, tháng 1 ngày 15 năm 2001',
+ 2 => '16:12, ngày 15 tháng 1 năm 2001',
+ 3 => '16:12, năm 2001 tháng 1 ngày 15',
+ 4 => '',
+ MW_DATE_ISO => '2001-01-15 16:12:34'
+);
+global $wgRightsText;
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesVi.php');
+}
+
+
+class LanguageVi extends LanguageUtf8 {
+
+ function getBookstoreList () {
+ global $wgBookstoreListVi ;
+ return $wgBookstoreListVi ;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesVi;
+ return $wgNamespaceNamesVi;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsVi;
+ return $wgQuickbarSettingsVi;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesVi;
+ return $wgSkinNamesVi;
+ }
+
+ function date( $ts, $adj = false, $format = true, $timecorrection = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $timecorrection ); }
+
+ $datePreference = $this->dateFormat( $format );
+
+ $month = $this->formatMonth( substr( $ts, 4, 2 ), $datePreference );
+ $day = $this->formatDay( substr( $ts, 6, 2 ), $datePreference );
+ $year = $this->formatNum( substr( $ts, 0, 4 ), true );
+
+ switch( $datePreference ) {
+ case 3:
+ case 4: return "$day/$month/$year";
+ case MW_DATE_ISO: return substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' .substr($ts, 6, 2);
+ default: return "$day $month năm $year";
+ }
+ }
+
+ function timeSeparator( $format ) {
+ $datePreference = $this->dateFormat($format);
+ switch ( $datePreference ) {
+ case '4': return 'h';
+ default: return ':';
+ }
+ }
+
+ function timeDateSeparator( $format ) {
+ $datePreference = $this->dateFormat($format);
+ switch ( $datePreference ) {
+ case '0':
+ case '1':
+ case '2': return ', ';
+ default: return ' ';
+ }
+ }
+
+ function formatMonth( $month, $format ) {
+ $datePreference = $this->dateFormat($format);
+ switch ( $datePreference ) {
+ case '0':
+ case '1': return 'tháng ' . ( 0 + $month );
+ case '2': return 'tháng ' . $this->getSpecialMonthName( $month );
+ default: return 0 + $month;
+ }
+ }
+
+ function formatDay( $day, $format ) {
+ $datePreference = $this->dateFormat($format);
+ switch ( $datePreference ) {
+ case '0':
+ case '1':
+ case '2': return 'ngày ' . (0 + $day);
+ default: return 0 + $day;
+ }
+ }
+
+ function getSpecialMonthName( $key ) {
+ $names = 'Một, Hai, Ba, Tư, Năm, Sáu, Bảy, Tám, Chín, Mười, Mười một, Mười hai';
+ $names = explode(', ', $names);
+ return $names[$key-1];
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsVi;
+ return $wgDateFormatsVi;
+ }
+
+ function &getMagicWords() {
+ global $wgMagicWordsVi;
+ return $wgMagicWordsVi;
+ }
+
+ function separatorTransformTable() {
+ return array(',' => '.', '.' => ',' );
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesVi;
+ if( isset( $wgAllMessagesVi[$key] ) ) {
+ return $wgAllMessagesVi[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+}
+
+?>
diff --git a/languages/LanguageWa.php b/languages/LanguageWa.php
new file mode 100644
index 00000000..55c2e45f
--- /dev/null
+++ b/languages/LanguageWa.php
@@ -0,0 +1,165 @@
+<?php
+/**
+ * Walloon (Walon)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once( "LanguageUtf8.php" );
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesWa.php');
+}
+
+# NOTE: cweri après "NOTE:" po des racsegnes so des ratournaedjes
+# k' i gn a.
+
+define( 'MW_DATE_WLN_LONG', MW_DATE_DMY );
+define( 'MW_DATE_WLN_SHORT', '4' );
+
+class LanguageWa extends LanguageUtf8 {
+ private $mMessagesWa, $mNamespaceNamesWa = null;
+
+ private $mQuickbarSettingsWa = array(
+ "Nole bår", "Aclawêye a hintche", "Aclawêye a droete", "Flotante a hintche", "Flotante a droete"
+ );
+
+ # lists "no preferences", normall (long) walloon date,
+ # short walloon date, and ISO format
+ # MW_DATE_DMY is alias for long format, as it is dd mmmmm yyyy.
+ # "4" is chosen as value for short format, as it is used in LanguageVi.php
+ private $mDateFormatsWa = array(
+ MW_DATE_DEFAULT => 'Nole preferince',
+ #MW_DATE_DMY => '16:12, 15 January 2001',
+ #MW_DATE_MDY => '16:12, January 15, 2001',
+ #MW_DATE_YMD => '16:12, 2001 January 15',
+ MW_DATE_WLN_LONG => '15 di djanvî 2001 a 16:12',
+ MW_DATE_WLN_SHORT => '15/01/2001 a 16:12',
+ MW_DATE_ISO => '2001-01-15 16:12:34',
+ );
+
+
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesWa;
+ $this->mMessagesWa =& $wgAllMessagesWa;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesWa = array(
+ NS_MEDIA => "Media", /* Media */
+ NS_SPECIAL => "Sipeciås", /* Special */
+ NS_MAIN => "",
+ NS_TALK => "Copene", /* Talk */
+ NS_USER => "Uzeu", /* User */
+ NS_USER_TALK => "Uzeu_copene", /* User_talk */
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . "_copene",
+ NS_IMAGE => "Imådje", /* Image */
+ NS_IMAGE_TALK => "Imådje_copene", /* Image_talk */
+ NS_MEDIAWIKI => "MediaWiki", /* MediaWiki */
+ NS_MEDIAWIKI_TALK => "MediaWiki_copene", /* MediaWiki_talk */
+ NS_TEMPLATE => "Modele",
+ NS_TEMPLATE_TALK => "Modele_copene",
+ NS_HELP => "Aidance",
+ NS_HELP_TALK => "Aidance_copene",
+ NS_CATEGORY => "Categoreye",
+ NS_CATEGORY_TALK => "Categoreye_copene",
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesWa + parent::getNamespaces();
+ }
+
+ function getQuickbarSettings() {
+ return $this->mQuickbarSettingsWa;
+ }
+
+ function getDateFormats() {
+ return $this->mDateFormatsWa;
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesWa[$key] ) ) {
+ return $this->mMessagesWa[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesWa;
+ }
+
+ ###
+ ### Dates in Walloon are "1î d' <monthname>" for 1st of the month,
+ ### "<day> di <monthname>" for months starting by a consoun, and
+ ### "<day> d' <monthname>" for months starting with a vowel
+ ###
+ function date( $ts, $adj = false, $format = true, $tc = false ) {
+ global $wgUser;
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); }
+ $datePreference = $this->dateFormat( $format );
+
+ # ISO (YYYY-mm-dd) format
+ #
+ # we also output this format for YMD (eg: 2001 January 15)
+ if ( $datePreference == MW_DATE_ISO ||
+ $datePreference == MW_DATE_YMD ) {
+ $d = substr($ts, 0, 4). '-' . substr($ts, 4, 2). '-' .substr($ts, 6, 2);
+ return $d;
+ }
+
+ # dd/mm/YYYY format
+ if ( $datePreference == MW_DATE_WLN_SHORT ) {
+ $d = substr($ts, 6, 2). '/' . substr($ts, 4, 2). '/' .substr($ts, 0, 4);
+ return $d;
+ }
+
+ # Walloon format
+ #
+ # we output this in all other cases
+ $m = substr( $ts, 4, 2 );
+ $n = substr( $ts, 6, 2 );
+ if ($n == 1) {
+ $d = "1î d' " . $this->getMonthName( $m ) .
+ " " . substr( $ts, 0, 4 );
+ } else if ($n == 2 || $n == 3 || $n == 20 || $n == 22 || $n == 23) {
+ $d = (0 + $n) . " d' " . $this->getMonthName( $m ) .
+ " " . substr( $ts, 0, 4 );
+ } else if ($m == 4 || $m == 8 || $m == 10) {
+ $d = (0 + $n) . " d' " . $this->getMonthName( $m ) .
+ " " . substr( $ts, 0, 4 );
+ } else {
+ $d = (0 + $n) . " di " . $this->getMonthName( $m ) .
+ " " . substr( $ts, 0, 4 );
+ }
+ return $d;
+ }
+
+ function timeBeforeDate( ) {
+ return false;
+ }
+
+ function timeDateSeparator( $format ) {
+ return " a ";
+ }
+
+ # definixha del cogne po les limeros
+ # (number format definition)
+ # en: 12,345.67 -> wa: 12 345,67
+ function separatorTransformTable() {
+ return array(',' => "\xc2\xa0", '.' => ',' );
+ }
+
+ function linkTrail() {
+ return '/^([a-zåâêîôûçéè]+)(.*)$/sDu';
+ }
+
+}
+
+?>
diff --git a/languages/LanguageXal.php b/languages/LanguageXal.php
new file mode 100644
index 00000000..1a321069
--- /dev/null
+++ b/languages/LanguageXal.php
@@ -0,0 +1,51 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+# Kalmyk stub localization;
+
+require_once( 'LanguageUtf8.php' );
+
+/* private */ $wgNamespaceNamesXal = array(
+ NS_MEDIA => 'Аһар',
+ NS_SPECIAL => 'Көдлхнə',
+ NS_MAIN => '',
+ NS_TALK => 'Ухалвр',
+ NS_USER => 'Орлцач',
+ NS_USER_TALK => 'Орлцачна_тускар_ухалвр',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_тускар_ухалвр',
+ NS_IMAGE => 'Зург',
+ NS_IMAGE_TALK => 'Зургин_тускар_ухалвр',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_тускар_ухалвр',
+ NS_TEMPLATE => 'Зура',
+ NS_TEMPLATE_TALK => 'Зуран_тускар_ухалвр',
+ NS_HELP => 'Цəəлһлһн',
+ NS_HELP_TALK => 'Цəəлһлһин_тускар_ухалвр',
+ NS_CATEGORY => 'Янз',
+ NS_CATEGORY_TALK => 'Янзин_тускар_ухалвр',
+) + $wgNamespaceNamesEn;
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesXal.php');
+}
+
+class LanguageXal extends LanguageUtf8 {
+ function getNamespaces() {
+ global $wgNamespaceNamesXal;
+ return $wgNamespaceNamesXal;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesXal;
+ return isset($wgAllMessagesXal[$key]) ? $wgAllMessagesXal[$key] : parent::getMessage($key);
+ }
+
+ function fallback8bitEncoding() {
+ return "windows-1251";
+ }
+
+}
+?>
diff --git a/languages/LanguageYi.php b/languages/LanguageYi.php
new file mode 100644
index 00000000..ab84a050
--- /dev/null
+++ b/languages/LanguageYi.php
@@ -0,0 +1,106 @@
+<?php
+/** Yiddish (ייִדיש)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ */
+
+require_once("LanguageHe.php");
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesYi.php');
+}
+
+class LanguageYi extends LanguageHe {
+ private $mMessagesYi, $mNamespaceNamesYi = null;
+
+ function __construct() {
+ parent::__construct();
+
+ global $wgAllMessagesYi;
+ $this->mMessagesYi =& $wgAllMessagesYi;
+
+ global $wgMetaNamespace;
+ $this->mNamespaceNamesYi = array(
+ NS_MEDIA => 'מעדיע',
+ NS_SPECIAL => 'באַזונדער',
+ NS_MAIN => '',
+ NS_TALK => 'רעדן',
+ NS_USER => 'באַניצער',
+ NS_USER_TALK => 'באַניצער_רעדן',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_רעדן',
+ NS_IMAGE => 'בילד',
+ NS_IMAGE_TALK => 'בילד_רעדן',
+ NS_MEDIAWIKI => 'מעדיעװיקי',
+ NS_MEDIAWIKI_TALK => 'מעדיעװיקי_רעדן',
+ NS_TEMPLATE => 'מוסטער',
+ NS_TEMPLATE_TALK => 'מוסטער_רעדן',
+ NS_HELP => 'הילף',
+ NS_HELP_TALK => 'הילף_רעדן',
+ NS_CATEGORY => 'קאַטעגאָריע',
+ NS_CATEGORY_TALK => 'קאַטעגאָריע_רעדן'
+ );
+ }
+
+ function getNamespaces() {
+ return $this->mNamespaceNamesYi + parent::getNamespaces();
+ }
+
+ function getMessage( $key ) {
+ if( isset( $this->mMessagesYi[$key] ) ) {
+ return $this->mMessagesYi[$key];
+ } else {
+ return parent::getMessage( $key );
+ }
+ }
+
+ function getAllMessages() {
+ return $this->mMessagesYi;
+ }
+
+ function getDefaultUserOptions() {
+ $opt = parent::getDefaultUserOptions();
+ $opt['quickbar'] = 2; # Right-to-left
+ return $opt;
+ }
+
+ # For right-to-left language support
+ function isRTL() {
+ return true;
+ }
+
+ function getNsIndex( $text ) {
+ global $wgSitename;
+
+ foreach ( $this->mNamespaceNamesYi as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ if( $wgSitename == 'װיקיפּעדיע' ) {
+ if( 0 == strcasecmp( 'וויקיפעדיע', $text ) ) return NS_PROJECT;
+ if( 0 == strcasecmp( 'וויקיפעדיע_רעדן', $text ) ) return NS_PROJECT_TALK;
+ }
+ if( $wgSitename == 'װיקיביבליאָטעק' ) {
+ if( 0 == strcasecmp( 'וויקיביבליאטעק', $text ) ) return NS_PROJECT;
+ if( 0 == strcasecmp( 'וויקיביבליאטעק_רעדן', $text ) ) return NS_PROJECT_TALK;
+ }
+ if( $wgSitename == 'װיקיװערטערבוך' ) {
+ if( 0 == strcasecmp( 'וויקיווערטערבוך', $text ) ) return NS_PROJECT;
+ if( 0 == strcasecmp( 'וויקיווערטערבוך_רעדן', $text ) ) return NS_PROJECT_TALK;
+ }
+ if( $wgSitename == 'װיקינײַעס' ) {
+ if( 0 == strcasecmp( 'וויקינייעס', $text ) ) return NS_PROJECT;
+ if( 0 == strcasecmp( 'וויקינייעס_רעדן', $text ) ) return NS_PROJECT_TALK;
+ }
+ if( 0 == strcasecmp( 'באזונדער', $text ) ) return NS_SPECIAL;
+ if( 0 == strcasecmp( 'באנוצער', $text ) ) return NS_USER;
+ if( 0 == strcasecmp( 'באנוצער_רעדן', $text ) ) return NS_USER_TALK;
+ if( 0 == strcasecmp( 'מעדיעוויקי', $text ) ) return NS_MEDIAWIKI;
+ if( 0 == strcasecmp( 'מעדיעוויקי_רעדן', $text ) ) return NS_MEDIAWIKI_TALK;
+ if( 0 == strcasecmp( 'קאטעגאריע', $text ) ) return NS_CATEGORY;
+ if( 0 == strcasecmp( 'קאטעגאריע_רעדן', $text ) ) return NS_CATEGORY_TALK;
+ return false;
+ }
+}
+
+?>
diff --git a/languages/LanguageZa.deps.php b/languages/LanguageZa.deps.php
new file mode 100644
index 00000000..83b68393
--- /dev/null
+++ b/languages/LanguageZa.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageZa.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageZh_cn.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageZa.php b/languages/LanguageZa.php
new file mode 100644
index 00000000..99e60e1e
--- /dev/null
+++ b/languages/LanguageZa.php
@@ -0,0 +1,28 @@
+<?php
+/** Zhuang (壮语)
+ *
+ * @package MediaWiki
+ * @subpackage Language
+ *
+ * @bug 3844
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+require_once 'LanguageZh_cn.php';
+
+class LanguageZa extends LanguageZh_cn {
+
+ function getFallbackLanguage() {
+ return 'zh-cn';
+ }
+
+ function getAllMessages() {
+ return null;
+ }
+
+}
+
+?>
diff --git a/languages/LanguageZh.deps.php b/languages/LanguageZh.deps.php
new file mode 100644
index 00000000..b63ad7a7
--- /dev/null
+++ b/languages/LanguageZh.deps.php
@@ -0,0 +1,10 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageZh.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageZh_cn.php" );
+require_once( "LanguageConverter.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageZh.php b/languages/LanguageZh.php
new file mode 100644
index 00000000..b24c08e6
--- /dev/null
+++ b/languages/LanguageZh.php
@@ -0,0 +1,103 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+require_once( "LanguageConverter.php" );
+require_once( "LanguageZh_cn.php");
+require_once( "LanguageZh_tw.php");
+require_once( "LanguageZh_sg.php");
+require_once( "LanguageZh_hk.php");
+
+class ZhConverter extends LanguageConverter {
+ function loadDefaultTables() {
+ require( "includes/ZhConversion.php" );
+ $this->mTables = array();
+ $this->mTables['zh-cn'] = $zh2CN;
+ $this->mTables['zh-tw'] = $zh2TW;
+ $this->mTables['zh-sg'] = array_merge($zh2CN, $zh2SG);
+ $this->mTables['zh-hk'] = array_merge($zh2TW, $zh2HK);
+ $this->mTables['zh'] = array();
+ }
+
+ function postLoadTables() {
+ $this->mTables['zh-sg'] = array_merge($this->mTables['zh-cn'], $this->mTables['zh-sg']);
+ $this->mTables['zh-hk'] = array_merge($this->mTables['zh-tw'], $this->mTables['zh-hk']);
+ }
+
+ /* there shouldn't be any latin text in Chinese conversion, so no need
+ to mark anything
+ */
+ function markNoConversion($text) {
+ return $text;
+ }
+
+ function convertCategoryKey( $key ) {
+ return $this->autoConvert( $key, 'zh-cn' );
+ }
+}
+
+
+/* class that handles both Traditional and Simplified Chinese
+ right now it only distinguish zh_cn, zh_tw, zh_sg and zh_hk.
+*/
+class LanguageZh extends LanguageZh_cn {
+
+ function __construct() {
+ global $wgHooks;
+ $this->mConverter = new ZhConverter($this, 'zh',
+ array('zh', 'zh-cn', 'zh-tw', 'zh-sg', 'zh-hk'),
+ array('zh'=>'zh-cn',
+ 'zh-cn'=>'zh-sg',
+ 'zh-sg'=>'zh-cn',
+ 'zh-tw'=>'zh-hk',
+ 'zh-hk'=>'zh-tw'));
+ $wgHooks['ArticleSaveComplete'][] = $this->mConverter;
+ }
+
+
+ # this should give much better diff info
+ function segmentForDiff( $text ) {
+ return preg_replace(
+ "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "' ' .\"$1\"", $text);
+ }
+
+ function unsegmentForDiff( $text ) {
+ return preg_replace(
+ "/ ([\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "\"$1\"", $text);
+ }
+
+ // word segmentation
+ function stripForSearch( $string ) {
+ $fname="LanguageZh::stripForSearch";
+ wfProfileIn( $fname );
+
+ // eventually this should be a word segmentation
+ // for now just treat each character as a word
+ $t = preg_replace(
+ "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "' ' .\"$1\"", $string);
+
+ //always convert to zh-cn before indexing. it should be
+ //better to use zh-cn for search, since conversion from
+ //Traditional to Simplified is less ambiguous than the
+ //other way around
+
+ $t = $this->mConverter->autoConvert($t, 'zh-cn');
+ $t = LanguageUtf8::stripForSearch( $t );
+ wfProfileOut( $fname );
+ return $t;
+
+ }
+
+ function convertForSearchResult( $termsArray ) {
+ $terms = implode( '|', $termsArray );
+ $terms = implode( '|', $this->mConverter->autoConvertToAllVariants( $terms ) );
+ $ret = array_unique( explode('|', $terms) );
+ return $ret;
+ }
+
+}
+?>
diff --git a/languages/LanguageZh_cn.php b/languages/LanguageZh_cn.php
new file mode 100644
index 00000000..df008d7b
--- /dev/null
+++ b/languages/LanguageZh_cn.php
@@ -0,0 +1,141 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+require_once( 'LanguageUtf8.php' );
+
+/* private */ $wgNamespaceNamesZh_cn = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_MAIN => '',
+ NS_TALK => 'Talk',
+ NS_USER => 'User',
+ NS_USER_TALK => 'User_talk',
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . '_talk',
+ NS_IMAGE => 'Image',
+ NS_IMAGE_TALK => 'Image_talk',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Template_talk',
+ NS_HELP => 'Help',
+ NS_HELP_TALK => 'Help_talk',
+ NS_CATEGORY => 'Category',
+ NS_CATEGORY_TALK => 'Category_talk'
+
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsZh_cn = array(
+ "无", /* "None" */
+ "左侧固定", /* "Fixed left" */
+ "右侧固定", /* "Fixed right" */
+ "左侧漂移" /* "Floating left" */
+);
+
+/* private */ $wgSkinNamesZh_cn = array(
+ 'standard' => "标准",
+ 'nostalgia' => "怀旧",
+ 'cologneblue' => "科隆香水蓝"
+) + $wgSkinNamesEn;
+
+/* private */ $wgUserTogglesZh_cn = array(
+ 'nolangconversion',
+) + $wgUserTogglesEn;
+
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesZh_cn.php');
+}
+
+
+class LanguageZh_cn extends LanguageUtf8 {
+
+ function getUserToggles() {
+ global $wgUserTogglesZh_cn;
+ return $wgUserTogglesZh_cn;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesZh_cn;
+ return $wgNamespaceNamesZh_cn;
+ }
+
+
+ function getNsIndex( $text ) {
+ global $wgNamespaceNamesZh_cn;
+
+ foreach ( $wgNamespaceNamesZh_cn as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ # Aliases
+ if ( 0 == strcasecmp( "特殊", $text ) ) { return -1; }
+ if ( 0 == strcasecmp( "", $text ) ) { return ; }
+ if ( 0 == strcasecmp( "对话", $text ) ) { return 1; }
+ if ( 0 == strcasecmp( "用户", $text ) ) { return 2; }
+ if ( 0 == strcasecmp( "用户对话", $text ) ) { return 3; }
+ if ( 0 == strcasecmp( "{{SITENAME}}_对话", $text ) ) { return 5; }
+ if ( 0 == strcasecmp( "图像", $text ) ) { return 6; }
+ if ( 0 == strcasecmp( "图像对话", $text ) ) { return 7; }
+ return false;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsZh_cn;
+ return $wgQuickbarSettingsZh_cn;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesZh_cn;
+ return $wgSkinNamesZh_cn;
+ }
+
+ function getDateFormats() {
+ return false;
+ }
+
+ function date( $ts, $adj = false ) {
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+
+ $d = substr( $ts, 0, 4 ) . "年" .
+ $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) .
+ (0 + substr( $ts, 6, 2 )) . "日";
+ return $d;
+ }
+
+ function timeanddate( $ts, $adj = false ) {
+ return $this->time( $ts, $adj ) . " " . $this->date( $ts, $adj );
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesZh_cn;
+ if( isset( $wgAllMessagesZh_cn[$key] ) )
+ return $wgAllMessagesZh_cn[$key];
+ else
+ return parent::getMessage( $key );
+ }
+
+ # inherit default iconv(), ucfirst(), checkTitleEncoding()
+
+ function stripForSearch( $string ) {
+ # MySQL fulltext index doesn't grok utf-8, so we
+ # need to fold cases and convert to hex
+ # we also separate characters as "words"
+ if( function_exists( 'mb_strtolower' ) ) {
+ return preg_replace(
+ "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "' U8' . bin2hex( \"$1\" )",
+ mb_strtolower( $string ) );
+ } else {
+ global $wikiLowerChars;
+ return preg_replace(
+ "/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "' U8' . bin2hex( strtr( \"\$1\", \$wikiLowerChars ) )",
+ $string );
+ }
+ }
+}
+
+
+?>
diff --git a/languages/LanguageZh_hk.deps.php b/languages/LanguageZh_hk.deps.php
new file mode 100644
index 00000000..3f1cafd4
--- /dev/null
+++ b/languages/LanguageZh_hk.deps.php
@@ -0,0 +1,10 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageZh_hk.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageZh_cn.php" );
+require_once( "LanguageZh_tw.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageZh_hk.php b/languages/LanguageZh_hk.php
new file mode 100644
index 00000000..7e55a77b
--- /dev/null
+++ b/languages/LanguageZh_hk.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+require_once( "LanguageZh_tw.php");
+
+class LanguageZh_hk extends LanguageZh_tw {
+# Inherit everything for now
+}
+?>
diff --git a/languages/LanguageZh_sg.deps.php b/languages/LanguageZh_sg.deps.php
new file mode 100644
index 00000000..03738193
--- /dev/null
+++ b/languages/LanguageZh_sg.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageZh_sg.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageZh_cn.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageZh_sg.php b/languages/LanguageZh_sg.php
new file mode 100644
index 00000000..6e43c3c5
--- /dev/null
+++ b/languages/LanguageZh_sg.php
@@ -0,0 +1,11 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+require_once( "LanguageZh_cn.php");
+
+class LanguageZh_sg extends LanguageZh_cn {
+# Inherit everything for now
+}
+?>
diff --git a/languages/LanguageZh_tw.deps.php b/languages/LanguageZh_tw.deps.php
new file mode 100644
index 00000000..521b0e26
--- /dev/null
+++ b/languages/LanguageZh_tw.deps.php
@@ -0,0 +1,9 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageZh_tw.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( "LanguageZh_cn.php" );
+?> \ No newline at end of file
diff --git a/languages/LanguageZh_tw.php b/languages/LanguageZh_tw.php
new file mode 100644
index 00000000..a55f0446
--- /dev/null
+++ b/languages/LanguageZh_tw.php
@@ -0,0 +1,101 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage Language
+ */
+require_once( "LanguageUtf8.php" );
+require_once( "LanguageZh_cn.php" );
+
+/* private */ $wgNamespaceNamesZh_tw = array(
+ NS_MEDIA => "媒體",
+ NS_SPECIAL => "特殊",
+ NS_MAIN => "",
+ NS_TALK => "討論",
+ NS_USER => "用戶",
+ NS_USER_TALK => "用戶討論",
+ NS_PROJECT => $wgMetaNamespace,
+ NS_PROJECT_TALK => $wgMetaNamespace . "討論",
+ NS_IMAGE => "圖像",
+ NS_IMAGE_TALK => "圖像討論",
+ NS_MEDIAWIKI => "媒體維基",
+ NS_MEDIAWIKI_TALK => "媒體維基討論",
+ NS_TEMPLATE => "樣板",
+ NS_TEMPLATE_TALK => "樣板討論",
+ NS_HELP => "幫助",
+ NS_HELP_TALK => "幫助討論",
+ NS_CATEGORY => "分類",
+ NS_CATEGORY_TALK => "分類討論"
+);
+
+/* private */ $wgQuickbarSettingsZh_tw = array(
+ "無", /* "None" */
+ "左側固定", /* "Fixed left" */
+ "右側固定", /* "Fixed right" */
+ "左側漂移" /* "Floating left" */
+);
+
+/* private */ $wgSkinNamesZh_tw = array(
+ "標準",/* "Standard" */
+ "懷舊",/* "Nostalgia" */
+ "科隆香水藍" /* "Cologne Blue" */
+) + $wgSkinNamesEn;
+
+/* private */ $wgBookstoreListZh_tw = array(
+ "博客來書店" => "http://www.books.com.tw/exep/openfind_book_keyword.php?cat1=4&key1=$1",
+ "三民書店" => "http://www.sanmin.com.tw/page-qsearch.asp?ct=search_isbn&qu=$1",
+ "天下書店" => "http://www.cwbook.com.tw/cw/TS.jsp?schType=product.isbn&schStr=$1",
+ "新絲書店" => "http://www.silkbook.com/function/Search_List_Book.asp?item=5&text=$1"
+);
+
+if (!$wgCachedMessageArrays) {
+ require_once('MessagesZh_tw.php');
+}
+
+class LanguageZh_tw extends LanguageZh_cn {
+ function getBookstoreList () {
+ global $wgBookstoreListZh_tw ;
+ return $wgBookstoreListZh_tw ;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesZh_tw;
+ return $wgNamespaceNamesZh_tw;
+ }
+
+
+ function getNsIndex( $text ) {
+ global $wgNamespaceNamesZh_tw;
+
+ foreach ( $wgNamespaceNamesZh_tw as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ # Aliases
+ if ( 0 == strcasecmp( "對話", $text ) ) { return 1; }
+ if ( 0 == strcasecmp( "用戶對話", $text ) ) { return 3; }
+ if ( 0 == strcasecmp( "維基百科對話", $text ) ) { return 5; }
+ if ( 0 == strcasecmp( "圖像對話", $text ) ) { return 7; }
+ return false;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsZh_tw;
+ return $wgQuickbarSettingsZh_tw;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesZh_tw;
+ return $wgSkinNamesZh_tw;
+ }
+
+ function getMessage( $key ) {
+ global $wgAllMessagesZh_tw;
+ if(array_key_exists($key, $wgAllMessagesZh_tw))
+ return $wgAllMessagesZh_tw[$key];
+ else
+ return parent::getMessage( $key );
+ }
+
+}
+
+
+?>
diff --git a/languages/Messages.php b/languages/Messages.php
new file mode 100644
index 00000000..6cbfac99
--- /dev/null
+++ b/languages/Messages.php
@@ -0,0 +1,2060 @@
+<?php
+
+
+#-------------------------------------------------------------------
+# Default messages
+#-------------------------------------------------------------------
+# Allowed characters in keys are: A-Z, a-z, 0-9, underscore (_) and
+# hyphen (-). If you need more characters, you may be able to change
+# the regex in MagicWord::initRegex
+
+global $wgAllMessagesEn;
+$wgAllMessagesEn = array(
+/*
+The sidebar for MonoBook is generated from this message, lines that do not
+begin with * or ** are discarded, furthermore lines that do begin with ** and
+do not contain | are also discarded, but don't depend on this behaviour for
+future releases. Also note that since each list value is wrapped in a unique
+XHTML id it should only appear once and include characters that are legal
+XHTML id names.
+
+Note to translators: Do not include this message in the language files you
+submit for inclusion in MediaWiki, it should always be inherited from the
+parent class in order maintain consistency across languages.
+*/
+'sidebar' => '
+* navigation
+** mainpage|mainpage
+** portal-url|portal
+** currentevents-url|currentevents
+** recentchanges-url|recentchanges
+** randompage-url|randompage
+** helppage|help
+** sitesupport-url|sitesupport',
+
+# User preference toggles
+'tog-underline' => 'Underline links:',
+'tog-highlightbroken' => 'Format broken links <a href="" class="new">like this</a> (alternative: like this<a href="" class="internal">?</a>).',
+'tog-justify' => 'Justify paragraphs',
+'tog-hideminor' => 'Hide minor edits in recent changes',
+'tog-extendwatchlist' => 'Expand watchlist to show all applicable changes',
+'tog-usenewrc' => 'Enhanced recent changes (JavaScript)',
+'tog-numberheadings' => 'Auto-number headings',
+'tog-showtoolbar' => 'Show edit toolbar (JavaScript)',
+'tog-editondblclick' => 'Edit pages on double click (JavaScript)',
+'tog-editsection' => 'Enable section editing via [edit] links',
+'tog-editsectiononrightclick' => 'Enable section editing by right clicking<br /> on section titles (JavaScript)',
+'tog-showtoc' => 'Show table of contents (for pages with more than 3 headings)',
+'tog-rememberpassword' => 'Remember across sessions',
+'tog-editwidth' => 'Edit box has full width',
+'tog-watchcreations' => 'Add pages I create to my watchlist',
+'tog-watchdefault' => 'Add pages I edit to my watchlist',
+'tog-minordefault' => 'Mark all edits minor by default',
+'tog-previewontop' => 'Show preview before edit box',
+'tog-previewonfirst' => 'Show preview on first edit',
+'tog-nocache' => 'Disable page caching',
+'tog-enotifwatchlistpages' => 'E-mail me when a page I\'m watching is changed',
+'tog-enotifusertalkpages' => 'E-mail me when my user talk page is changed',
+'tog-enotifminoredits' => 'E-mail me also for minor edits of pages',
+'tog-enotifrevealaddr' => 'Reveal my e-mail address in notification mails',
+'tog-shownumberswatching' => 'Show the number of watching users',
+'tog-fancysig' => 'Raw signatures (without automatic link)',
+'tog-externaleditor' => 'Use external editor by default',
+'tog-externaldiff' => 'Use external diff by default',
+'tog-showjumplinks' => 'Enable "jump to" accessibility links',
+'tog-uselivepreview' => 'Use live preview (JavaScript) (Experimental)',
+'tog-autopatrol' => 'Mark edits I make as patrolled',
+'tog-forceeditsummary' => 'Prompt me when entering a blank edit summary',
+'tog-watchlisthideown' => 'Hide my edits from the watchlist',
+'tog-watchlisthidebots' => 'Hide bot edits from the watchlist',
+
+'underline-always' => 'Always',
+'underline-never' => 'Never',
+'underline-default' => 'Browser default',
+
+'skinpreview' => '(Preview)',
+
+# dates
+'sunday' => 'Sunday',
+'monday' => 'Monday',
+'tuesday' => 'Tuesday',
+'wednesday' => 'Wednesday',
+'thursday' => 'Thursday',
+'friday' => 'Friday',
+'saturday' => 'Saturday',
+'january' => 'January',
+'february' => 'February',
+'march' => 'March',
+'april' => 'April',
+'may_long' => 'May',
+'june' => 'June',
+'july' => 'July',
+'august' => 'August',
+'september' => 'September',
+'october' => 'October',
+'november' => 'November',
+'december' => 'December',
+'jan' => 'Jan',
+'feb' => 'Feb',
+'mar' => 'Mar',
+'apr' => 'Apr',
+'may' => 'May',
+'jun' => 'Jun',
+'jul' => 'Jul',
+'aug' => 'Aug',
+'sep' => 'Sep',
+'oct' => 'Oct',
+'nov' => 'Nov',
+'dec' => 'Dec',
+# Bits of text used by many pages:
+#
+'categories' => '{{PLURAL:$1|Category|Categories}}',
+'category' => 'category',
+'category_header' => 'Articles in category "$1"',
+'subcategories' => 'Subcategories',
+
+
+'linktrail' => '/^([a-z]+)(.*)$/sD',
+'linkprefix' => '/^(.*?)([a-zA-Z\x80-\xff]+)$/sD',
+'mainpage' => 'Main Page',
+'mainpagetext' => "<big>'''MediaWiki has been successfully installed.'''</big>",
+'mainpagedocfooter' => "Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
+
+== Getting started ==
+
+* [http://www.mediawiki.org/wiki/Help:Configuration_settings Configuration settings list]
+* [http://www.mediawiki.org/wiki/Help:FAQ MediaWiki FAQ]
+* [http://mail.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+
+'portal' => 'Community portal',
+'portal-url' => 'Project:Community Portal',
+'about' => 'About',
+'aboutsite' => 'About {{SITENAME}}',
+'aboutpage' => 'Project:About',
+'article' => 'Content page',
+'help' => 'Help',
+'helppage' => 'Help:Contents',
+'bugreports' => 'Bug reports',
+'bugreportspage' => 'Project:Bug_reports',
+'sitesupport' => 'Donations',
+'sitesupport-url' => 'Project:Site support',
+'faq' => 'FAQ',
+'faqpage' => 'Project:FAQ',
+'edithelp' => 'Editing help',
+'newwindow' => '(opens in new window)',
+'edithelppage' => 'Help:Editing',
+'cancel' => 'Cancel',
+'qbfind' => 'Find',
+'qbbrowse' => 'Browse',
+'qbedit' => 'Edit',
+'qbpageoptions' => 'This page',
+'qbpageinfo' => 'Context',
+'qbmyoptions' => 'My pages',
+'qbspecialpages' => 'Special pages',
+'moredotdotdot' => 'More...',
+'mypage' => 'My page',
+'mytalk' => 'My talk',
+'anontalk' => 'Talk for this IP',
+'navigation' => 'Navigation',
+
+# Metadata in edit box
+'metadata_help' => 'Metadata (see [[{{ns:project}}:Metadata]] for an explanation):',
+
+'currentevents' => 'Current events',
+'currentevents-url' => 'Current events',
+
+'disclaimers' => 'Disclaimers',
+'disclaimerpage' => 'Project:General_disclaimer',
+'privacy' => 'Privacy policy',
+'privacypage' => 'Project:Privacy_policy',
+'errorpagetitle' => 'Error',
+'returnto' => 'Return to $1.',
+'tagline' => 'From {{SITENAME}}',
+'help' => 'Help',
+'search' => 'Search',
+'go' => 'Go',
+'history' => 'Page history',
+'history_short' => 'History',
+'updatedmarker' => 'updated since my last visit',
+'info_short' => 'Information',
+'printableversion' => 'Printable version',
+'permalink' => 'Permanent link',
+'print' => 'Print',
+'edit' => 'Edit',
+'editthispage' => 'Edit this page',
+'delete' => 'Delete',
+'deletethispage' => 'Delete this page',
+'undelete_short' => 'Undelete {{PLURAL:$1|one edit|$1 edits}}',
+'protect' => 'Protect',
+'protectthispage' => 'Protect this page',
+'unprotect' => 'unprotect',
+'unprotectthispage' => 'Unprotect this page',
+'newpage' => 'New page',
+'talkpage' => 'Discuss this page',
+'specialpage' => 'Special Page',
+'personaltools' => 'Personal tools',
+'postcomment' => 'Post a comment',
+'addsection' => '+',
+'articlepage' => 'View content page',
+'subjectpage' => 'View subject', # For compatibility
+'talk' => 'Discussion',
+'views' => 'Views',
+'toolbox' => 'Toolbox',
+'userpage' => 'View user page',
+'projectpage' => 'View project page',
+'imagepage' => 'View image page',
+'viewtalkpage' => 'View discussion',
+'otherlanguages' => 'In other languages',
+'redirectedfrom' => '(Redirected from $1)',
+'autoredircomment' => 'Redirecting to [[$1]]',
+'redirectpagesub' => 'Redirect page',
+'lastmodified' => 'This page was last modified $1.',
+'viewcount' => 'This page has been accessed {{plural:$1|one time|$1 times}}.',
+'copyright' => 'Content is available under $1.',
+'protectedpage' => 'Protected page',
+'administrators' => '{{ns:project}}:Administrators',
+'jumpto' => 'Jump to:',
+'jumptonavigation' => 'navigation',
+'jumptosearch' => 'search',
+
+'sysoptitle' => 'Sysop access required',
+'sysoptext' => 'The action you have requested can only be
+performed by users with "sysop" capability.
+See $1.',
+'developertitle' => 'Developer access required',
+'developertext' => 'The action you have requested can only be
+performed by users with "developer" capability.
+See $1.',
+
+'badaccess' => 'Permission error',
+'badaccesstext' => 'The action you have requested is limited
+to users with the "$2" permission assigned.
+See $1.',
+
+'versionrequired' => 'Version $1 of MediaWiki required',
+'versionrequiredtext' => 'Version $1 of MediaWiki is required to use this page. See [[Special:Version]]',
+
+'widthheight' => '$1×$2',
+'ok' => 'OK',
+'sitetitle' => '{{SITENAME}}',
+'pagetitle' => '$1 - {{SITENAME}}',
+'sitesubtitle' => '',
+'retrievedfrom' => 'Retrieved from "$1"',
+'youhavenewmessages' => 'You have $1 ($2).',
+'newmessageslink' => 'new messages',
+'newmessagesdifflink' => 'diff to penultimate revision',
+'editsection'=>'edit',
+'editold'=>'edit',
+'editsectionhint' => 'Edit section: $1',
+'toc' => 'Contents',
+'showtoc' => 'show',
+'hidetoc' => 'hide',
+'thisisdeleted' => 'View or restore $1?',
+'viewdeleted' => 'View $1?',
+'restorelink' => '{{PLURAL:$1|one deleted edit|$1 deleted edits}}',
+'feedlinks' => 'Feed:',
+'feed-invalid' => 'Invalid subscription feed type.',
+'sitenotice' => '-', # the equivalent to wgSiteNotice
+'anonnotice' => '-',
+
+# Short words for each namespace, by default used in the 'article' tab in monobook
+'nstab-main' => 'Article',
+'nstab-user' => 'User page',
+'nstab-media' => 'Media page',
+'nstab-special' => 'Special',
+'nstab-project' => 'Project page',
+'nstab-image' => 'File',
+'nstab-mediawiki' => 'Message',
+'nstab-template' => 'Template',
+'nstab-help' => 'Help',
+'nstab-category' => 'Category',
+
+# Main script and global functions
+#
+'nosuchaction' => 'No such action',
+'nosuchactiontext' => 'The action specified by the URL is not
+recognized by the wiki',
+'nosuchspecialpage' => 'No such special page',
+'nospecialpagetext' => 'You have requested an invalid special page, a list of valid special pages may be found at [[{{ns:special}}:Specialpages]].',
+
+# General errors
+#
+'error' => 'Error',
+'databaseerror' => 'Database error',
+'dberrortext' => 'A database query syntax error has occurred.
+This may indicate a bug in the software.
+The last attempted database query was:
+<blockquote><tt>$1</tt></blockquote>
+from within function "<tt>$2</tt>".
+MySQL returned error "<tt>$3: $4</tt>".',
+'dberrortextcl' => 'A database query syntax error has occurred.
+The last attempted database query was:
+"$1"
+from within function "$2".
+MySQL returned error "$3: $4"',
+'noconnect' => 'Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server. <br />
+$1',
+'nodb' => 'Could not select database $1',
+'cachederror' => 'The following is a cached copy of the requested page, and may not be up to date.',
+'laggedslavemode' => 'Warning: Page may not contain recent updates.',
+'readonly' => 'Database locked',
+'enterlockreason' => 'Enter a reason for the lock, including an estimate
+of when the lock will be released',
+'readonlytext' => 'The database is currently locked to new entries and other modifications, probably for routine database maintenance, after which it will be back to normal.
+
+The administrator who locked it offered this explanation: $1',
+'missingarticle' => 'The database did not find the text of a page that it should have found, named "$1".
+
+This is usually caused by following an outdated diff or history link to a
+page that has been deleted.
+
+If this is not the case, you may have found a bug in the software.
+Please report this to an administrator, making note of the URL.',
+'readonly_lag' => 'The database has been automatically locked while the slave database servers catch up to the master',
+'internalerror' => 'Internal error',
+'filecopyerror' => 'Could not copy file "$1" to "$2".',
+'filerenameerror' => 'Could not rename file "$1" to "$2".',
+'filedeleteerror' => 'Could not delete file "$1".',
+'filenotfound' => 'Could not find file "$1".',
+'unexpected' => 'Unexpected value: "$1"="$2".',
+'formerror' => 'Error: could not submit form',
+'badarticleerror' => 'This action cannot be performed on this page.',
+'cannotdelete' => 'Could not delete the page or file specified. (It may have already been deleted by someone else.)',
+'badtitle' => 'Bad title',
+'badtitletext' => 'The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. It may contain one more characters which cannot be used in titles.',
+'perfdisabled' => 'Sorry! This feature has been temporarily disabled because it slows the database down to the point that no one can use the wiki.',
+'perfdisabledsub' => 'Here is a saved copy from $1:', # obsolete?
+'perfcached' => 'The following data is cached and may not be up to date.',
+'perfcachedts' => 'The following data is cached, and was last updated $1.',
+'wrong_wfQuery_params' => 'Incorrect parameters to wfQuery()<br />
+Function: $1<br />
+Query: $2',
+'viewsource' => 'View source',
+'viewsourcefor' => 'for $1',
+'protectedtext' => 'This page has been locked to prevent editing.
+
+You can view and copy the source of this page:',
+'protectedinterface' => 'This page provides interface text for the software, and is locked to prevent abuse.',
+'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software. Changes to this page will affect the appearance of the user interface for other users.",
+'sqlhidden' => '(SQL query hidden)',
+
+# Login and logout pages
+#
+'logouttitle' => 'User logout',
+'logouttext' => '<strong>You are now logged out.</strong><br />
+You can continue to use {{SITENAME}} anonymously, or you can log in
+again as the same or as a different user. Note that some pages may
+continue to be displayed as if you were still logged in, until you clear
+your browser cache.',
+
+'welcomecreation' => "== Welcome, $1! ==
+
+Your account has been created. Don't forget to change your {{SITENAME}} preferences.",
+
+'loginpagetitle' => 'User login',
+'yourname' => 'Username',
+'yourpassword' => 'Password',
+'yourpasswordagain' => 'Retype password',
+'remembermypassword' => 'Remember me',
+'yourdomainname' => 'Your domain',
+'externaldberror' => 'There was either an external authentication database error or you are not allowed to update your external account.',
+'loginproblem' => '<b>There has been a problem with your login.</b><br />Try again!',
+'alreadyloggedin' => "<strong>User $1, you are already logged in!</strong><br />",
+
+'login' => 'Log in',
+'loginprompt' => 'You must have cookies enabled to log in to {{SITENAME}}.',
+'userlogin' => 'Log in / create account',
+'logout' => 'Log out',
+'userlogout' => 'Log out',
+'notloggedin' => 'Not logged in',
+'nologin' => 'Don\'t have a login? $1.',
+'nologinlink' => 'Create an account',
+'createaccount' => 'Create account',
+'gotaccount' => 'Already have an account? $1.',
+'gotaccountlink' => 'Log in',
+'createaccountmail' => 'by e-mail',
+'badretype' => 'The passwords you entered do not match.',
+'userexists' => 'Username entered already in use. Please choose a different name.',
+'youremail' => 'E-mail *',
+'username' => 'Username:',
+'uid' => 'User ID:',
+'yourrealname' => 'Real name *',
+'yourlanguage' => 'Language:',
+'yourvariant' => 'Variant',
+'yournick' => 'Nickname:',
+'badsig' => 'Invalid raw signature; check HTML tags.',
+'email' => 'E-mail',
+'prefs-help-email-enotif' => 'This address is also used to send you e-mail notifications if you enabled the options.',
+'prefs-help-realname' => '* Real name (optional): if you choose to provide it this will be used for giving you attribution for your work.',
+'loginerror' => 'Login error',
+'prefs-help-email' => '* E-mail (optional): Enables others to contact you through your user or user_talk page without needing to reveal your identity.',
+'nocookiesnew' => 'The user account was created, but you are not logged in. {{SITENAME}} uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.',
+'nocookieslogin' => '{{SITENAME}} uses cookies to log in users. You have cookies disabled. Please enable them and try again.',
+'noname' => 'You have not specified a valid user name.',
+'loginsuccesstitle' => 'Login successful',
+'loginsuccess' => "'''You are now logged in to {{SITENAME}} as \"$1\".'''",
+'nosuchuser' => 'There is no user by the name "$1". Check your spelling, or create a new account.',
+'nosuchusershort' => 'There is no user by the name "$1". Check your spelling.',
+'nouserspecified' => 'You have to specify a username.',
+'wrongpassword' => 'Incorrect password entered. Please try again.',
+'wrongpasswordempty' => 'Password entered was blank. Please try again.',
+'mailmypassword' => 'E-mail password',
+'passwordremindertitle' => 'Password reminder from {{SITENAME}}',
+'passwordremindertext' => 'Someone (probably you, from IP address $1)
+requested that we send you a new password for {{SITENAME}} ($4).
+The password for user "$2" is now "$3".
+You should log in and change your password now.
+
+If someone else made this request or if you have remembered your password and
+you no longer wish to change it, you may ignore this message and continue using
+your old password.',
+'noemail' => 'There is no e-mail address recorded for user "$1".',
+'passwordsent' => 'A new password has been sent to the e-mail address
+registered for "$1".
+Please log in again after you receive it.',
+'eauthentsent' => 'A confirmation e-mail has been sent to the nominated e-mail address.
+Before any other mail is sent to the account, you will have to follow the instructions in the e-mail,
+to confirm that the account is actually yours.',
+'loginend' => '',
+'signupend' => '{{int:loginend}}',
+'mailerror' => 'Error sending mail: $1',
+'acct_creation_throttle_hit' => 'Sorry, you have already created $1 accounts. You can\'t make any more.',
+'emailauthenticated' => 'Your e-mail address was authenticated on $1.',
+'emailnotauthenticated' => 'Your e-mail address is <strong>not yet authenticated</strong>. No e-mail
+will be sent for any of the following features.',
+'noemailprefs' => 'Specify an e-mail address for these features to work.',
+'emailconfirmlink' => 'Confirm your e-mail address',
+'invalidemailaddress' => 'The e-mail address cannot be accepted as it appears to have an invalid
+format. Please enter a well-formatted address or empty that field.',
+'accountcreated' => 'Account created',
+'accountcreatedtext' => 'The user account for $1 has been created.',
+
+# Edit page toolbar
+'bold_sample'=>'Bold text',
+'bold_tip'=>'Bold text',
+'italic_sample'=>'Italic text',
+'italic_tip'=>'Italic text',
+'link_sample'=>'Link title',
+'link_tip'=>'Internal link',
+'extlink_sample'=>'http://www.example.com link title',
+'extlink_tip'=>'External link (remember http:// prefix)',
+'headline_sample'=>'Headline text',
+'headline_tip'=>'Level 2 headline',
+'math_sample'=>'Insert formula here',
+'math_tip'=>'Mathematical formula (LaTeX)',
+'nowiki_sample'=>'Insert non-formatted text here',
+'nowiki_tip'=>'Ignore wiki formatting',
+'image_sample'=>'Example.jpg',
+'image_tip'=>'Embedded image',
+'media_sample'=>'Example.ogg',
+'media_tip'=>'Media file link',
+'sig_tip'=>'Your signature with timestamp',
+'hr_tip'=>'Horizontal line (use sparingly)',
+
+# Edit pages
+#
+'summary' => 'Summary',
+'subject' => 'Subject/headline',
+'minoredit' => 'This is a minor edit',
+'watchthis' => 'Watch this page',
+'savearticle' => 'Save page',
+'preview' => 'Preview',
+'showpreview' => 'Show preview',
+'showlivepreview' => 'Live preview',
+'showdiff' => 'Show changes',
+'anoneditwarning' => "'''Warning:''' You are not logged in. Your IP address will be recorded in this page's edit history.",
+'missingsummary' => "'''Reminder:''' You have not provided an edit summary. If you click Save again, your edit will be saved without one.",
+'missingcommenttext' => 'Please enter a comment below.',
+'blockedtitle' => 'User is blocked',
+'blockedtext' => 'Your user name or IP address has been blocked by $1.
+The reason given is this:<br />\'\'$2\'\'<br />You may contact $1 or one of the other
+[[{{ns:project}}:Administrators|administrators]] to discuss the block.
+
+Note that you may not use the "e-mail this user" feature unless you have a valid e-mail address registered in your [[Special:Preferences|user preferences]].
+
+Your IP address is $3. Please include this address in any queries you make.',
+'blockedoriginalsource' => "The source of '''$1''' is shown below:",
+'blockededitsource' => "The text of '''your edits''' to '''$1''' is shown below:",
+'whitelistedittitle' => 'Login required to edit',
+'whitelistedittext' => 'You have to $1 to edit pages.',
+'whitelistreadtitle' => 'Login required to read',
+'whitelistreadtext' => 'You have to [[Special:Userlogin|login]] to read pages.',
+'whitelistacctitle' => 'You are not allowed to create an account',
+'whitelistacctext' => 'To be allowed to create accounts in this Wiki you have to [[Special:Userlogin|log]] in and have the appropriate permissions.',
+'confirmedittitle' => 'E-mail confirmation required to edit',
+'confirmedittext' => 'You must confirm your e-mail address before editing pages. Please set and validate your e-mail address through your [[Special:Preferences|user preferences]].',
+'loginreqtitle' => 'Login Required',
+'loginreqlink' => 'log in',
+'loginreqpagetext' => 'You must $1 to view other pages.',
+'accmailtitle' => 'Password sent.',
+'accmailtext' => 'The password for "$1" has been sent to $2.',
+'newarticle' => '(New)',
+'newarticletext' =>
+"You've followed a link to a page that doesn't exist yet.
+To create the page, start typing in the box below
+(see the [[{{ns:help}}:Contents|help page]] for more info).
+If you are here by mistake, just click your browser's '''back''' button.",
+'newarticletextanon' => '{{int:newarticletext}}',
+'talkpagetext' => '<!-- MediaWiki:talkpagetext -->',
+'anontalkpagetext' => "----''This is the discussion page for an anonymous user who has not created an account yet or who does not use it. We therefore have to use the numerical IP address to identify him/her. Such an IP address can be shared by several users. If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:Userlogin|create an account or log in]] to avoid future confusion with other anonymous users.''",
+'noarticletext' => 'There is currently no text in this page, you can [[{{ns:special}}:Search/{{PAGENAME}}|search for this page title]] in other pages or [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page].',
+'noarticletextanon' => '{{int:noarticletext}}',
+'clearyourcache' => "'''Note:''' After saving, you may have to bypass your browser's cache to s