Merge "list=allusers&aurights=[unusedright] returns all users of the wiki"
authorCatrope <roan.kattouw@gmail.com>
Mon, 29 Oct 2012 19:44:18 +0000 (19:44 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 29 Oct 2012 19:44:18 +0000 (19:44 +0000)
164 files changed:
CREDITS
README.mediawiki [new symlink]
RELEASE-NOTES-1.21
includes/AutoLoader.php
includes/EditPage.php
includes/Revision.php
includes/Sanitizer.php
includes/User.php
includes/WikiPage.php
includes/ZhConversion.php
includes/actions/InfoAction.php
includes/conf/Conf.php [deleted file]
includes/conf/DatabaseConf.php [deleted file]
includes/conf/DefaultSettings.php [deleted file]
includes/content/TextContent.php
includes/filerepo/file/LocalFile.php
includes/installer/Ibm_db2Updater.php
includes/installer/Installer.i18n.php
includes/installer/MysqlUpdater.php
includes/installer/OracleUpdater.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/specials/SpecialEmailuser.php
includes/specials/SpecialPasswordReset.php
includes/specials/SpecialUserrights.php
includes/specials/SpecialVersion.php
includes/zhtable/Makefile.py
languages/messages/MessagesAce.php
languages/messages/MessagesAln.php
languages/messages/MessagesAng.php
languages/messages/MessagesArn.php
languages/messages/MessagesAry.php
languages/messages/MessagesBar.php
languages/messages/MessagesBh.php
languages/messages/MessagesBho.php
languages/messages/MessagesBo.php
languages/messages/MessagesBpy.php
languages/messages/MessagesCe.php
languages/messages/MessagesCeb.php
languages/messages/MessagesCh.php
languages/messages/MessagesCps.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCsb.php
languages/messages/MessagesCv.php
languages/messages/MessagesDa.php
languages/messages/MessagesDiq.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesFi.php
languages/messages/MessagesFur.php
languages/messages/MessagesFy.php
languages/messages/MessagesGa.php
languages/messages/MessagesGag.php
languages/messages/MessagesGd.php
languages/messages/MessagesGv.php
languages/messages/MessagesHaw.php
languages/messages/MessagesHt.php
languages/messages/MessagesIe.php
languages/messages/MessagesIg.php
languages/messages/MessagesInh.php
languages/messages/MessagesIo.php
languages/messages/MessagesJam.php
languages/messages/MessagesJut.php
languages/messages/MessagesKaa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLez.php
languages/messages/MessagesLfn.php
languages/messages/MessagesLmo.php
languages/messages/MessagesLoz.php
languages/messages/MessagesMap_bms.php
languages/messages/MessagesMin.php
languages/messages/MessagesMwl.php
languages/messages/MessagesMy.php
languages/messages/MessagesMyv.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNan.php
languages/messages/MessagesNn.php
languages/messages/MessagesPdc.php
languages/messages/MessagesPfl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPnt.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQug.php
languages/messages/MessagesRgn.php
languages/messages/MessagesRm.php
languages/messages/MessagesSc.php
languages/messages/MessagesSei.php
languages/messages/MessagesShi.php
languages/messages/MessagesSrn.php
languages/messages/MessagesTcy.php
languages/messages/MessagesTly.php
languages/messages/MessagesTr.php
languages/messages/MessagesTs.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
languages/messages/MessagesUr.php
languages/messages/MessagesWuu.php
languages/messages/MessagesXal.php
languages/messages/MessagesXmf.php
languages/messages/MessagesYi.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/archives/patch-config.sql [deleted file]
maintenance/ibm_db2/tables.sql
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/oracle/archives/patch-config.sql [deleted file]
maintenance/oracle/tables.sql
maintenance/postgres/archives/patch-config.sql [deleted file]
maintenance/postgres/tables.sql
maintenance/tables.sql
tests/TestsAutoLoader.php
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/SanitizerTest.php
tests/phpunit/languages/LanguageAmTest.php
tests/phpunit/languages/LanguageArTest.php
tests/phpunit/languages/LanguageBeTest.php
tests/phpunit/languages/LanguageBe_taraskTest.php
tests/phpunit/languages/LanguageBhTest.php
tests/phpunit/languages/LanguageBsTest.php
tests/phpunit/languages/LanguageClassesTestCase.php [new file with mode: 0644]
tests/phpunit/languages/LanguageCsTest.php
tests/phpunit/languages/LanguageCuTest.php
tests/phpunit/languages/LanguageCyTest.php
tests/phpunit/languages/LanguageDsbTest.php
tests/phpunit/languages/LanguageFrTest.php
tests/phpunit/languages/LanguageGaTest.php
tests/phpunit/languages/LanguageGdTest.php
tests/phpunit/languages/LanguageGvTest.php
tests/phpunit/languages/LanguageHeTest.php
tests/phpunit/languages/LanguageHiTest.php
tests/phpunit/languages/LanguageHrTest.php
tests/phpunit/languages/LanguageHsbTest.php
tests/phpunit/languages/LanguageHuTest.php
tests/phpunit/languages/LanguageHyTest.php
tests/phpunit/languages/LanguageKshTest.php
tests/phpunit/languages/LanguageLnTest.php
tests/phpunit/languages/LanguageLtTest.php
tests/phpunit/languages/LanguageLvTest.php
tests/phpunit/languages/LanguageMgTest.php
tests/phpunit/languages/LanguageMkTest.php
tests/phpunit/languages/LanguageMlTest.php
tests/phpunit/languages/LanguageMoTest.php
tests/phpunit/languages/LanguageMtTest.php
tests/phpunit/languages/LanguageNlTest.php
tests/phpunit/languages/LanguageNsoTest.php
tests/phpunit/languages/LanguagePlTest.php
tests/phpunit/languages/LanguageRoTest.php
tests/phpunit/languages/LanguageRuTest.php
tests/phpunit/languages/LanguageSeTest.php
tests/phpunit/languages/LanguageSgsTest.php
tests/phpunit/languages/LanguageShTest.php
tests/phpunit/languages/LanguageSkTest.php
tests/phpunit/languages/LanguageSlTest.php
tests/phpunit/languages/LanguageSmaTest.php
tests/phpunit/languages/LanguageSrTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/languages/LanguageTiTest.php
tests/phpunit/languages/LanguageTlTest.php
tests/phpunit/languages/LanguageTrTest.php
tests/phpunit/languages/LanguageUkTest.php
tests/phpunit/languages/LanguageUzTest.php
tests/phpunit/languages/LanguageWaTest.php

diff --git a/CREDITS b/CREDITS
index 68c945c..6555b07 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -2,6 +2,7 @@ MediaWiki 1.21 is a collaborative project released under the
 GNU General Public License v2. We would like to recognize the
 following names for their contribution to the product.
 
+<!-- Please notice that the following can be found parsed under Special:Version/Credits -->
 == Developers ==
 * Aaron Schulz
 * Alex Z.
@@ -44,6 +45,7 @@ following names for their contribution to the product.
 * Leon Weber
 * Leslie Hoare
 * Marco Schuster
+* Marius Hoch
 * Matěj Grabovský
 * Matt Johnston
 * Max Semenik
@@ -206,4 +208,4 @@ following names for their contribution to the product.
 * Meno25
 * Rotem Liss
 * Shinjiman
-* Translatewiki.net Translators https://translatewiki.net/wiki/Special:ListUsers/translator
+* [https://translatewiki.net/wiki/Special:ListUsers/translator Translatewiki.net Translators]
diff --git a/README.mediawiki b/README.mediawiki
new file mode 120000 (symlink)
index 0000000..100b938
--- /dev/null
@@ -0,0 +1 @@
+README
\ No newline at end of file
index d8314a3..7b9e101 100644 (file)
@@ -34,6 +34,7 @@ production.
 * Added ApiQueryORM class to facilitate creation of query API modules based on
   tables that have a corresponding ORMTable class.
 * (bug 40876) Icon for PSD (Adobe Photoshop) file types.
+* (bug 40641) Implemented Special:Version/Credits with a list of contributors.
 
 === Bug fixes in 1.21 ===
 * (bug 40353) SpecialDoubleRedirect should support interwiki redirects.
index c97c95a..0cd81c3 100644 (file)
@@ -446,11 +446,6 @@ $wgAutoloadLocalClasses = array(
        'TitleDependency' => 'includes/cache/CacheDependency.php',
        'TitleListDependency' => 'includes/cache/CacheDependency.php',
 
-       # includes/conf
-       'Conf' => 'includes/conf/Conf.php',
-       'DatabaseConf' => 'includes/conf/DatabaseConf.php',
-       'DefaultSettings' => 'includes/conf/DefaultSettings.php',
-
        # includes/context
        'ContextSource' => 'includes/context/ContextSource.php',
        'DerivativeContext' => 'includes/context/DerivativeContext.php',
index 67f0b46..305cf4a 100644 (file)
  * $this->mContextTitle is the page that forms submit to, links point to,
  * redirects go to, etc. $this->mTitle (as well as $mArticle) is the
  * page in the database that is actually being edited. These are
- * usually the same, but they are now allowed to be different.
+ * usually the same, but they are allowed to be different.
  *
  * Surgeon General's Warning: prolonged exposure to this class is known to cause
  * headaches, which may be fatal.
  */
 class EditPage {
-
        /**
         * Status: Article successfully updated
         */
@@ -253,7 +252,7 @@ class EditPage {
                $this->mArticle = $article;
                $this->mTitle = $article->getTitle();
 
-               $this->contentModel = $this->mTitle->getContentModel();
+               $this->contentModel = $this->getTitle()->getContentModel();
 
                $handler = ContentHandler::getForModelID( $this->contentModel );
                $this->contentFormat = $handler->getDefaultFormat();
@@ -315,7 +314,6 @@ class EditPage {
         * the newly-edited page.
         */
        function edit() {
-               global $wgOut, $wgRequest, $wgUser;
                // Allow extensions to modify/prevent this form or submission
                if ( !wfRunHooks( 'AlternateEdit', array( $this ) ) ) {
                        return;
@@ -324,14 +322,18 @@ class EditPage {
                wfProfileIn( __METHOD__ );
                wfDebug( __METHOD__ . ": enter\n" );
 
+               $context = $this->getArticle()->getContext();
+               $title = $this->getTitle();
+
                // If they used redlink=1 and the page exists, redirect to the main article
-               if ( $wgRequest->getBool( 'redlink' ) && $this->mTitle->exists() ) {
-                       $wgOut->redirect( $this->mTitle->getFullURL() );
+               $request = $context->getRequest();
+               if ( $request->getBool( 'redlink' ) && $title->exists() ) {
+                       $context->getOutput()->redirect( $title->getFullURL() );
                        wfProfileOut( __METHOD__ );
                        return;
                }
 
-               $this->importFormData( $wgRequest );
+               $this->importFormData( $request );
                $this->firsttime = false;
 
                if ( $this->live ) {
@@ -365,7 +367,7 @@ class EditPage {
                if ( $permErrors ) {
                        wfDebug( __METHOD__ . ": User can't edit\n" );
                        // Auto-block user's IP if the account was "hard" blocked
-                       $wgUser->spreadAnyEditBlock();
+                       $context->getUser()->spreadAnyEditBlock();
 
                        $this->displayPermissionsError( $permErrors );
 
@@ -377,9 +379,9 @@ class EditPage {
 
                $this->isConflict = false;
                // css / js subpages of user pages get a special treatment
-               $this->isCssJsSubpage       = $this->mTitle->isCssJsSubpage();
-               $this->isCssSubpage         = $this->mTitle->isCssSubpage();
-               $this->isJsSubpage          = $this->mTitle->isJsSubpage();
+               $this->isCssJsSubpage       = $title->isCssJsSubpage();
+               $this->isCssSubpage         = $title->isCssSubpage();
+               $this->isJsSubpage          = $title->isJsSubpage();
                $this->isWrongCaseCssJsPage = $this->isWrongCaseCssJsPage();
 
                # Show applicable editing introductions
@@ -410,12 +412,11 @@ class EditPage {
                                return;
                        }
 
-                       if ( !$this->mTitle->getArticleID() ) {
+                       if ( !$title->getArticleID() ){
                                wfRunHooks( 'EditFormPreloadText', array( &$this->textbox1, &$this->mTitle ) );
                        } else {
                                wfRunHooks( 'EditFormInitialText', array( $this ) );
                        }
-
                }
 
                $this->showEditForm();
@@ -427,12 +428,13 @@ class EditPage {
         * @return array
         */
        protected function getEditPermissionErrors() {
-               global $wgUser;
-               $permErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $wgUser );
+               $user = $this->getArticle()->getContext()->getUser();
+
+               $permErrors = $this->getTitle()->getUserPermissionsErrors( 'edit', $user );
                # Can this title be created?
-               if ( !$this->mTitle->exists() ) {
+               if ( !$this->getTitle()->exists() ) {
                        $permErrors = array_merge( $permErrors,
-                               wfArrayDiff2( $this->mTitle->getUserPermissionsErrors( 'create', $wgUser ), $permErrors ) );
+                               wfArrayDiff2( $this->getTitle()->getUserPermissionsErrors( 'create', $user ), $permErrors ) );
                }
                # Ignore some permissions errors when a user is just previewing/viewing diffs
                $remove = array();
@@ -461,13 +463,14 @@ class EditPage {
         * @throws PermissionsError
         */
        protected function displayPermissionsError( array $permErrors ) {
-               global $wgRequest, $wgOut;
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
 
-               if ( $wgRequest->getBool( 'redlink' ) ) {
+               if ( $context->getRequest()->getBool( 'redlink' ) ) {
                        // The edit page was reached via a red link.
                        // Redirect to the article page and let them click the edit tab if
                        // they really want a permission error.
-                       $wgOut->redirect( $this->mTitle->getFullUrl() );
+                       $out->redirect( $this->getTitle()->getFullUrl() );
                        return;
                }
 
@@ -475,33 +478,33 @@ class EditPage {
 
                # Use the normal message if there's nothing to display
                if ( $this->firsttime && ( !$content || $content->isEmpty() ) ) {
-                       $action = $this->mTitle->exists() ? 'edit' :
-                               ( $this->mTitle->isTalkPage() ? 'createtalk' : 'createpage' );
+                       $action = $this->getTitle()->exists() ? 'edit' :
+                               ( $this->getTitle()->isTalkPage() ? 'createtalk' : 'createpage' );
                        throw new PermissionsError( $action, $permErrors );
                }
 
-               $wgOut->setPageTitle( wfMessage( 'viewsource-title', $this->getContextTitle()->getPrefixedText() ) );
-               $wgOut->addBacklinkSubtitle( $this->getContextTitle() );
-               $wgOut->addWikiText( $wgOut->formatPermissionsErrorMessage( $permErrors, 'edit' ) );
-               $wgOut->addHTML( "<hr />\n" );
+               $out->setPageTitle( $context->msg('viewsource-title', $this->getContextTitle()->getPrefixedText() ) );
+               $out->addBacklinkSubtitle( $this->getContextTitle() );
+               $out->addWikiText( $out->formatPermissionsErrorMessage( $permErrors, 'edit' ) );
+               $out->addHTML( "<hr />\n" );
 
                # If the user made changes, preserve them when showing the markup
                # (This happens when a user is blocked during edit, for instance)
                if ( !$this->firsttime ) {
                        $text = $this->textbox1;
-                       $wgOut->addWikiMsg( 'viewyourtext' );
+                       $out->addWikiMsg( 'viewyourtext' );
                } else {
                        $text = $this->toEditText( $content );
-                       $wgOut->addWikiMsg( 'viewsourcetext' );
+                       $out->addWikiMsg( 'viewsourcetext' );
                }
 
                $this->showTextbox( $text, 'wpTextbox1', array( 'readonly' ) );
 
-               $wgOut->addHTML( Html::rawElement( 'div', array( 'class' => 'templatesUsed' ),
+               $out->addHTML( Html::rawElement( 'div', array( 'class' => 'templatesUsed' ),
                        Linker::formatTemplates( $this->getTemplates() ) ) );
 
-               if ( $this->mTitle->exists() ) {
-                       $wgOut->returnToMain( null, $this->mTitle );
+               if ( $this->getTitle()->exists() ) {
+                       $out->returnToMain( null, $this->getTitle() );
                }
        }
 
@@ -514,14 +517,15 @@ class EditPage {
        function readOnlyPage( $source = null, $protected = false, $reasons = array(), $action = null ) {
                wfDeprecated( __METHOD__, '1.19' );
 
-               global $wgRequest, $wgOut;
-               if ( $wgRequest->getBool( 'redlink' ) ) {
+               $context = $this->getArticle()->getContext();
+
+               if ( $context->getRequest()->getBool( 'redlink' ) ) {
                        // The edit page was reached via a red link.
                        // Redirect to the article page and let them click the edit tab if
                        // they really want a permission error.
-                       $wgOut->redirect( $this->mTitle->getFullUrl() );
+                       $context->getOutput()->redirect( $this->getTitle()->getFullUrl() );
                } else {
-                       $wgOut->readOnlyPage( $source, $protected, $reasons, $action );
+                       $context->getOutput()->readOnlyPage( $source, $protected, $reasons, $action );
                }
        }
 
@@ -531,28 +535,35 @@ class EditPage {
         * @return bool
         */
        protected function previewOnOpen() {
-               global $wgRequest, $wgUser, $wgPreviewOnOpenNamespaces;
-               if ( $wgRequest->getVal( 'preview' ) == 'yes' ) {
+               global $wgPreviewOnOpenNamespaces;
+
+               $context = $this->getArticle()->getContext();
+               $request = $context->getRequest();
+
+               if ( $request->getVal( 'preview' ) == 'yes' ) {
                        // Explicit override from request
                        return true;
-               } elseif ( $wgRequest->getVal( 'preview' ) == 'no' ) {
+               } elseif ( $request->getVal( 'preview' ) == 'no' ) {
                        // Explicit override from request
                        return false;
                } elseif ( $this->section == 'new' ) {
                        // Nothing *to* preview for new sections
                        return false;
-               } elseif ( ( $wgRequest->getVal( 'preload' ) !== null || $this->mTitle->exists() ) && $wgUser->getOption( 'previewonfirst' ) ) {
+               } elseif (
+                       ( $request->getVal( 'preload' ) !== null || $this->getTitle()->exists() ) &&
+                       $context->getUser()->getOption( 'previewonfirst' )
+               ) {
                        // Standard preference behaviour
                        return true;
-               } elseif ( !$this->mTitle->exists() &&
-                 isset( $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] ) &&
-                 $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] )
+               } elseif ( !$this->getTitle()->exists() &&
+                       isset( $wgPreviewOnOpenNamespaces[$this->getTitle()->getNamespace()] ) &&
+                       $wgPreviewOnOpenNamespaces[$this->getTitle()->getNamespace()] )
                {
                        // Categories are special
                        return true;
-               } else {
-                       return false;
                }
+
+               return false;
        }
 
        /**
@@ -562,17 +573,17 @@ class EditPage {
         * @return bool
         */
        protected function isWrongCaseCssJsPage() {
-               if ( $this->mTitle->isCssJsSubpage() ) {
-                       $name = $this->mTitle->getSkinFromCssJsSubpage();
+               if ( $this->getTitle()->isCssJsSubpage() ) {
+                       $name = $this->getTitle()->getSkinFromCssJsSubpage();
                        $skins = array_merge(
                                array_keys( Skin::getSkinNames() ),
                                array( 'common' )
                        );
                        return !in_array( $name, $skins )
                                && in_array( strtolower( $name ), $skins );
-               } else {
-                       return false;
                }
+
+               return false;
        }
 
        /**
@@ -590,13 +601,13 @@ class EditPage {
         * @param $request WebRequest
         */
        function importFormData( &$request ) {
-               global $wgContLang, $wgUser;
+               global $wgContLang;
 
                wfProfileIn( __METHOD__ );
 
                # Section edit can come from either the form or a link
                $this->section = $request->getVal( 'wpSection', $request->getVal( 'section' ) );
-               $this->isNew = !$this->mTitle->exists() || $this->section == 'new';
+               $this->isNew = !$this->getTitle()->exists() || $this->section == 'new';
 
                if ( $request->wasPosted() ) {
                        # These fields need to be checked for encoding.
@@ -692,12 +703,13 @@ class EditPage {
                        $this->watchthis = $request->getCheck( 'wpWatchthis' );
 
                        # Don't force edit summaries when a user is editing their own user or talk page
-                       if ( ( $this->mTitle->mNamespace == NS_USER || $this->mTitle->mNamespace == NS_USER_TALK ) &&
-                               $this->mTitle->getText() == $wgUser->getName() )
+                       $user = $this->getArticle()->getContext()->getUser();
+                       if ( ( $this->getTitle()->mNamespace == NS_USER || $this->getTitle()->mNamespace == NS_USER_TALK ) &&
+                               $this->getTitle()->getText() == $user->getName() )
                        {
                                $this->allowBlankSummary = true;
                        } else {
-                               $this->allowBlankSummary = $request->getBool( 'wpIgnoreBlankSummary' ) || !$wgUser->getOption( 'forceeditsummary' );
+                               $this->allowBlankSummary = $request->getBool( 'wpIgnoreBlankSummary' ) || !$user->getOption( 'forceeditsummary' );
                        }
 
                        $this->autoSumm = $request->getText( 'wpAutoSummary' );
@@ -741,12 +753,12 @@ class EditPage {
                $this->bot = $request->getBool( 'bot', true );
                $this->nosummary = $request->getBool( 'nosummary' );
 
-               $content_handler = ContentHandler::getForTitle( $this->mTitle );
+               $content_handler = ContentHandler::getForTitle( $this->getTitle() );
                $this->contentModel = $request->getText( 'model', $content_handler->getModelID() ); #may be overridden by revision
                $this->contentFormat = $request->getText( 'format', $content_handler->getDefaultFormat() ); #may be overridden by revision
 
-               #TODO: check if the desired model is allowed in this namespace, and if a transition from the page's current model to the new model is allowed
-               #TODO: check if the desired content model supports the given content format!
+               # @todo Check if the desired model is allowed in this namespace, and if a transition from the page's current model to the new model is allowed
+               # @todo Check if the desired content model supports the given content format!
 
                $this->live = $request->getCheck( 'live' );
                $this->editintro = $request->getText( 'editintro',
@@ -777,10 +789,9 @@ class EditPage {
         * @return bool -- if the requested section is valid
         */
        function initialiseForm() {
-               global $wgUser;
-               $this->edittime = $this->mArticle->getTimestamp();
+               $this->edittime = $this->getArticle()->getTimestamp();
 
-               $content = $this->getContentObject( false ); #TODO: track content object?!
+               $content = $this->getContentObject( false ); # @todo Track content object?!
                if ( $content === false ) {
                        return false;
                }
@@ -788,22 +799,26 @@ class EditPage {
 
                // activate checkboxes if user wants them to be always active
                # Sort out the "watch" checkbox
-               if ( $wgUser->getOption( 'watchdefault' ) ) {
+               $user = $this->getArticle()->getContext()->getUser();
+               if ( $user->getOption( 'watchdefault' ) ) {
                        # Watch all edits
                        $this->watchthis = true;
-               } elseif ( $wgUser->getOption( 'watchcreations' ) && !$this->mTitle->exists() ) {
+               } elseif ( $user->getOption( 'watchcreations' ) && !$this->getTitle()->exists() ) {
                        # Watch creations
                        $this->watchthis = true;
-               } elseif ( $wgUser->isWatched( $this->mTitle ) ) {
+               } elseif ( $user->isWatched( $this->getTitle() ) ) {
                        # Already watched
                        $this->watchthis = true;
                }
-               if ( $wgUser->getOption( 'minordefault' ) && !$this->isNew ) {
+
+               if ( $user->getOption( 'minordefault' ) && !$this->isNew ) {
                        $this->minoredit = true;
                }
+
                if ( $this->textbox1 === false ) {
                        return false;
                }
+
                wfProxyCheck();
                return true;
        }
@@ -839,26 +854,27 @@ class EditPage {
         * @since 1.21
         */
        protected function getContentObject( $def_content = null ) {
-               global $wgOut, $wgRequest;
-
                wfProfileIn( __METHOD__ );
 
                $content = false;
+               $context = $this->getArticle()->getContext();
+               $request = $context->getRequest();
 
                // For message page not locally set, use the i18n message.
                // For other non-existent articles, use preload text if any.
-               if ( !$this->mTitle->exists() || $this->section == 'new' ) {
-                       if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI && $this->section != 'new' ) {
+               if ( !$this->getTitle()->exists() || $this->section == 'new' ) {
+                       if ( $this->getTitle()->getNamespace() == NS_MEDIAWIKI && $this->section != 'new' ) {
                                # If this is a system message, get the default text.
-                               $msg = $this->mTitle->getDefaultMessageText();
+                               $msg = $this->getTitle()->getDefaultMessageText();
 
                                $content = $this->toEditContent( $msg );
                        }
                        if ( $content === false ) {
                                # If requested, preload some text.
-                               $preload = $wgRequest->getVal( 'preload',
+                               $preload = $request->getVal( 'preload',
                                        // Custom preload text for new sections
-                                       $this->section === 'new' ? 'MediaWiki:addsection-preload' : '' );
+                                       $this->section === 'new' ? 'MediaWiki:addsection-preload' : ''
+                               );
 
                                $content = $this->getPreloadedContent( $preload );
                        }
@@ -869,10 +885,12 @@ class EditPage {
                                $orig = $this->getOriginalContent();
                                $content = $orig ? $orig->getSection( $this->section ) : null;
 
-                               if ( !$content ) $content = $def_content;
+                               if ( !$content ) {
+                                       $content = $def_content;
+                               }
                        } else {
-                               $undoafter = $wgRequest->getInt( 'undoafter' );
-                               $undo = $wgRequest->getInt( 'undo' );
+                               $undoafter = $request->getInt( 'undoafter' );
+                               $undo = $request->getInt( 'undo' );
 
                                if ( $undo > 0 && $undoafter > 0 ) {
                                        if ( $undo < $undoafter ) {
@@ -888,11 +906,11 @@ class EditPage {
                                        # Otherwise, $content will be left as-is.
                                        if ( !is_null( $undorev ) && !is_null( $oldrev ) &&
                                                $undorev->getPage() == $oldrev->getPage() &&
-                                               $undorev->getPage() == $this->mTitle->getArticleID() &&
+                                               $undorev->getPage() == $this->getTitle()->getArticleID() &&
                                                !$undorev->isDeleted( Revision::DELETED_TEXT ) &&
                                                !$oldrev->isDeleted( Revision::DELETED_TEXT ) ) {
 
-                                               $content = $this->mArticle->getUndoContent( $undorev, $oldrev );
+                                               $content = $this->getArticle()->getUndoContent( $undorev, $oldrev );
 
                                                if ( $content === false ) {
                                                        # Warn the user that something went wrong
@@ -904,12 +922,14 @@ class EditPage {
                                                        # If we just undid one rev, use an autosummary
                                                        $firstrev = $oldrev->getNext();
                                                        if ( $firstrev && $firstrev->getId() == $undo ) {
-                                                               $undoSummary = wfMessage( 'undo-summary', $undo, $undorev->getUserText() )->inContentLanguage()->text();
+                                                               $undoSummary = $context->msg( 'undo-summary', $undo,
+                                                                       $undorev->getUserText() )->inContentLanguage()->text();
                                                                if ( $this->summary === '' ) {
                                                                        $this->summary = $undoSummary;
                                                                } else {
-                                                                       $this->summary = $undoSummary . wfMessage( 'colon-separator' )
-                                                                               ->inContentLanguage()->text() . $this->summary;
+                                                                       $this->summary = $undoSummary .
+                                                                               $context->msg( 'colon-separator' )->inContentLanguage()->text() .
+                                                                               $this->summary;
                                                                }
                                                                $this->undidRev = $undo;
                                                        }
@@ -923,8 +943,8 @@ class EditPage {
                                        }
 
                                        $class = ( $undoMsg == 'success' ? '' : 'error ' ) . "mw-undo-{$undoMsg}";
-                                       $this->editFormPageTop .= $wgOut->parse( "<div class=\"{$class}\">" .
-                                               wfMessage( 'undo-' . $undoMsg )->plain() . '</div>', true, /* interface */true );
+                                       $this->editFormPageTop .= $context->getOutput()->parse( "<div class=\"{$class}\">" .
+                                               $context->msg( 'undo-' . $undoMsg )->plain() . '</div>', true, /* interface */true );
                                }
 
                                if ( $content === false ) {
@@ -955,14 +975,16 @@ class EditPage {
                if ( $this->section == 'new' ) {
                        return $this->getCurrentContent();
                }
-               $revision = $this->mArticle->getRevisionFetched();
+               $revision = $this->getArticle()->getRevisionFetched();
                if ( $revision === null ) {
                        if ( !$this->contentModel ) $this->contentModel = $this->getTitle()->getContentModel();
                        $handler = ContentHandler::getForModelID( $this->contentModel );
 
                        return $handler->makeEmptyContent();
                }
+
                $content = $revision->getContent();
+
                return $content;
        }
 
@@ -975,7 +997,7 @@ class EditPage {
         * @return Content
         */
        protected function getCurrentContent() {
-               $rev = $this->mArticle->getRevision();
+               $rev = $this->getArticle()->getRevision();
                $content = $rev ? $rev->getContent( Revision::RAW ) : null;
 
                if ( $content  === false || $content === null ) {
@@ -1048,8 +1070,6 @@ class EditPage {
         * @since 1.21
         */
        protected function getPreloadedContent( $preload ) {
-               global $wgUser;
-
                if ( !empty( $this->mPreloadContent ) ) {
                        return $this->mPreloadContent;
                }
@@ -1061,8 +1081,9 @@ class EditPage {
                }
 
                $title = Title::newFromText( $preload );
+               $user = $this->getArticle()->getContext()->getUser();
                # Check for existence to avoid getting MediaWiki:Noarticletext
-               if ( $title === null || !$title->exists() || !$title->userCan( 'read', $wgUser ) ) {
+               if ( $title === null || !$title->exists() || !$title->userCan( 'read', $user ) ) {
                        return $handler->makeEmptyContent();
                }
 
@@ -1070,13 +1091,13 @@ class EditPage {
                if ( $page->isRedirect() ) {
                        $title = $page->getRedirectTarget();
                        # Same as before
-                       if ( $title === null || !$title->exists() || !$title->userCan( 'read', $wgUser ) ) {
+                       if ( $title === null || !$title->exists() || !$title->userCan( 'read', $user ) ) {
                                return $handler->makeEmptyContent();
                        }
                        $page = WikiPage::factory( $title );
                }
 
-               $parserOptions = ParserOptions::newFromUser( $wgUser );
+               $parserOptions = ParserOptions::newFromUser( $user );
                $content = $page->getContent( Revision::RAW );
 
                if ( !$content ) {
@@ -1094,10 +1115,10 @@ class EditPage {
         * @private
         */
        function tokenOk( &$request ) {
-               global $wgUser;
+               $user = $this->getArticle()->getContext()->getUser();
                $token = $request->getVal( 'wpEditToken' );
-               $this->mTokenOk = $wgUser->matchEditToken( $token );
-               $this->mTokenOkExceptSuffix = $wgUser->matchEditTokenNoSuffix( $token );
+               $this->mTokenOk = $user->matchEditToken( $token );
+               $this->mTokenOkExceptSuffix = $user->matchEditTokenNoSuffix( $token );
                return $this->mTokenOk;
        }
 
@@ -1107,11 +1128,13 @@ class EditPage {
         * @return bool false if output is done, true if the rest of the form should be displayed
         */
        function attemptSave() {
-               global $wgUser, $wgOut;
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
+               $user = $context->getUser();
 
                $resultDetails = false;
                # Allow bots to exempt some edits from bot flagging
-               $bot = $wgUser->isAllowed( 'bot' ) && $this->bot;
+               $bot = $user->isAllowed( 'bot' ) && $this->bot;
                $status = $this->internalAttemptSave( $resultDetails, $bot );
                // FIXME: once the interface for internalAttemptSave() is made nicer, this should use the message in $status
                if ( $status->value == self::AS_SUCCESS_UPDATE || $status->value == self::AS_SUCCESS_NEW_ARTICLE ) {
@@ -1133,13 +1156,13 @@ class EditPage {
                                return false;
 
                        case self::AS_PARSE_ERROR:
-                               $wgOut->addWikiText( '<div class="error">' . $status->getWikiText() . '</div>');
+                               $out->addWikiText( '<div class="error">' . $status->getWikiText() . '</div>');
                                return true;
 
                        case self::AS_SUCCESS_NEW_ARTICLE:
                                $query = $resultDetails['redirect'] ? 'redirect=no' : '';
                                $anchor = isset ( $resultDetails['sectionanchor'] ) ? $resultDetails['sectionanchor'] : '';
-                               $wgOut->redirect( $this->mTitle->getFullURL( $query ) . $anchor );
+                               $out->redirect( $this->getTitle()->getFullURL( $query ) . $anchor );
                                return false;
 
                        case self::AS_SUCCESS_UPDATE:
@@ -1147,7 +1170,7 @@ class EditPage {
                                $sectionanchor = $resultDetails['sectionanchor'];
 
                                // Give extensions a chance to modify URL query on update
-                               wfRunHooks( 'ArticleUpdateBeforeRedirect', array( $this->mArticle, &$sectionanchor, &$extraQuery ) );
+                               wfRunHooks( 'ArticleUpdateBeforeRedirect', array( $this->getArticle(), &$sectionanchor, &$extraQuery ) );
 
                                if ( $resultDetails['redirect'] ) {
                                        if ( $extraQuery == '' ) {
@@ -1156,11 +1179,11 @@ class EditPage {
                                                $extraQuery = 'redirect=no&' . $extraQuery;
                                        }
                                }
-                               $wgOut->redirect( $this->mTitle->getFullURL( $extraQuery ) . $sectionanchor );
+                               $out->redirect( $this->getTitle()->getFullURL( $extraQuery ) . $sectionanchor );
                                return false;
 
                        case self::AS_BLANK_ARTICLE:
-                               $wgOut->redirect( $this->getContextTitle()->getFullURL() );
+                               $out->redirect( $this->getContextTitle()->getFullURL() );
                                return false;
 
                        case self::AS_SPAM_ERROR:
@@ -1168,7 +1191,7 @@ class EditPage {
                                return false;
 
                        case self::AS_BLOCKED_PAGE_FOR_USER:
-                               throw new UserBlockedError( $wgUser->getBlock() );
+                               throw new UserBlockedError( $user->getBlock() );
 
                        case self::AS_IMAGE_REDIRECT_ANON:
                        case self::AS_IMAGE_REDIRECT_LOGGED:
@@ -1185,7 +1208,7 @@ class EditPage {
                                throw new ThrottledError();
 
                        case self::AS_NO_CREATE_PERMISSION:
-                               $permission = $this->mTitle->isTalkPage() ? 'createtalk' : 'createpage';
+                               $permission = $this->getTitle()->isTalkPage() ? 'createtalk' : 'createpage';
                                throw new PermissionsError( $permission );
 
                        default:
@@ -1212,7 +1235,7 @@ class EditPage {
         * AS_CONTENT_TOO_BIG and AS_BLOCKED_PAGE_FOR_USER. All that stuff needs to be cleaned up some time.
         */
        function internalAttemptSave( &$result, $bot = false ) {
-               global $wgUser, $wgRequest, $wgParser, $wgMaxArticleSize;
+               global $wgParser, $wgMaxArticleSize;
 
                $status = Status::newGood();
 
@@ -1238,11 +1261,14 @@ class EditPage {
                        return $status;
                }
 
+               $context = $this->getArticle()->getContext();
+               $user = $context->getUser();
+
                # Check image redirect
-               if ( $this->mTitle->getNamespace() == NS_FILE &&
+               if ( $this->getTitle()->getNamespace() == NS_FILE &&
                        $textbox_content->isRedirect() &&
-                       !$wgUser->isAllowed( 'upload' ) ) {
-                               $code = $wgUser->isAnon() ? self::AS_IMAGE_REDIRECT_ANON : self::AS_IMAGE_REDIRECT_LOGGED;
+                       !$user->isAllowed( 'upload' ) ) {
+                               $code = $user->isAnon() ? self::AS_IMAGE_REDIRECT_ANON : self::AS_IMAGE_REDIRECT_LOGGED;
                                $status->setResult( false, $code );
 
                                wfProfileOut( __METHOD__ . '-checks' );
@@ -1258,8 +1284,8 @@ class EditPage {
                }
                if ( $match !== false ) {
                        $result['spam'] = $match;
-                       $ip = $wgRequest->getIP();
-                       $pdbk = $this->mTitle->getPrefixedDBkey();
+                       $ip = $context->getRequest()->getIP();
+                       $pdbk = $this->getTitle()->getPrefixedDBkey();
                        $match = str_replace( "\n", '', $match );
                        wfDebugLog( 'SpamRegex', "$ip spam regex hit [[$pdbk]]: \"$match\"" );
                        $status->fatal( 'spamprotectionmatch', $match );
@@ -1284,9 +1310,9 @@ class EditPage {
                        return $status;
                }
 
-               if ( $wgUser->isBlockedFrom( $this->mTitle, false ) ) {
+               if ( $user->isBlockedFrom( $this->getTitle(), false ) ) {
                        // Auto-block user's IP if the account was "hard" blocked
-                       $wgUser->spreadAnyEditBlock();
+                       $user->spreadAnyEditBlock();
                        # Check block state against master, thus 'false'.
                        $status->setResult( false, self::AS_BLOCKED_PAGE_FOR_USER );
                        wfProfileOut( __METHOD__ . '-checks' );
@@ -1304,8 +1330,8 @@ class EditPage {
                        return $status;
                }
 
-               if ( !$wgUser->isAllowed( 'edit' ) ) {
-                       if ( $wgUser->isAnon() ) {
+               if ( !$user->isAllowed( 'edit' ) ) {
+                       if ( $user->isAnon() ) {
                                $status->setResult( false, self::AS_READ_ONLY_PAGE_ANON );
                                wfProfileOut( __METHOD__ . '-checks' );
                                wfProfileOut( __METHOD__ );
@@ -1326,7 +1352,7 @@ class EditPage {
                        wfProfileOut( __METHOD__ );
                        return $status;
                }
-               if ( $wgUser->pingLimiter() ) {
+               if ( $user->pingLimiter() ) {
                        $status->fatal( 'actionthrottledtext' );
                        $status->value = self::AS_RATE_LIMITED;
                        wfProfileOut( __METHOD__ . '-checks' );
@@ -1347,12 +1373,12 @@ class EditPage {
 
                # Load the page data from the master. If anything changes in the meantime,
                # we detect it by using page_latest like a token in a 1 try compare-and-swap.
-               $this->mArticle->loadPageData( 'fromdbmaster' );
-               $new = !$this->mArticle->exists();
+               $this->getArticle()->loadPageData( 'fromdbmaster' );
+               $new = !$this->getArticle()->exists();
 
                if ( $new ) {
                        // Late check for create permission, just in case *PARANOIA*
-                       if ( !$this->mTitle->userCan( 'create', $wgUser ) ) {
+                       if ( !$this->getTitle()->userCan( 'create', $user ) ) {
                                $status->fatal( 'nocreatetext' );
                                $status->value = self::AS_NO_CREATE_PERMISSION;
                                wfDebug( __METHOD__ . ": no create permission\n" );
@@ -1398,7 +1424,7 @@ class EditPage {
                                        // passed.
                                        if ( $this->summary === '' ) {
                                                $cleanSectionTitle = $wgParser->stripSectionName( $this->sectiontitle );
-                                               $this->summary = wfMessage( 'newsectionsummary' )
+                                               $this->summary = $context->msg( 'newsectionsummary' )
                                                        ->rawParams( $cleanSectionTitle )->inContentLanguage()->text();
                                        }
                                } elseif ( $this->summary !== '' ) {
@@ -1410,27 +1436,25 @@ class EditPage {
 
                                        // Create a link to the new section from the edit summary.
                                        $cleanSummary = $wgParser->stripSectionName( $this->summary );
-                                       $this->summary = wfMessage( 'newsectionsummary' )
+                                       $this->summary = $context->msg( 'newsectionsummary' )
                                                ->rawParams( $cleanSummary )->inContentLanguage()->text();
                                }
                        }
 
                        $status->value = self::AS_SUCCESS_NEW_ARTICLE;
-
                } else { # not $new
-
                        # Article exists. Check for edit conflict.
 
-                       $this->mArticle->clear(); # Force reload of dates, etc.
-                       $timestamp = $this->mArticle->getTimestamp();
+                       $this->getArticle()->clear(); # Force reload of dates, etc.
+                       $timestamp = $this->getArticle()->getTimestamp();
 
                        wfDebug( "timestamp: {$timestamp}, edittime: {$this->edittime}\n" );
 
                        if ( $timestamp != $this->edittime ) {
                                $this->isConflict = true;
                                if ( $this->section == 'new' ) {
-                                       if ( $this->mArticle->getUserText() == $wgUser->getName() &&
-                                               $this->mArticle->getComment() == $this->summary ) {
+                                       if ( $this->getArticle()->getUserText() == $user->getName() &&
+                                               $this->getArticle()->getComment() == $this->summary ) {
                                                // Probably a duplicate submission of a new comment.
                                                // This can happen when squid resends a request after
                                                // a timeout but the first one actually went through.
@@ -1440,11 +1464,19 @@ class EditPage {
                                                $this->isConflict = false;
                                                wfDebug( __METHOD__ . ": conflict suppressed; new section\n" );
                                        }
-                               } elseif ( $this->section == '' && Revision::userWasLastToEdit( DB_MASTER,  $this->mTitle->getArticleID(),
-                                                       $wgUser->getId(), $this->edittime ) ) {
-                                       # Suppress edit conflict with self, except for section edits where merging is required.
-                                       wfDebug( __METHOD__ . ": Suppressing edit conflict, same user.\n" );
-                                       $this->isConflict = false;
+                               } elseif ( $this->section == '' ) {
+                                       $userWasLastToEdit = Revision::userWasLastToEdit(
+                                               DB_MASTER,
+                                               $this->getTitle()->getArticleID(),
+                                               $user->getId(),
+                                               $this->edittime
+                                       );
+
+                                       if ( $userWasLastToEdit ) {
+                                               # Suppress edit conflict with self, except for section edits where merging is required.
+                                               wfDebug( __METHOD__ . ": Suppressing edit conflict, same user.\n" );
+                                               $this->isConflict = false;
+                                       }
                                }
                        }
 
@@ -1462,10 +1494,10 @@ class EditPage {
                                wfDebug( __METHOD__ . ": conflict! getting section '{$this->section}' for time '{$this->edittime}'"
                                                . " (article time '{$timestamp}')\n" );
 
-                               $content = $this->mArticle->replaceSectionContent( $this->section, $textbox_content, $sectionTitle, $this->edittime );
+                               $content = $this->getArticle()->replaceSectionContent( $this->section, $textbox_content, $sectionTitle, $this->edittime );
                        } else {
                                wfDebug( __METHOD__ . ": getting section '{$this->section}'\n" );
-                               $content = $this->mArticle->replaceSectionContent( $this->section, $textbox_content, $sectionTitle );
+                               $content = $this->getArticle()->replaceSectionContent( $this->section, $textbox_content, $sectionTitle );
                        }
 
                        if ( is_null( $content ) ) {
@@ -1555,7 +1587,7 @@ class EditPage {
                                        // passed.
                                        if ( $this->summary === '' ) {
                                                $cleanSectionTitle = $wgParser->stripSectionName( $this->sectiontitle );
-                                               $this->summary = wfMessage( 'newsectionsummary' )
+                                               $this->summary = $context->msg( 'newsectionsummary' )
                                                        ->rawParams( $cleanSectionTitle )->inContentLanguage()->text();
                                        }
                                } elseif ( $this->summary !== '' ) {
@@ -1563,7 +1595,7 @@ class EditPage {
                                        # This is a new section, so create a link to the new section
                                        # in the revision summary.
                                        $cleanSummary = $wgParser->stripSectionName( $this->summary );
-                                       $this->summary = wfMessage( 'newsectionsummary' )
+                                       $this->summary = $context->msg( 'newsectionsummary' )
                                                ->rawParams( $cleanSummary )->inContentLanguage()->text();
                                }
                        } elseif ( $this->section != '' ) {
@@ -1604,8 +1636,8 @@ class EditPage {
                        ( ( $this->minoredit && !$this->isNew ) ? EDIT_MINOR : 0 ) |
                        ( $bot ? EDIT_FORCE_BOT : 0 );
 
-                       $doEditStatus = $this->mArticle->doEditContent( $content, $this->summary, $flags,
-                                                                                                                       false, null, $this->contentFormat );
+                       $doEditStatus = $this->getArticle()->doEditContent( $content, $this->summary, $flags,
+                               false, null, $this->contentFormat );
 
                if ( $doEditStatus->isOK() ) {
                                $result['redirect'] = $content->isRedirect();
@@ -1633,21 +1665,21 @@ class EditPage {
         * Register the change of watch status
         */
        protected function updateWatchlist() {
-               global $wgUser;
+               $title = $this->getTitle();
+               $user = $this->getArticle()->getContext()->getUser();
 
-               if ( $wgUser->isLoggedIn() && $this->watchthis != $wgUser->isWatched( $this->mTitle ) ) {
+               if ( $user->isLoggedIn() && $this->watchthis != $user->isWatched( $title ) ) {
                        $fname = __METHOD__;
-                       $title = $this->mTitle;
                        $watch = $this->watchthis;
 
                        // Do this in its own transaction to reduce contention...
                        $dbw = wfGetDB( DB_MASTER );
-                       $dbw->onTransactionIdle( function() use ( $dbw, $title, $watch, $wgUser, $fname ) {
+                       $dbw->onTransactionIdle( function() use ( $dbw, $title, $watch, $user, $fname ) {
                                $dbw->begin( $fname );
                                if ( $watch ) {
-                                       WatchAction::doWatch( $title, $wgUser );
+                                       WatchAction::doWatch( $title, $user );
                                } else {
-                                       WatchAction::doUnwatch( $title, $wgUser );
+                                       WatchAction::doUnwatch( $title, $user );
                                }
                                $dbw->commit( $fname );
                        } );
@@ -1693,10 +1725,10 @@ class EditPage {
                        $editText = $result;
                        wfProfileOut( __METHOD__ );
                        return true;
-               } else {
-                       wfProfileOut( __METHOD__ );
-                       return false;
                }
+
+               wfProfileOut( __METHOD__ );
+               return false;
        }
 
        /**
@@ -1722,7 +1754,7 @@ class EditPage {
                }
 
                // The current state, we want to merge updates into it
-               $currentRevision = Revision::loadFromTitle( $db, $this->mTitle );
+               $currentRevision = Revision::loadFromTitle( $db, $this->getTitle() );
                $currentContent = $currentRevision ? $currentRevision->getContent() : null;
 
                if ( is_null( $currentContent ) ) {
@@ -1738,10 +1770,10 @@ class EditPage {
                        $editContent = $result;
                        wfProfileOut( __METHOD__ );
                        return true;
-               } else {
-                       wfProfileOut( __METHOD__ );
-                       return false;
                }
+
+               wfProfileOut( __METHOD__ );
+               return false;
        }
 
        /**
@@ -1751,7 +1783,7 @@ class EditPage {
                if ( !$this->mBaseRevision ) {
                        $db = wfGetDB( DB_MASTER );
                        $baseRevision = Revision::loadFromTimestamp(
-                               $db, $this->mTitle, $this->edittime );
+                               $db, $this->getTitle(), $this->edittime );
                        return $this->mBaseRevision = $baseRevision;
                } else {
                        return $this->mBaseRevision;
@@ -1797,24 +1829,26 @@ class EditPage {
                                return $matches[0];
                        }
                }
+
                return false;
        }
 
        function setHeaders() {
-               global $wgOut, $wgUser;
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
 
-               $wgOut->addModules( 'mediawiki.action.edit' );
+               $out->addModules( 'mediawiki.action.edit' );
 
-               if ( $wgUser->getOption( 'uselivepreview', false ) ) {
-                       $wgOut->addModules( 'mediawiki.action.edit.preview' );
+               if ( $context->getUser()->getOption( 'uselivepreview', false ) ) {
+                       $out->addModules( 'mediawiki.action.edit.preview' );
                }
                // Bug #19334: textarea jumps when editing articles in IE8
-               $wgOut->addStyle( 'common/IE80Fixes.css', 'screen', 'IE 8' );
+               $out->addStyle( 'common/IE80Fixes.css', 'screen', 'IE 8' );
 
-               $wgOut->setRobotPolicy( 'noindex,nofollow' );
+               $out->setRobotPolicy( 'noindex,nofollow' );
 
                # Enabled article-related sidebar, toplinks, etc.
-               $wgOut->setArticleRelated( true );
+               $out->setArticleRelated( true );
 
                $contextTitle = $this->getContextTitle();
                if ( $this->isConflict ) {
@@ -1830,36 +1864,37 @@ class EditPage {
                if ( $displayTitle === false ) {
                        $displayTitle = $contextTitle->getPrefixedText();
                }
-               $wgOut->setPageTitle( wfMessage( $msg, $displayTitle ) );
+               $out->setPageTitle( $context->msg( $msg, $displayTitle ) );
        }
 
        /**
         * Show all applicable editing introductions
         */
        protected function showIntro() {
-               global $wgOut, $wgUser;
                if ( $this->suppressIntro ) {
                        return;
                }
 
-               $namespace = $this->mTitle->getNamespace();
+               $namespace = $this->getTitle()->getNamespace();
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
 
                if ( $namespace == NS_MEDIAWIKI ) {
                        # Show a warning if editing an interface message
-                       $wgOut->wrapWikiMsg( "<div class='mw-editinginterface'>\n$1\n</div>", 'editinginterface' );
+                       $out->wrapWikiMsg( "<div class='mw-editinginterface'>\n$1\n</div>", 'editinginterface' );
                } else if( $namespace == NS_FILE ) {
                        # Show a hint to shared repo
-                       $file = wfFindFile( $this->mTitle );
+                       $file = wfFindFile( $this->getTitle() );
                        if( $file && !$file->isLocal() ) {
                                $descUrl = $file->getDescriptionUrl();
                                # there must be a description url to show a hint to shared repo
                                if( $descUrl ) {
-                                       if( !$this->mTitle->exists() ) {
-                                               $wgOut->wrapWikiMsg( "<div class=\"mw-sharedupload-desc-create\">\n$1\n</div>", array (
+                                       if( !$this->getTitle()->exists() ) {
+                                               $out->wrapWikiMsg( "<div class=\"mw-sharedupload-desc-create\">\n$1\n</div>", array (
                                                                        'sharedupload-desc-create', $file->getRepo()->getDisplayName(), $descUrl
                                                ) );
                                        } else {
-                                               $wgOut->wrapWikiMsg( "<div class=\"mw-sharedupload-desc-edit\">\n$1\n</div>", array(
+                                               $out->wrapWikiMsg( "<div class=\"mw-sharedupload-desc-edit\">\n$1\n</div>", array(
                                                                        'sharedupload-desc-edit', $file->getRepo()->getDisplayName(), $descUrl
                                                ) );
                                        }
@@ -1870,16 +1905,16 @@ class EditPage {
                # Show a warning message when someone creates/edits a user (talk) page but the user does not exist
                # Show log extract when the user is currently blocked
                if ( $namespace == NS_USER || $namespace == NS_USER_TALK ) {
-                       $parts = explode( '/', $this->mTitle->getText(), 2 );
+                       $parts = explode( '/', $this->getTitle()->getText(), 2 );
                        $username = $parts[0];
                        $user = User::newFromName( $username, false /* allow IP users*/ );
                        $ip = User::isIP( $username );
                        if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist
-                               $wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n$1\n</div>",
+                               $out->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n$1\n</div>",
                                        array( 'userpage-userdoesnotexist', wfEscapeWikiText( $username ) ) );
                        } elseif ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
                                LogEventsList::showLogExtract(
-                                       $wgOut,
+                                       $out,
                                        'block',
                                        $user->getUserPage(),
                                        '',
@@ -1894,17 +1929,19 @@ class EditPage {
                                );
                        }
                }
+
                # Try to add a custom edit intro, or use the standard one if this is not possible.
-               if ( !$this->showCustomIntro() && !$this->mTitle->exists() ) {
-                       if ( $wgUser->isLoggedIn() ) {
-                               $wgOut->wrapWikiMsg( "<div class=\"mw-newarticletext\">\n$1\n</div>", 'newarticletext' );
+               if ( !$this->showCustomIntro() && !$this->getTitle()->exists() ) {
+                       if ( $context->getUser()->isLoggedIn() ) {
+                               $out->wrapWikiMsg( "<div class=\"mw-newarticletext\">\n$1\n</div>", 'newarticletext' );
                        } else {
-                               $wgOut->wrapWikiMsg( "<div class=\"mw-newarticletextanon\">\n$1\n</div>", 'newarticletextanon' );
+                               $out->wrapWikiMsg( "<div class=\"mw-newarticletextanon\">\n$1\n</div>", 'newarticletextanon' );
                        }
                }
+
                # Give a notice if the user is editing a deleted/moved page...
-               if ( !$this->mTitle->exists() ) {
-                       LogEventsList::showLogExtract( $wgOut, array( 'delete', 'move' ), $this->mTitle,
+               if ( !$this->getTitle()->exists() ) {
+                       LogEventsList::showLogExtract( $out, array( 'delete', 'move' ), $this->getTitle(),
                                '',
                                array(
                                        'lim' => 10,
@@ -1924,13 +1961,16 @@ class EditPage {
        protected function showCustomIntro() {
                if ( $this->editintro ) {
                        $title = Title::newFromText( $this->editintro );
+
                        if ( $title instanceof Title && $title->exists() && $title->userCan( 'read' ) ) {
-                               global $wgOut;
                                // Added using template syntax, to take <noinclude>'s into account.
-                               $wgOut->addWikiTextTitleTidy( '{{:' . $title->getFullText() . '}}', $this->mTitle );
+                               $this->getArticle()->getContext()->getOutput()
+                                       ->addWikiTextTitleTidy( '{{:' . $title->getFullText() . '}}', $this->mTitle );
+
                                return true;
                        }
                }
+
                return false;
        }
 
@@ -1945,7 +1985,7 @@ class EditPage {
         * an exception will be raised. Set $this->allowNonTextContent to true to allow editing of non-textual
         * content.
         *
-        * @param Content|null|false|string $content
+        * @param Content|null|bool|string $content
         * @return String the editable text form of the content.
         *
         * @throws MWException if $content is not an instance of TextContent and $this->allowNonTextContent is not true.
@@ -2003,8 +2043,6 @@ class EditPage {
         *     during form output near the top, for captchas and the like.
         */
        function showEditForm( $formCallback = null ) {
-               global $wgOut, $wgUser;
-
                wfProfileIn( __METHOD__ );
 
                # need to parse the preview early so that we know which templates are used,
@@ -2016,7 +2054,9 @@ class EditPage {
                        $previewOutput = $this->getPreviewText();
                }
 
-               wfRunHooks( 'EditPage::showEditForm:initial', array( &$this, &$wgOut ) );
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
+               wfRunHooks( 'EditPage::showEditForm:initial', array( &$this, &$out ) );
 
                $this->setHeaders();
 
@@ -2025,13 +2065,13 @@ class EditPage {
                        return;
                }
 
-               $wgOut->addHTML( $this->editFormPageTop );
+               $out->addHTML( $this->editFormPageTop );
 
-               if ( $wgUser->getOption( 'previewontop' ) ) {
+               if ( $context->getUser()->getOption( 'previewontop' ) ) {
                        $this->displayPreviewArea( $previewOutput, true );
                }
 
-               $wgOut->addHTML( $this->editFormTextTop );
+               $out->addHTML( $this->editFormTextTop );
 
                $showToolbar = true;
                if ( $this->wasDeletedSinceLastEdit() ) {
@@ -2040,22 +2080,22 @@ class EditPage {
                                // Add an confirmation checkbox and explanation.
                                $showToolbar = false;
                        } else {
-                               $wgOut->wrapWikiMsg( "<div class='error mw-deleted-while-editing'>\n$1\n</div>",
+                               $out->wrapWikiMsg( "<div class='error mw-deleted-while-editing'>\n$1\n</div>",
                                        'deletedwhileediting' );
                        }
                }
 
-               //@todo: add EditForm plugin interface and use it here!
+               // @todo Add EditForm plugin interface and use it here!
                //       search for textarea1 and textares2, and allow EditForm to override all uses.
-               $wgOut->addHTML( Html::openElement( 'form', array( 'id' => self::EDITFORM_ID, 'name' => self::EDITFORM_ID,
+               $out->addHTML( Html::openElement( 'form', array( 'id' => self::EDITFORM_ID, 'name' => self::EDITFORM_ID,
                        'method' => 'post', 'action' => $this->getActionURL( $this->getContextTitle() ),
                        'enctype' => 'multipart/form-data' ) ) );
 
                if ( is_callable( $formCallback ) ) {
-                       call_user_func_array( $formCallback, array( &$wgOut ) );
+                       call_user_func_array( $formCallback, array( &$out ) );
                }
 
-               wfRunHooks( 'EditPage::showEditForm:fields', array( &$this, &$wgOut ) );
+               wfRunHooks( 'EditPage::showEditForm:fields', array( &$this, &$out ) );
 
                // Put these up at the top to ensure they aren't lost on early form submission
                $this->showFormBeforeText();
@@ -2065,14 +2105,14 @@ class EditPage {
                        $comment = $this->lastDelete->log_comment;
 
                        // It is better to not parse the comment at all than to have templates expanded in the middle
-                       // TODO: can the checkLabel be moved outside of the div so that wrapWikiMsg could be used?
+                       // @todo Can the checkLabel be moved outside of the div so that wrapWikiMsg could be used?
                        $key = $comment === ''
                                ? 'confirmrecreate-noreason'
                                : 'confirmrecreate';
-                       $wgOut->addHTML(
+                       $out->addHTML(
                                '<div class="mw-confirm-recreate">' .
-                                       wfMessage( $key, $username, "<nowiki>$comment</nowiki>" )->parse() .
-                               Xml::checkLabel( wfMessage( 'recreate' )->text(), 'wpRecreate', 'wpRecreate', false,
+                                       $context->msg( $key, $username, "<nowiki>$comment</nowiki>" )->parse() .
+                               Xml::checkLabel( $context->msg( 'recreate' )->text(), 'wpRecreate', 'wpRecreate', false,
                                        array( 'title' => Linker::titleAttrib( 'recreate' ), 'tabindex' => 1, 'id' => 'wpRecreate' )
                                ) .
                                '</div>'
@@ -2081,7 +2121,7 @@ class EditPage {
 
                # When the summary is hidden, also hide them on preview/show changes
                if( $this->nosummary ) {
-                       $wgOut->addHTML( Html::hidden( 'nosummary', true ) );
+                       $out->addHTML( Html::hidden( 'nosummary', true ) );
                }
 
                # If a blank edit summary was previously provided, and the appropriate
@@ -2092,11 +2132,11 @@ class EditPage {
                # For a bit more sophisticated detection of blank summaries, hash the
                # automatic one and pass that in the hidden field wpAutoSummary.
                if ( $this->missingSummary || ( $this->section == 'new' && $this->nosummary ) ) {
-                       $wgOut->addHTML( Html::hidden( 'wpIgnoreBlankSummary', true ) );
+                       $out->addHTML( Html::hidden( 'wpIgnoreBlankSummary', true ) );
                }
 
                if ( $this->undidRev ) {
-                       $wgOut->addHTML( Html::hidden( 'wpUndidRevision', $this->undidRev ) );
+                       $out->addHTML( Html::hidden( 'wpUndidRevision', $this->undidRev ) );
                }
 
                if ( $this->hasPresetSummary ) {
@@ -2107,22 +2147,22 @@ class EditPage {
                }
 
                $autosumm = $this->autoSumm ? $this->autoSumm : md5( $this->summary );
-               $wgOut->addHTML( Html::hidden( 'wpAutoSummary', $autosumm ) );
+               $out->addHTML( Html::hidden( 'wpAutoSummary', $autosumm ) );
 
-               $wgOut->addHTML( Html::hidden( 'oldid', $this->oldid ) );
+               $out->addHTML( Html::hidden( 'oldid', $this->oldid ) );
 
-               $wgOut->addHTML( Html::hidden( 'format', $this->contentFormat ) );
-               $wgOut->addHTML( Html::hidden( 'model', $this->contentModel ) );
+               $out->addHTML( Html::hidden( 'format', $this->contentFormat ) );
+               $out->addHTML( Html::hidden( 'model', $this->contentModel ) );
 
                if ( $this->section == 'new' ) {
                        $this->showSummaryInput( true, $this->summary );
-                       $wgOut->addHTML( $this->getSummaryPreview( true, $this->summary ) );
+                       $out->addHTML( $this->getSummaryPreview( true, $this->summary ) );
                }
 
-               $wgOut->addHTML( $this->editFormTextBeforeContent );
+               $out->addHTML( $this->editFormTextBeforeContent );
 
-               if ( !$this->isCssJsSubpage && $showToolbar && $wgUser->getOption( 'showtoolbar' ) ) {
-                       $wgOut->addHTML( EditPage::getEditToolbar() );
+               if ( !$this->isCssJsSubpage && $showToolbar && $context->getUser()->getOption( 'showtoolbar' ) ) {
+                       $out->addHTML( EditPage::getEditToolbar() );
                }
 
                if ( $this->isConflict ) {
@@ -2140,37 +2180,34 @@ class EditPage {
                        $this->showContentForm();
                }
 
-               $wgOut->addHTML( $this->editFormTextAfterContent );
+               $out->addHTML( $this->editFormTextAfterContent );
 
                $this->showStandardInputs();
-
                $this->showFormAfterText();
-
                $this->showTosSummary();
-
                $this->showEditTools();
 
-               $wgOut->addHTML( $this->editFormTextAfterTools . "\n" );
+               $out->addHTML( $this->editFormTextAfterTools . "\n" );
 
-               $wgOut->addHTML( Html::rawElement( 'div', array( 'class' => 'templatesUsed' ),
+               $out->addHTML( Html::rawElement( 'div', array( 'class' => 'templatesUsed' ),
                        Linker::formatTemplates( $this->getTemplates(), $this->preview, $this->section != '' ) ) );
 
-               $wgOut->addHTML( Html::rawElement( 'div', array( 'class' => 'hiddencats' ),
-                       Linker::formatHiddenCategories( $this->mArticle->getHiddenCategories() ) ) );
+               $out->addHTML( Html::rawElement( 'div', array( 'class' => 'hiddencats' ),
+                       Linker::formatHiddenCategories( $this->getArticle()->getHiddenCategories() ) ) );
 
                if ( $this->isConflict ) {
                        try {
                                $this->showConflict();
                        } catch ( MWContentSerializationException $ex ) {
                                // this can't really happen, but be nice if it does.
-                               $msg = wfMessage( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
-                               $wgOut->addWikiText( '<div class="error">' . $msg->text() . '</div>');
+                               $msg = $context->msg( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
+                               $out->addWikiText( '<div class="error">' . $msg->text() . '</div>');
                        }
                }
 
-               $wgOut->addHTML( $this->editFormTextBottom . "\n</form>\n" );
+               $out->addHTML( $this->editFormTextBottom . "\n</form>\n" );
 
-               if ( !$wgUser->getOption( 'previewontop' ) ) {
+               if ( !$context->getUser()->getOption( 'previewontop' ) ) {
                        $this->displayPreviewArea( $previewOutput, false );
                }
 
@@ -2194,46 +2231,52 @@ class EditPage {
        }
 
        protected function showHeader() {
-               global $wgOut, $wgUser, $wgMaxArticleSize, $wgLang;
+               global $wgMaxArticleSize;
+
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
+               $title = $this->getTitle();
 
-               if ( $this->mTitle->isTalkPage() ) {
-                       $wgOut->addWikiMsg( 'talkpagetext' );
+               if ( $title->isTalkPage() ) {
+                       $out->addWikiMsg( 'talkpagetext' );
                }
 
                # Optional notices on a per-namespace and per-page basis
-               $editnotice_ns = 'editnotice-' . $this->mTitle->getNamespace();
-               $editnotice_ns_message = wfMessage( $editnotice_ns );
+               $editnotice_ns = 'editnotice-' . $title->getNamespace();
+               $editnotice_ns_message = $context->msg( $editnotice_ns );
                if ( $editnotice_ns_message->exists() ) {
-                       $wgOut->addWikiText( $editnotice_ns_message->plain() );
+                       $out->addWikiText( $editnotice_ns_message->plain() );
                }
-               if ( MWNamespace::hasSubpages( $this->mTitle->getNamespace() ) ) {
-                       $parts = explode( '/', $this->mTitle->getDBkey() );
+
+               if ( MWNamespace::hasSubpages( $title->getNamespace() ) ) {
+                       $parts = explode( '/', $title->getDBkey() );
                        $editnotice_base = $editnotice_ns;
+
                        while ( count( $parts ) > 0 ) {
                                $editnotice_base .= '-' . array_shift( $parts );
-                               $editnotice_base_msg = wfMessage( $editnotice_base );
+                               $editnotice_base_msg = $context->msg( $editnotice_base );
                                if ( $editnotice_base_msg->exists() ) {
-                                       $wgOut->addWikiText( $editnotice_base_msg->plain() );
+                                       $out->addWikiText( $editnotice_base_msg->plain() );
                                }
                        }
                } else {
                        # Even if there are no subpages in namespace, we still don't want / in MW ns.
-                       $editnoticeText = $editnotice_ns . '-' . str_replace( '/', '-', $this->mTitle->getDBkey() );
-                       $editnoticeMsg = wfMessage( $editnoticeText );
+                       $editnoticeText = $editnotice_ns . '-' . str_replace( '/', '-', $title->getDBkey() );
+                       $editnoticeMsg = $context->msg( $editnoticeText );
                        if ( $editnoticeMsg->exists() ) {
-                               $wgOut->addWikiText( $editnoticeMsg->plain() );
+                               $out->addWikiText( $editnoticeMsg->plain() );
                        }
                }
 
                if ( $this->isConflict ) {
-                       $wgOut->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1\n</div>", 'explainconflict' );
-                       $this->edittime = $this->mArticle->getTimestamp();
+                       $out->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1\n</div>", 'explainconflict' );
+                       $this->edittime = $this->getArticle()->getTimestamp();
                } else {
                        if ( $this->section != '' && !$this->isSectionEditSupported() ) {
                                // We use $this->section to much before this and getVal('wgSection') directly in other places
                                // at this point we can't reset $this->section to '' to fallback to non-section editing.
                                // Someone is welcome to try refactoring though
-                               $wgOut->showErrorPage( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' );
+                               $out->showErrorPage( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' );
                                return false;
                        }
 
@@ -2247,89 +2290,93 @@ class EditPage {
                        }
 
                        if ( $this->missingComment ) {
-                               $wgOut->wrapWikiMsg( "<div id='mw-missingcommenttext'>\n$1\n</div>", 'missingcommenttext' );
+                               $out->wrapWikiMsg( "<div id='mw-missingcommenttext'>\n$1\n</div>", 'missingcommenttext' );
                        }
 
                        if ( $this->missingSummary && $this->section != 'new' ) {
-                               $wgOut->wrapWikiMsg( "<div id='mw-missingsummary'>\n$1\n</div>", 'missingsummary' );
+                               $out->wrapWikiMsg( "<div id='mw-missingsummary'>\n$1\n</div>", 'missingsummary' );
                        }
 
                        if ( $this->missingSummary && $this->section == 'new' ) {
-                               $wgOut->wrapWikiMsg( "<div id='mw-missingcommentheader'>\n$1\n</div>", 'missingcommentheader' );
+                               $out->wrapWikiMsg( "<div id='mw-missingcommentheader'>\n$1\n</div>", 'missingcommentheader' );
                        }
 
                        if ( $this->hookError !== '' ) {
-                               $wgOut->addWikiText( $this->hookError );
+                               $out->addWikiText( $this->hookError );
                        }
 
                        if ( !$this->checkUnicodeCompliantBrowser() ) {
-                               $wgOut->addWikiMsg( 'nonunicodebrowser' );
+                               $out->addWikiMsg( 'nonunicodebrowser' );
                        }
 
                        if ( $this->section != 'new' ) {
-                               $revision = $this->mArticle->getRevisionFetched();
+                               $revision = $this->getArticle()->getRevisionFetched();
                                if ( $revision ) {
                                        // Let sysop know that this will make private content public if saved
 
-                                       if ( !$revision->userCan( Revision::DELETED_TEXT, $wgUser ) ) {
-                                               $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-permission' );
+                                       if ( !$revision->userCan( Revision::DELETED_TEXT, $context->getUser() ) ) {
+                                               $out->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-permission' );
                                        } elseif ( $revision->isDeleted( Revision::DELETED_TEXT ) ) {
-                                               $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-view' );
+                                               $out->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-view' );
                                        }
 
                                        if ( !$revision->isCurrent() ) {
-                                               $this->mArticle->setOldSubtitle( $revision->getId() );
-                                               $wgOut->addWikiMsg( 'editingold' );
+                                               $this->getArticle()->setOldSubtitle( $revision->getId() );
+                                               $out->addWikiMsg( 'editingold' );
                                        }
-                               } elseif ( $this->mTitle->exists() ) {
+                               } elseif ( $title->exists() ) {
                                        // Something went wrong
 
-                                       $wgOut->wrapWikiMsg( "<div class='errorbox'>\n$1\n</div>\n",
+                                       $out->wrapWikiMsg( "<div class='errorbox'>\n$1\n</div>\n",
                                                array( 'missing-revision', $this->oldid ) );
                                }
                        }
                }
 
                if ( wfReadOnly() ) {
-                       $wgOut->wrapWikiMsg( "<div id=\"mw-read-only-warning\">\n$1\n</div>", array( 'readonlywarning', wfReadOnlyReason() ) );
-               } elseif ( $wgUser->isAnon() ) {
+                       $out->wrapWikiMsg( "<div id=\"mw-read-only-warning\">\n$1\n</div>", array( 'readonlywarning', wfReadOnlyReason() ) );
+               } elseif ( $context->getUser()->isAnon() ) {
                        if ( $this->formtype != 'preview' ) {
-                               $wgOut->wrapWikiMsg( "<div id=\"mw-anon-edit-warning\">\n$1</div>", 'anoneditwarning' );
+                               $out->wrapWikiMsg( "<div id=\"mw-anon-edit-warning\">\n$1</div>", 'anoneditwarning' );
                        } else {
-                               $wgOut->wrapWikiMsg( "<div id=\"mw-anon-preview-warning\">\n$1</div>", 'anonpreviewwarning' );
+                               $out->wrapWikiMsg( "<div id=\"mw-anon-preview-warning\">\n$1</div>", 'anonpreviewwarning' );
                        }
                } else {
                        if ( $this->isCssJsSubpage ) {
                                # Check the skin exists
                                if ( $this->isWrongCaseCssJsPage ) {
-                                       $wgOut->wrapWikiMsg( "<div class='error' id='mw-userinvalidcssjstitle'>\n$1\n</div>", array( 'userinvalidcssjstitle', $this->mTitle->getSkinFromCssJsSubpage() ) );
+                                       $out->wrapWikiMsg(
+                                               "<div class='error' id='mw-userinvalidcssjstitle'>\n$1\n</div>",
+                                               array( 'userinvalidcssjstitle', $title->getSkinFromCssJsSubpage() )
+                                       );
                                }
                                if ( $this->formtype !== 'preview' ) {
                                        if ( $this->isCssSubpage ) {
-                                               $wgOut->wrapWikiMsg( "<div id='mw-usercssyoucanpreview'>\n$1\n</div>", array( 'usercssyoucanpreview' ) );
+                                               $out->wrapWikiMsg( "<div id='mw-usercssyoucanpreview'>\n$1\n</div>", array( 'usercssyoucanpreview' ) );
                                        }
 
                                        if ( $this->isJsSubpage ) {
-                                               $wgOut->wrapWikiMsg( "<div id='mw-userjsyoucanpreview'>\n$1\n</div>", array( 'userjsyoucanpreview' ) );
+                                               $out->wrapWikiMsg( "<div id='mw-userjsyoucanpreview'>\n$1\n</div>", array( 'userjsyoucanpreview' ) );
                                        }
                                }
                        }
                }
 
-               if ( $this->mTitle->getNamespace() != NS_MEDIAWIKI && $this->mTitle->isProtected( 'edit' ) ) {
+               if ( $title->getNamespace() != NS_MEDIAWIKI && $title->isProtected( 'edit' ) ) {
                        # Is the title semi-protected?
-                       if ( $this->mTitle->isSemiProtected() ) {
+                       if ( $title->isSemiProtected() ) {
                                $noticeMsg = 'semiprotectedpagewarning';
                        } else {
                                # Then it must be protected based on static groups (regular)
                                $noticeMsg = 'protectedpagewarning';
                        }
-                       LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '',
+                       LogEventsList::showLogExtract( $out, 'protect', $title, '',
                                array( 'lim' => 1, 'msgKey' => array( $noticeMsg ) ) );
                }
-               if ( $this->mTitle->isCascadeProtected() ) {
+
+               if ( $title->isCascadeProtected() ) {
                        # Is this page under cascading protection from some source pages?
-                       list( $cascadeSources, /* $restrictions */ ) = $this->mTitle->getCascadeProtectionSources();
+                       list( $cascadeSources, /* $restrictions */ ) = $title->getCascadeProtectionSources();
                        $notice = "<div class='mw-cascadeprotectedwarning'>\n$1\n";
                        $cascadeSourcesCount = count( $cascadeSources );
                        if ( $cascadeSourcesCount > 0 ) {
@@ -2339,10 +2386,11 @@ class EditPage {
                                }
                        }
                        $notice .= '</div>';
-                       $wgOut->wrapWikiMsg( $notice, array( 'cascadeprotectedwarning', $cascadeSourcesCount ) );
+                       $out->wrapWikiMsg( $notice, array( 'cascadeprotectedwarning', $cascadeSourcesCount ) );
                }
-               if ( !$this->mTitle->exists() && $this->mTitle->getRestrictions( 'create' ) ) {
-                       LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '',
+
+               if ( !$title->exists() && $title->getRestrictions( 'create' ) ) {
+                       LogEventsList::showLogExtract( $out, 'protect', $title, '',
                                array( 'lim' => 1,
                                        'showIfEmpty' => false,
                                        'msgKey' => array( 'titleprotectedwarning' ),
@@ -2353,21 +2401,22 @@ class EditPage {
                        $this->kblength = (int)( strlen( $this->textbox1 ) / 1024 );
                }
 
+               $lang = $context->getLanguage();
                if ( $this->tooBig || $this->kblength > $wgMaxArticleSize ) {
-                       $wgOut->wrapWikiMsg( "<div class='error' id='mw-edit-longpageerror'>\n$1\n</div>",
-                               array( 'longpageerror', $wgLang->formatNum( $this->kblength ), $wgLang->formatNum( $wgMaxArticleSize ) ) );
+                       $out->wrapWikiMsg( "<div class='error' id='mw-edit-longpageerror'>\n$1\n</div>",
+                               array( 'longpageerror', $lang->formatNum( $this->kblength ), $lang->formatNum( $wgMaxArticleSize ) ) );
                } else {
-                       if ( !wfMessage( 'longpage-hint' )->isDisabled() ) {
-                               $wgOut->wrapWikiMsg( "<div id='mw-edit-longpage-hint'>\n$1\n</div>",
-                                       array( 'longpage-hint', $wgLang->formatSize( strlen( $this->textbox1 ) ), strlen( $this->textbox1 ) )
+                       if ( !$context->msg( 'longpage-hint' )->isDisabled() ) {
+                               $out->wrapWikiMsg( "<div id='mw-edit-longpage-hint'>\n$1\n</div>",
+                                       array( 'longpage-hint', $lang->formatSize( strlen( $this->textbox1 ) ), strlen( $this->textbox1 ) )
                                );
                        }
                }
+
                # Add header copyright warning
                $this->showHeaderCopyrightWarning();
        }
 
-
        /**
         * Standard summary input and label (wgSummary), abstracted so EditPage
         * subclasses may reorganize the form.
@@ -2416,7 +2465,7 @@ class EditPage {
         * @return String
         */
        protected function showSummaryInput( $isSubjectPreview, $summary = "" ) {
-               global $wgOut, $wgContLang;
+               global $wgContLang;
                # Add a class if 'missingsummary' is triggered to allow styling of the summary line
                $summaryClass = $this->missingSummary ? 'mw-summarymissed' : 'mw-summary';
                if ( $isSubjectPreview ) {
@@ -2428,10 +2477,17 @@ class EditPage {
                                return;
                        }
                }
+
+               $context = $this->getArticle()->getContext();
                $summary = $wgContLang->recodeForEdit( $summary );
-               $labelText = wfMessage( $isSubjectPreview ? 'subject' : 'summary' )->parse();
-               list( $label, $input ) = $this->getSummaryInput( $summary, $labelText, array( 'class' => $summaryClass ), array() );
-               $wgOut->addHTML( "{$label} {$input}" );
+               $labelText = $context->msg( $isSubjectPreview ? 'subject' : 'summary' )->parse();
+               list( $label, $input ) = $this->getSummaryInput(
+                       $summary,
+                       $labelText,
+                       array( 'class' => $summaryClass ),
+                       array()
+               );
+               $context->getOutput()->addHTML( "{$label} {$input}" );
        }
 
        /**
@@ -2448,21 +2504,24 @@ class EditPage {
 
                global $wgParser;
 
+               $context = $this->getArticle()->getContext();
                if ( $isSubjectPreview ) {
-                       $summary = wfMessage( 'newsectionsummary', $wgParser->stripSectionName( $summary ) )
+                       $summary = $context->msg( 'newsectionsummary', $wgParser->stripSectionName( $summary ) )
                                ->inContentLanguage()->text();
                }
 
                $message = $isSubjectPreview ? 'subject-preview' : 'summary-preview';
 
-               $summary = wfMessage( $message )->parse() . Linker::commentBlock( $summary, $this->mTitle, $isSubjectPreview );
+               $summary = $context->msg( $message )->parse() .
+                       Linker::commentBlock( $summary, $this->getTitle(), $isSubjectPreview );
                return Xml::tags( 'div', array( 'class' => 'mw-summary-preview' ), $summary );
        }
 
        protected function showFormBeforeText() {
-               global $wgOut;
+               $out = $this->getArticle()->getContext()->getOutput();
                $section = htmlspecialchars( $this->section );
-               $wgOut->addHTML( <<<HTML
+
+               $out->addHTML( <<<HTML
 <input type='hidden' value="{$section}" name="wpSection" />
 <input type='hidden' value="{$this->starttime}" name="wpStarttime" />
 <input type='hidden' value="{$this->edittime}" name="wpEdittime" />
@@ -2470,13 +2529,15 @@ class EditPage {
 
 HTML
                );
+
                if ( !$this->checkUnicodeCompliantBrowser() ) {
-                       $wgOut->addHTML( Html::hidden( 'safemode', '1' ) );
+                       $out->addHTML( Html::hidden( 'safemode', '1' ) );
                }
        }
 
        protected function showFormAfterText() {
-               global $wgOut, $wgUser;
+               $out = $this->getArticle()->getContext()->getOutput();
+               $user = $this->getArticle()->getContext()->getUser();
                /**
                 * To make it harder for someone to slip a user a page
                 * which submits an edit form to the wiki without their
@@ -2489,7 +2550,7 @@ HTML
                 * include the constant suffix to prevent editing from
                 * broken text-mangling proxies.
                 */
-               $wgOut->addHTML( "\n" . Html::hidden( "wpEditToken", $wgUser->getEditToken() ) . "\n" );
+               $out->addHTML( "\n" . Html::hidden( "wpEditToken", $user->getEditToken() ) . "\n" );
        }
 
        /**
@@ -2517,16 +2578,18 @@ HTML
                        $attribs = array( 'style' => 'display:none;' );
                } else {
                        $classes = array(); // Textarea CSS
-                       if ( $this->mTitle->getNamespace() != NS_MEDIAWIKI && $this->mTitle->isProtected( 'edit' ) ) {
+                       $title = $this->getTitle();
+
+                       if ( $title->getNamespace() != NS_MEDIAWIKI && $title->isProtected( 'edit' ) ) {
                                # Is the title semi-protected?
-                               if ( $this->mTitle->isSemiProtected() ) {
+                               if ( $title->isSemiProtected() ) {
                                        $classes[] = 'mw-textarea-sprotected';
                                } else {
                                        # Then it must be protected based on static groups (regular)
                                        $classes[] = 'mw-textarea-protected';
                                }
                                # Is the title cascade-protected?
-                               if ( $this->mTitle->isCascadeProtected() ) {
+                               if ( $title->isCascadeProtected() ) {
                                        $classes[] = 'mw-textarea-cprotected';
                                }
                        }
@@ -2553,8 +2616,6 @@ HTML
        }
 
        protected function showTextbox( $text, $name, $customAttribs = array() ) {
-               global $wgOut, $wgUser;
-
                $wikitext = $this->safeUnicodeOutput( $text );
                if ( strval( $wikitext ) !== '' ) {
                        // Ensure there's a newline at the end, otherwise adding lines
@@ -2564,24 +2625,26 @@ HTML
                        $wikitext .= "\n";
                }
 
+               $context = $this->getArticle()->getContext();
+               $user = $context->getUser();
                $attribs = $customAttribs + array(
                        'accesskey' => ',',
                        'id'   => $name,
-                       'cols' => $wgUser->getIntOption( 'cols' ),
-                       'rows' => $wgUser->getIntOption( 'rows' ),
+                       'cols' => $user->getIntOption( 'cols' ),
+                       'rows' => $user->getIntOption( 'rows' ),
                        'style' => '' // avoid php notices when appending preferences (appending allows customAttribs['style'] to still work
                );
 
-               $pageLang = $this->mTitle->getPageLanguage();
+               $pageLang = $this->getTitle()->getPageLanguage();
                $attribs['lang'] = $pageLang->getCode();
                $attribs['dir'] = $pageLang->getDir();
 
-               $wgOut->addHTML( Html::textarea( $name, $wikitext, $attribs ) );
+               $context->getOutput()->addHTML( Html::textarea( $name, $wikitext, $attribs ) );
        }
 
        protected function displayPreviewArea( $previewOutput, $isOnTop = false ) {
-               global $wgOut;
                $classes = array();
+
                if ( $isOnTop ) {
                        $classes[] = 'ontop';
                }
@@ -2592,20 +2655,22 @@ HTML
                        $attribs['style'] = 'display: none;';
                }
 
-               $wgOut->addHTML( Xml::openElement( 'div', $attribs ) );
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
+               $out->addHTML( Xml::openElement( 'div', $attribs ) );
 
                if ( $this->formtype == 'preview' ) {
                        $this->showPreview( $previewOutput );
                }
 
-               $wgOut->addHTML( '</div>' );
+               $out->addHTML( '</div>' );
 
                if ( $this->formtype == 'diff' ) {
                        try {
                                $this->showDiff();
                        } catch ( MWContentSerializationException $ex ) {
-                               $msg = wfMessage( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
-                               $wgOut->addWikiText( '<div class="error">' . $msg->text() . '</div>');
+                               $msg = $context->msg( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
+                               $out->addWikiText( '<div class="error">' . $msg->text() . '</div>');
                        }
                }
        }
@@ -2617,16 +2682,18 @@ HTML
         * @param $text String: the HTML to be output for the preview.
         */
        protected function showPreview( $text ) {
-               global $wgOut;
-               if ( $this->mTitle->getNamespace() == NS_CATEGORY ) {
-                       $this->mArticle->openShowCategory();
+               if ( $this->getTitle()->getNamespace() == NS_CATEGORY ) {
+                       $this->getArticle()->openShowCategory();
                }
                # This hook seems slightly odd here, but makes things more
                # consistent for extensions.
-               wfRunHooks( 'OutputPageBeforeHTML', array( &$wgOut, &$text ) );
-               $wgOut->addHTML( $text );
-               if ( $this->mTitle->getNamespace() == NS_CATEGORY ) {
-                       $this->mArticle->closeShowCategory();
+               $out = $this->getArticle()->getContext()->getOutput();
+               wfRunHooks( 'OutputPageBeforeHTML', array( &$out, &$text ) );
+
+               $out->addHTML( $text );
+
+               if ( $this->getTitle()->getNamespace() == NS_CATEGORY ) {
+                       $this->getArticle()->closeShowCategory();
                }
        }
 
@@ -2638,12 +2705,13 @@ HTML
         * save and then make a comparison.
         */
        function showDiff() {
-               global $wgUser, $wgContLang, $wgOut;
+               global $wgContLang;
 
                $oldtitlemsg = 'currentrev';
                # if message does not exist, show diff against the preloaded default
-               if( $this->mTitle->getNamespace() == NS_MEDIAWIKI && !$this->mTitle->exists() ) {
-                       $oldtext = $this->mTitle->getDefaultMessageText();
+               $title = $this->getTitle();
+               if( $title->getNamespace() == NS_MEDIAWIKI && !$title->exists() ) {
+                       $oldtext = $title->getDefaultMessageText();
                        if( $oldtext !== false ) {
                                $oldtitlemsg = 'defaultmessagetext';
                                $oldContent = $this->toEditContent( $oldtext );
@@ -2656,21 +2724,25 @@ HTML
 
                $textboxContent = $this->toEditContent( $this->textbox1 );
 
-               $newContent = $this->mArticle->replaceSectionContent(
-                                                       $this->section, $textboxContent,
-                                                       $this->summary, $this->edittime );
+               $newContent = $this->getArticle()->replaceSectionContent(
+                       $this->section, $textboxContent,
+                       $this->summary, $this->edittime
+               );
+
+               $context = $this->getArticle()->getContext();
+               $user = $context->getUser();
 
                if ( $newContent ) {
                        ContentHandler::runLegacyHooks( 'EditPageGetDiffText', array( $this, &$newContent ) );
                        wfRunHooks( 'EditPageGetDiffContent', array( $this, &$newContent ) );
 
-                       $popts = ParserOptions::newFromUserAndLang( $wgUser, $wgContLang );
-                       $newContent = $newContent->preSaveTransform( $this->mTitle, $wgUser, $popts );
+                       $popts = ParserOptions::newFromUserAndLang( $user, $wgContLang );
+                       $newContent = $newContent->preSaveTransform( $this->getTitle(), $user, $popts );
                }
 
                if ( ( $oldContent && !$oldContent->isEmpty() ) || ( $newContent && !$newContent->isEmpty() ) ) {
-                       $oldtitle = wfMessage( $oldtitlemsg )->parse();
-                       $newtitle = wfMessage( 'yourtext' )->parse();
+                       $oldtitle = $context->msg( $oldtitlemsg )->parse();
+                       $newtitle = $context->msg( 'yourtext' )->parse();
 
                        if ( !$oldContent ) {
                                $oldContent = $newContent->getContentHandler()->makeEmptyContent();
@@ -2680,7 +2752,7 @@ HTML
                                $newContent = $oldContent->getContentHandler()->makeEmptyContent();
                        }
 
-                       $de = $oldContent->getContentHandler()->createDifferenceEngine( $this->mArticle->getContext() );
+                       $de = $oldContent->getContentHandler()->createDifferenceEngine( $context );
                        $de->setContent( $oldContent, $newContent );
 
                        $difftext = $de->getDiff( $oldtitle, $newtitle );
@@ -2689,7 +2761,7 @@ HTML
                        $difftext = '';
                }
 
-               $wgOut->addHTML( '<div id="wikiDiff">' . $difftext . '</div>' );
+               $context->getOutput()->addHTML( '<div id="wikiDiff">' . $difftext . '</div>' );
        }
 
        /**
@@ -2697,10 +2769,13 @@ HTML
         */
        protected function showHeaderCopyrightWarning() {
                $msg = 'editpage-head-copy-warn';
-               if ( !wfMessage( $msg )->isDisabled() ) {
-                       global $wgOut;
-                       $wgOut->wrapWikiMsg( "<div class='editpage-head-copywarn'>\n$1\n</div>",
-                               'editpage-head-copy-warn' );
+               $context = $this->getArticle()->getContext();
+
+               if ( !$context->msg( $msg )->isDisabled() ) {
+                       $context->getOutput()->wrapWikiMsg(
+                               "<div class='editpage-head-copywarn'>\n$1\n</div>",
+                               'editpage-head-copy-warn'
+                       );
                }
        }
 
@@ -2714,19 +2789,22 @@ HTML
         */
        protected function showTosSummary() {
                $msg = 'editpage-tos-summary';
-               wfRunHooks( 'EditPageTosSummary', array( $this->mTitle, &$msg ) );
-               if ( !wfMessage( $msg )->isDisabled() ) {
-                       global $wgOut;
-                       $wgOut->addHTML( '<div class="mw-tos-summary">' );
-                       $wgOut->addWikiMsg( $msg );
-                       $wgOut->addHTML( '</div>' );
+               wfRunHooks( 'EditPageTosSummary', array( $this->getTitle(), &$msg ) );
+
+               $context = $this->getArticle()->getContext();
+               if ( !$context->msg( $msg )->isDisabled() ) {
+                       $out = $context->getOutput();
+
+                       $out->addHTML( '<div class="mw-tos-summary">' );
+                       $out->addWikiMsg( $msg );
+                       $out->addHTML( '</div>' );
                }
        }
 
        protected function showEditTools() {
-               global $wgOut;
-               $wgOut->addHTML( '<div class="mw-editTools">' .
-                       wfMessage( 'edittools' )->inContentLanguage()->parse() .
+               $context = $this->getArticle()->getContext();
+               $context->getOutput()->addHTML( '<div class="mw-editTools">' .
+                       $context->msg( 'edittools' )->inContentLanguage()->parse() .
                        '</div>' );
        }
 
@@ -2736,11 +2814,12 @@ HTML
         * Renamed to getCopyrightWarning(), old name kept around for backwards compatibility
         */
        protected function getCopywarn() {
-               return self::getCopyrightWarning( $this->mTitle );
+               return self::getCopyrightWarning( $this->getTitle() );
        }
 
        public static function getCopyrightWarning( $title ) {
                global $wgRightsText;
+
                if ( $wgRightsText ) {
                        $copywarnMsg = array( 'copyrightwarning',
                                '[[' . wfMessage( 'copyrightpage' )->inContentLanguage()->text() . ']]',
@@ -2757,36 +2836,40 @@ HTML
        }
 
        protected function showStandardInputs( &$tabindex = 2 ) {
-               global $wgOut;
-               $wgOut->addHTML( "<div class='editOptions'>\n" );
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
+
+               $out->addHTML( "<div class='editOptions'>\n" );
 
                if ( $this->section != 'new' ) {
                        $this->showSummaryInput( false, $this->summary );
-                       $wgOut->addHTML( $this->getSummaryPreview( false, $this->summary ) );
+                       $out->addHTML( $this->getSummaryPreview( false, $this->summary ) );
                }
 
                $checkboxes = $this->getCheckboxes( $tabindex,
                        array( 'minor' => $this->minoredit, 'watch' => $this->watchthis ) );
-               $wgOut->addHTML( "<div class='editCheckboxes'>" . implode( $checkboxes, "\n" ) . "</div>\n" );
+               $out->addHTML( "<div class='editCheckboxes'>" . implode( $checkboxes, "\n" ) . "</div>\n" );
 
                // Show copyright warning.
-               $wgOut->addWikiText( $this->getCopywarn() );
-               $wgOut->addHTML( $this->editFormTextAfterWarn );
+               $out->addWikiText( $this->getCopywarn() );
+               $out->addHTML( $this->editFormTextAfterWarn );
 
-               $wgOut->addHTML( "<div class='editButtons'>\n" );
-               $wgOut->addHTML( implode( $this->getEditButtons( $tabindex ), "\n" ) . "\n" );
+               $out->addHTML( "<div class='editButtons'>\n" );
+               $out->addHTML( implode( $this->getEditButtons( $tabindex ), "\n" ) . "\n" );
 
                $cancel = $this->getCancelLink();
                if ( $cancel !== '' ) {
-                       $cancel .= wfMessage( 'pipe-separator' )->text();
+                       $cancel .= $context->msg( 'pipe-separator' )->text();
                }
-               $edithelpurl = Skin::makeInternalOrExternalUrl( wfMessage( 'edithelppage' )->inContentLanguage()->text() );
+               $edithelpurl = Skin::makeInternalOrExternalUrl(
+                       $context->msg( 'edithelppage' )->inContentLanguage()->text()
+               );
                $edithelp = '<a target="helpwindow" href="' . $edithelpurl . '">' .
-                       wfMessage( 'edithelp' )->escaped() . '</a> ' .
-                       wfMessage( 'newwindow' )->parse();
-               $wgOut->addHTML( "      <span class='cancelLink'>{$cancel}</span>\n" );
-               $wgOut->addHTML( "      <span class='editHelp'>{$edithelp}</span>\n" );
-               $wgOut->addHTML( "</div><!-- editButtons -->\n</div><!-- editOptions -->\n" );
+                       $context->msg( 'edithelp' )->escaped() . '</a> ' .
+                       $context->msg( 'newwindow' )->parse();
+               $out->addHTML( "        <span class='cancelLink'>{$cancel}</span>\n" );
+               $out->addHTML( "        <span class='editHelp'>{$edithelp}</span>\n" );
+               $out->addHTML( "</div><!-- editButtons -->\n</div><!-- editOptions -->\n" );
        }
 
        /**
@@ -2794,23 +2877,24 @@ HTML
         * If you want to use another entry point to this function, be careful.
         */
        protected function showConflict() {
-               global $wgOut;
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
 
-               if ( wfRunHooks( 'EditPageBeforeConflictDiff', array( &$this, &$wgOut ) ) ) {
-                       $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourdiff" );
+               if ( wfRunHooks( 'EditPageBeforeConflictDiff', array( &$this, &$out ) ) ) {
+                       $out->wrapWikiMsg( '<h2>$1</h2>', "yourdiff" );
 
                        $content1 = $this->toEditContent( $this->textbox1 );
                        $content2 = $this->toEditContent( $this->textbox2 );
 
                        $handler = ContentHandler::getForModelID( $this->contentModel );
-                       $de = $handler->createDifferenceEngine( $this->mArticle->getContext() );
+                       $de = $handler->createDifferenceEngine( $context );
                        $de->setContent( $content2, $content1 );
                        $de->showDiff(
-                               wfMessage( 'yourtext' )->parse(),
-                               wfMessage( 'storedversion' )->text()
+                               $context->msg( 'yourtext' )->parse(),
+                               $context->msg( 'storedversion' )->text()
                        );
 
-                       $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourtext" );
+                       $out->wrapWikiMsg( '<h2>$1</h2>', "yourtext" );
                        $this->showTextbox2();
                }
        }
@@ -2826,7 +2910,7 @@ HTML
 
                return Linker::linkKnown(
                        $this->getContextTitle(),
-                       wfMessage( 'cancel' )->parse(),
+                       $this->getArticle()->getContext()->msg( 'cancel' )->parse(),
                        array( 'id' => 'mw-editform-cancel' ),
                        $cancelParams
                );
@@ -2858,7 +2942,7 @@ HTML
 
                $this->deletedSinceEdit = false;
 
-               if ( $this->mTitle->isDeletedQuick() ) {
+               if ( $this->getTitle()->isDeletedQuick() ) {
                        $this->lastDelete = $this->getLastDelete();
                        if ( $this->lastDelete ) {
                                $deleteTime = wfTimestamp( TS_MW, $this->lastDelete->log_timestamp );
@@ -2873,6 +2957,8 @@ HTML
 
        protected function getLastDelete() {
                $dbr = wfGetDB( DB_SLAVE );
+               $title = $this->getTitle();
+
                $data = $dbr->selectRow(
                        array( 'logging', 'user' ),
                        array( 'log_type',
@@ -2885,8 +2971,8 @@ HTML
                                   'log_params',
                                   'log_deleted',
                                   'user_name' ),
-                       array( 'log_namespace' => $this->mTitle->getNamespace(),
-                                  'log_title' => $this->mTitle->getDBkey(),
+                       array( 'log_namespace' => $title->getNamespace(),
+                                  'log_title' => $title->getDBkey(),
                                   'log_type' => 'delete',
                                   'log_action' => 'delete',
                                   'user_id=log_user' ),
@@ -2895,14 +2981,16 @@ HTML
                );
                // Quick paranoid permission checks...
                if ( is_object( $data ) ) {
+                       $context = $this->getArticle()->getContext();
                        if ( $data->log_deleted & LogPage::DELETED_USER ) {
-                               $data->user_name = wfMessage( 'rev-deleted-user' )->escaped();
+                               $data->user_name = $context->msg( 'rev-deleted-user' )->escaped();
                        }
 
                        if ( $data->log_deleted & LogPage::DELETED_COMMENT ) {
-                               $data->log_comment = wfMessage( 'rev-deleted-comment' )->escaped();
+                               $data->log_comment = $context->msg( 'rev-deleted-comment' )->escaped();
                        }
                }
+
                return $data;
        }
 
@@ -2912,10 +3000,14 @@ HTML
         * @return string
         */
        function getPreviewText() {
-               global $wgOut, $wgUser, $wgRawHtml, $wgLang;
+               global $wgRawHtml;
 
                wfProfileIn( __METHOD__ );
 
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
+               $title = $this->getTitle();
+
                if ( $wgRawHtml && !$this->mTokenOk ) {
                        // Could be an offsite preview attempt. This is very unsafe if
                        // HTML is enabled, as it could be an attack.
@@ -2924,8 +3016,9 @@ HTML
                                // Do not put big scary notice, if previewing the empty
                                // string, which happens when you initially edit
                                // a category page, due to automatic preview-on-open.
-                               $parsedNote = $wgOut->parse( "<div class='previewnote'>" .
-                                       wfMessage( 'session_fail_preview_html' )->text() . "</div>", true, /* interface */true );
+                               $parsedNote = $out->parse( "<div class='previewnote'>" .
+                                       $context->msg( 'session_fail_preview_html' )->text() .
+                                       "</div>", true, /* interface */true );
                        }
                        wfProfileOut( __METHOD__ );
                        return $parsedNote;
@@ -2938,28 +3031,29 @@ HTML
 
                        if ( $this->mTriedSave && !$this->mTokenOk ) {
                                if ( $this->mTokenOkExceptSuffix ) {
-                                       $note = wfMessage( 'token_suffix_mismatch' )->plain() ;
+                                       $note = $context->msg( 'token_suffix_mismatch' )->plain() ;
 
                                } else {
-                                       $note = wfMessage( 'session_fail_preview' )->plain() ;
+                                       $note = $context->msg( 'session_fail_preview' )->plain() ;
                                }
                        } elseif ( $this->incompleteForm ) {
-                               $note = wfMessage( 'edit_form_incomplete' )->plain() ;
+                               $note = $context->msg( 'edit_form_incomplete' )->plain() ;
                        } else {
-                               $note = wfMessage( 'previewnote' )->plain() .
-                                       ' [[#' . self::EDITFORM_ID . '|' . $wgLang->getArrow() . ' ' . wfMessage( 'continue-editing' )->text() . ']]';
+                               $note = $context->msg( 'previewnote' )->plain() .
+                                       ' [[#' . self::EDITFORM_ID . '|' . $context->getLanguage()->getArrow() . ' ' .
+                                       $context->msg( 'continue-editing' )->text() . ']]';
                        }
 
-                       $parserOptions = $this->mArticle->makeParserOptions( $this->mArticle->getContext() );
+                       $parserOptions = $this->getArticle()->makeParserOptions( $context );
                        $parserOptions->setEditSection( false );
                        $parserOptions->setIsPreview( true );
                        $parserOptions->setIsSectionPreview( !is_null($this->section) && $this->section !== '' );
 
                        # don't parse non-wikitext pages, show message about preview
-                       if ( $this->mTitle->isCssJsSubpage() || $this->mTitle->isCssOrJsPage() ) {
-                               if( $this->mTitle->isCssJsSubpage() ) {
+                       if ( $title->isCssJsSubpage() || $title->isCssOrJsPage() ) {
+                               if( $title->isCssJsSubpage() ) {
                                        $level = 'user';
-                               } elseif( $this->mTitle->isCssOrJsPage() ) {
+                               } elseif( $title->isCssOrJsPage() ) {
                                        $level = 'site';
                                } else {
                                        $level = false;
@@ -2976,15 +3070,16 @@ HTML
                                # Used messages to make sure grep find them:
                                # Messages: usercsspreview, userjspreview, sitecsspreview, sitejspreview
                                if( $level && $format ) {
-                                       $note = "<div id='mw-{$level}{$format}preview'>" . wfMessage( "{$level}{$format}preview" )->text()  . "</div>";
+                                       $note = "<div id='mw-{$level}{$format}preview'>" .
+                                               $context->msg( "{$level}{$format}preview" )->text()  .
+                                               "</div>";
                                }
                        }
 
                        $rt = $content->getRedirectChain();
                        if ( $rt ) {
-                               $previewHTML = $this->mArticle->viewRedirect( $rt, false );
+                               $previewHTML = $this->getArticle()->viewRedirect( $rt, false );
                        } else {
-
                                # If we're adding a comment, we need to show the
                                # summary as the headline
                                if ( $this->section === "new" && $this->summary !== "" ) {
@@ -3000,34 +3095,34 @@ HTML
                                # For CSS/JS pages, we should have called the ShowRawCssJs hook here.
                                # But it's now deprecated, so never mind
 
-                               $content = $content->preSaveTransform( $this->mTitle, $wgUser, $parserOptions );
-                               $parserOutput = $content->getParserOutput( $this->getArticle()->getTitle(), null, $parserOptions );
+                               $content = $content->preSaveTransform( $title, $context->getUser(), $parserOptions );
+                               $parserOutput = $content->getParserOutput( $title, null, $parserOptions );
 
                                $previewHTML = $parserOutput->getText();
                                $this->mParserOutput = $parserOutput;
-                               $wgOut->addParserOutputNoText( $parserOutput );
+                               $out->addParserOutputNoText( $parserOutput );
 
                                if ( count( $parserOutput->getWarnings() ) ) {
                                        $note .= "\n\n" . implode( "\n\n", $parserOutput->getWarnings() );
                                }
                        }
                } catch ( MWContentSerializationException $ex ) {
-                       $m = wfMessage('content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
+                       $m = $context->msg('content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
                        $note .= "\n\n" . $m->parse();
                        $previewHTML = '';
                }
 
                if ( $this->isConflict ) {
-                       $conflict = '<h2 id="mw-previewconflict">' . wfMessage( 'previewconflict' )->escaped() . "</h2>\n";
+                       $conflict = '<h2 id="mw-previewconflict">' . $context->msg( 'previewconflict' )->escaped() . "</h2>\n";
                } else {
                        $conflict = '<hr />';
                }
 
                $previewhead = "<div class='previewnote'>\n" .
-                       '<h2 id="mw-previewheader">' . wfMessage( 'preview' )->escaped() . "</h2>" .
-                       $wgOut->parse( $note, true, /* interface */true ) . $conflict . "</div>\n";
+                       '<h2 id="mw-previewheader">' . $context->msg( 'preview' )->escaped() . "</h2>" .
+                       $out->parse( $note, true, /* interface */true ) . $conflict . "</div>\n";
 
-               $pageLang = $this->mTitle->getPageLanguage();
+               $pageLang = $title->getPageLanguage();
                $attribs = array( 'lang' => $pageLang->getCode(), 'dir' => $pageLang->getDir(),
                        'class' => 'mw-content-' . $pageLang->getDir() );
                $previewHTML = Html::rawElement( 'div', $attribs, $previewHTML );
@@ -3052,7 +3147,7 @@ HTML
                        }
                        return $templates;
                } else {
-                       return $this->mTitle->getTemplateLinksFrom();
+                       return $this->getTitle()->getTemplateLinksFrom();
                }
        }
 
@@ -3233,18 +3328,18 @@ HTML
         * @return array
         */
        public function getCheckboxes( &$tabindex, $checked ) {
-               global $wgUser;
-
                $checkboxes = array();
+               $context = $this->getArticle()->getContext();
+               $user = $context->getUser();
 
                // don't show the minor edit checkbox if it's a new page or section
                if ( !$this->isNew ) {
                        $checkboxes['minor'] = '';
-                       $minorLabel = wfMessage( 'minoredit' )->parse();
-                       if ( $wgUser->isAllowed( 'minoredit' ) ) {
+                       $minorLabel = $context->msg( 'minoredit' )->parse();
+                       if ( $user->isAllowed( 'minoredit' ) ) {
                                $attribs = array(
                                        'tabindex'  => ++$tabindex,
-                                       'accesskey' => wfMessage( 'accesskey-minoredit' )->text(),
+                                       'accesskey' => $context->msg( 'accesskey-minoredit' )->text(),
                                        'id'        => 'wpMinoredit',
                                );
                                $checkboxes['minor'] =
@@ -3255,12 +3350,13 @@ HTML
                        }
                }
 
-               $watchLabel = wfMessage( 'watchthis' )->parse();
+               $watchLabel = $context->msg( 'watchthis' )->parse();
                $checkboxes['watch'] = '';
-               if ( $wgUser->isLoggedIn() ) {
+
+               if ( $user->isLoggedIn() ) {
                        $attribs = array(
                                'tabindex'  => ++$tabindex,
-                               'accesskey' => wfMessage( 'accesskey-watch' )->text(),
+                               'accesskey' => $context->msg( 'accesskey-watch' )->text(),
                                'id'        => 'wpWatchthis',
                        );
                        $checkboxes['watch'] =
@@ -3269,7 +3365,9 @@ HTML
                                Xml::expandAttributes( array( 'title' => Linker::titleAttrib( 'watch', 'withaccess' ) ) ) .
                                ">{$watchLabel}</label>";
                }
+
                wfRunHooks( 'EditPageBeforeEditChecks', array( &$this, &$checkboxes, &$tabindex ) );
+
                return $checkboxes;
        }
 
@@ -3283,15 +3381,16 @@ HTML
         */
        public function getEditButtons( &$tabindex ) {
                $buttons = array();
+               $context = $this->getArticle()->getContext();
 
                $temp = array(
                        'id'        => 'wpSave',
                        'name'      => 'wpSave',
                        'type'      => 'submit',
                        'tabindex'  => ++$tabindex,
-                       'value'     => wfMessage( 'savearticle' )->text(),
-                       'accesskey' => wfMessage( 'accesskey-save' )->text(),
-                       'title'     => wfMessage( 'tooltip-save' )->text() . ' [' . wfMessage( 'accesskey-save' )->text() . ']',
+                       'value'     => $context->msg( 'savearticle' )->text(),
+                       'accesskey' => $context->msg( 'accesskey-save' )->text(),
+                       'title'     => $context->msg( 'tooltip-save' )->text() . ' [' . $context->msg( 'accesskey-save' )->text() . ']',
                );
                $buttons['save'] = Xml::element( 'input', $temp, '' );
 
@@ -3301,9 +3400,9 @@ HTML
                        'name'      => 'wpPreview',
                        'type'      => 'submit',
                        'tabindex'  => $tabindex,
-                       'value'     => wfMessage( 'showpreview' )->text(),
-                       'accesskey' => wfMessage( 'accesskey-preview' )->text(),
-                       'title'     => wfMessage( 'tooltip-preview' )->text() . ' [' . wfMessage( 'accesskey-preview' )->text() . ']',
+                       'value'     => $context->msg( 'showpreview' )->text(),
+                       'accesskey' => $context->msg( 'accesskey-preview' )->text(),
+                       'title'     => $context->msg( 'tooltip-preview' )->text() . ' [' . $context->msg( 'accesskey-preview' )->text() . ']',
                );
                $buttons['preview'] = Xml::element( 'input', $temp, '' );
                $buttons['live'] = '';
@@ -3313,9 +3412,9 @@ HTML
                        'name'      => 'wpDiff',
                        'type'      => 'submit',
                        'tabindex'  => ++$tabindex,
-                       'value'     => wfMessage( 'showdiff' )->text(),
-                       'accesskey' => wfMessage( 'accesskey-diff' )->text(),
-                       'title'     => wfMessage( 'tooltip-diff' )->text() . ' [' . wfMessage( 'accesskey-diff' )->text() . ']',
+                       'value'     => $context->msg( 'showdiff' )->text(),
+                       'accesskey' => $context->msg( 'accesskey-diff' )->text(),
+                       'title'     => $context->msg( 'tooltip-diff' )->text() . ' [' . $context->msg( 'accesskey-diff' )->text() . ']',
                );
                $buttons['diff'] = Xml::element( 'input', $temp, '' );
 
@@ -3336,8 +3435,7 @@ HTML
         *       initialization, so check whether that's a problem.
         */
        function livePreview() {
-               global $wgOut;
-               $wgOut->disable();
+               $this->getArticle()->getContext()->getOutput()->disable();
                header( 'Content-type: text/xml; charset=utf-8' );
                header( 'Cache-control: no-cache' );
 
@@ -3360,9 +3458,7 @@ HTML
         */
        function blockedPage() {
                wfDeprecated( __METHOD__, '1.19' );
-               global $wgUser;
-
-               throw new UserBlockedError( $wgUser->getBlock() );
+               throw new UserBlockedError( $this->getArticle()->getContext()->getUser()->getBlock() );
        }
 
        /**
@@ -3383,7 +3479,7 @@ HTML
         */
        function noCreatePermission() {
                wfDeprecated( __METHOD__, '1.19' );
-               $permission = $this->mTitle->isTalkPage() ? 'createtalk' : 'createpage';
+               $permission = $this->getTitle()->isTalkPage() ? 'createtalk' : 'createpage';
                throw new PermissionsError( $permission );
        }
 
@@ -3392,15 +3488,16 @@ HTML
         * they have attempted to edit a nonexistent section.
         */
        function noSuchSectionPage() {
-               global $wgOut;
+               $context = $this->getArticle()->getContext();
+               $out = $context->getOutput();
 
-               $wgOut->prepareErrorPage( wfMessage( 'nosuchsectiontitle' ) );
+               $out->prepareErrorPage( $context->msg( 'nosuchsectiontitle' ) );
 
-               $res = wfMessage( 'nosuchsectiontext', $this->section )->parseAsBlock();
+               $res = $context->msg( 'nosuchsectiontext', $this->section )->parseAsBlock();
                wfRunHooks( 'EditPageNoSuchSection', array( &$this, &$res ) );
-               $wgOut->addHTML( $res );
 
-               $wgOut->returnToMain( false, $this->mTitle );
+               $out->addHTML( $res );
+               $out->returnToMain( false, $this->getTitle() );
        }
 
        /**
@@ -3432,28 +3529,30 @@ HTML
         * @param $match string|Array|bool Text (or array of texts) which triggered one or more filters
         */
        public function spamPageWithContent( $match = false ) {
-               global $wgOut, $wgLang;
                $this->textbox2 = $this->textbox1;
 
+               $context = $this->getArticle()->getContext();
                if( is_array( $match ) ){
-                       $match = $wgLang->listToText( $match );
+                       $match = $context->getLanguage()->listToText( $match );
                }
-               $wgOut->prepareErrorPage( wfMessage( 'spamprotectiontitle' ) );
 
-               $wgOut->addHTML( '<div id="spamprotected">' );
-               $wgOut->addWikiMsg( 'spamprotectiontext' );
+               $out = $context->getOutput();
+               $out->prepareErrorPage( $context->msg( 'spamprotectiontitle' ) );
+
+               $out->addHTML( '<div id="spamprotected">' );
+               $out->addWikiMsg( 'spamprotectiontext' );
                if ( $match ) {
-                       $wgOut->addWikiMsg( 'spamprotectionmatch', wfEscapeWikiText( $match ) );
+                       $out->addWikiMsg( 'spamprotectionmatch', wfEscapeWikiText( $match ) );
                }
-               $wgOut->addHTML( '</div>' );
+               $out->addHTML( '</div>' );
 
-               $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourdiff" );
+               $out->wrapWikiMsg( '<h2>$1</h2>', "yourdiff" );
                $this->showDiff();
 
-               $wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourtext" );
+               $out->wrapWikiMsg( '<h2>$1</h2>', "yourtext" );
                $this->showTextbox2();
 
-               $wgOut->addReturnTo( $this->getContextTitle(), array( 'action' => 'edit' ) );
+               $out->addReturnTo( $this->getContextTitle(), array( 'action' => 'edit' ) );
        }
 
        /**
index 984da69..afba498 100644 (file)
@@ -600,15 +600,18 @@ class Revision implements IDBAccessObject {
                                $this->mContent = $handler->unserializeContent( $this->mText );
                        }
 
-                       // if we have a Title object, override mPage. Useful for testing and convenience.
-                       if ( isset( $row['title'] ) ) {
-                               $this->mTitle     = $row['title'];
-                               $this->mPage      = $this->mTitle->getArticleID();
-                       } else {
-                               $this->mTitle     = null; // Load on demand if needed
+                       // If we have a Title object, make sure it is consistent with mPage.
+                       if ( $this->mTitle && $this->mTitle->exists() ) {
+                               if ( $this->mPage === null ) {
+                                       // if the page ID wasn't known, set it now
+                                       $this->mPage = $this->mTitle->getArticleID();
+                               } elseif ( $this->mTitle->getArticleID() !== $this->mPage ) {
+                                       // got different page IDs, something is wrong.
+                                       wfWarn( "Page ID " . $this->mPage . " mismatches the ID "
+                                                       . $this->mTitle->getArticleID() . " provided by the Title object." );
+                               }
                        }
 
-                       // @todo: XXX: really? we are about to create a revision. it will usually then be the current one.
                        $this->mCurrent   = false;
 
                        // If we still have no length, see it we have the text to figure it out
index 2c4ea47..5aa0545 100644 (file)
@@ -916,7 +916,7 @@ class Sanitizer {
                // Reject problematic keywords and control characters
                if ( preg_match( '/[\000-\010\016-\037\177]/', $value ) ) {
                        return '/* invalid control char */';
-               } elseif ( preg_match( '! expression | filter\s*: | accelerator\s*: | url\s*\( | image\s*\( !ix', $value ) ) {
+               } elseif ( preg_match( '! expression | filter\s*: | accelerator\s*: | url\s*\( | image\s*\( | image-set\s*\( !ix', $value ) ) {
                        return '/* insecure input */';
                }
                return $value;
index e210eba..770b28e 100644 (file)
@@ -1216,6 +1216,14 @@ class User {
        public static function getDefaultOptions() {
                global $wgNamespacesToBeSearchedDefault, $wgDefaultUserOptions, $wgContLang, $wgDefaultSkin;
 
+               static $defOpt = null;
+               if ( !defined( 'MW_PHPUNIT_TEST' ) && $defOpt !== null ) {
+                       // Disabling this for the unit tests, as they rely on being able to change $wgContLang
+                       // mid-request and see that change reflected in the return value of this function.
+                       // Which is insane and would never happen during normal MW operation
+                       return $defOpt;
+               }
+
                $defOpt = $wgDefaultUserOptions;
                # default language setting
                $defOpt['variant'] = $wgContLang->getCode();
@@ -1225,12 +1233,6 @@ class User {
                }
                $defOpt['skin'] = $wgDefaultSkin;
 
-               // FIXME: Ideally we'd cache the results of this function so the hook is only run once,
-               // but that breaks the parser tests because they rely on being able to change $wgContLang
-               // mid-request and see that change reflected in the return value of this function.
-               // Which is insane and would never happen during normal MW operation, but is also not
-               // likely to get fixed unless and until we context-ify everything.
-               // See also https://www.mediawiki.org/wiki/Special:Code/MediaWiki/101488#c25275
                wfRunHooks( 'UserGetDefaultOptions', array( &$defOpt ) );
 
                return $defOpt;
index c148a5f..b525ff1 100644 (file)
@@ -1708,6 +1708,7 @@ class WikiPage extends Page implements IDBAccessObject {
 
                        $revision = new Revision( array(
                                'page'       => $this->getId(),
+                               'title'      => $this->getTitle(), // for determining the default content model
                                'comment'    => $summary,
                                'minor_edit' => $isminor,
                                'text'       => $serialized,
@@ -1835,6 +1836,7 @@ class WikiPage extends Page implements IDBAccessObject {
                        # Save the revision text...
                        $revision = new Revision( array(
                                'page'       => $newid,
+                               'title'      => $this->getTitle(), // for determining the default content model
                                'comment'    => $summary,
                                'minor_edit' => $isminor,
                                'text'       => $serialized,
index 0cbbad9..b1ccbe6 100644 (file)
@@ -9,36 +9,66 @@
  */
 
 $zh2Hant = array(
+'㐽' => '偑',
+'㑇' => '㑳',
+'㑈' => '倲',
+'㑔' => '㑯',
 '㑩' => '儸',
 '㓥' => '劏',
 '㔉' => '劚',
 '㖊' => '噚',
 '㖞' => '喎',
+'㘎' => '㘚',
+'㚯' => '㜄',
+'㛀' => '媰',
 '㛟' => '𡞵',
 '㛠' => '𡢃',
+'㛣' => '㜏',
+'㛤' => '孋',
 '㛿' => '𡠹',
 '㟆' => '㠏',
+'㟜' => '𡾱',
+'㤘' => '㥮',
+'㧏' => '掆',
+'㧐' => '㩳',
 '㧑' => '撝',
 '㧟' => '擓',
+'㧰' => '擽',
 '㨫' => '㩜',
+'㭎' => '棡',
+'㭏' => '椲',
+'㭣' => '𣙎',
+'㭤' => '樢',
+'㭴' => '樫',
 '㱩' => '殰',
 '㱮' => '殨',
 '㲿' => '瀇',
+'㳔' => '濧',
+'㳕' => '灡',
 '㳠' => '澾',
+'㳡' => '濄',
+'㳢' => '𣾷',
+'㳽' => '瀰',
 '㶉' => '鸂',
 '㶶' => '燶',
 '㶽' => '煱',
 '㺍' => '獱',
+'㻅' => '璯',
 '㻏' => '𤫩',
 '㻘' => '𤪺',
+'䀥' => '䁻',
 '䁖' => '瞜',
+'䂵' => '碽',
 '䅉' => '稏',
+'䅪' => '𥢢',
 '䇲' => '筴',
+'䉤' => '籔',
 '䌶' => '䊷',
 '䌷' => '紬',
 '䌸' => '縳',
 '䌹' => '絅',
 '䌺' => '䋙',
+'䌻' => '䋚',
 '䌼' => '綐',
 '䌽' => '綵',
 '䌾' => '䋻',
@@ -48,24 +78,34 @@ $zh2Hant = array(
 '䓕' => '薳',
 '䗖' => '螮',
 '䘛' => '𧝞',
+'䘞' => '𧜗',
 '䙊' => '𧜵',
+'䙌' => '䙡',
 '䙓' => '襬',
 '䜣' => '訢',
 '䜥' => '𧩙',
-'䜧' => '譅',
+'䜧' => '䜀',
+'䜩' => '讌',
 '䝙' => '貙',
 '䞌' => '𧵳',
 '䞍' => '䝼',
+'䞎' => '𧶧',
 '䞐' => '賰',
+'䟢' => '躎',
+'䢀' => '𨊰',
+'䢁' => '𨊸',
 '䢂' => '𨋢',
 '䥺' => '釾',
 '䥽' => '鏺',
+'䥾' => '䥱',
 '䥿' => '𨯅',
 '䦀' => '𨦫',
 '䦁' => '𨧜',
+'䦂' => '䥇',
 '䦃' => '鐯',
 '䦅' => '鐥',
-'䩄' => '靦',
+'䦶' => '䦛',
+'䦷' => '䦟',
 '䭪' => '𩞯',
 '䯃' => '𩣑',
 '䯄' => '騧',
@@ -136,6 +176,7 @@ $zh2Hant = array(
 '伞' => '傘',
 '伟' => '偉',
 '传' => '傳',
+'伡' => '俥',
 '伣' => '俔',
 '伤' => '傷',
 '伥' => '倀',
@@ -217,6 +258,7 @@ $zh2Hant = array(
 '刭' => '剄',
 '刹' => '剎',
 '刽' => '劊',
+'刾' => '㓨',
 '刿' => '劌',
 '剀' => '剴',
 '剂' => '劑',
@@ -321,6 +363,8 @@ $zh2Hant = array(
 '啬' => '嗇',
 '啭' => '囀',
 '啮' => '嚙',
+'啯' => '嘓',
+'啰' => '囉',
 '啴' => '嘽',
 '啸' => '嘯',
 '喷' => '噴',
@@ -410,6 +454,7 @@ $zh2Hant = array(
 '婵' => '嬋',
 '婶' => '嬸',
 '媪' => '媼',
+'媭' => '嬃',
 '嫒' => '嬡',
 '嫔' => '嬪',
 '嫱' => '嬙',
@@ -513,7 +558,9 @@ $zh2Hant = array(
 '归' => '歸',
 '当' => '當',
 '录' => '錄',
+'彟' => '彠',
 '彦' => '彥',
+'彨' => '彲',
 '彻' => '徹',
 '径' => '徑',
 '徕' => '徠',
@@ -648,6 +695,7 @@ $zh2Hant = array(
 '攒' => '攢',
 '敌' => '敵',
 '敛' => '斂',
+'敩' => '斆',
 '数' => '數',
 '斋' => '齋',
 '斓' => '斕',
@@ -719,6 +767,7 @@ $zh2Hant = array(
 '桧' => '檜',
 '桨' => '槳',
 '桩' => '樁',
+'桪' => '樳',
 '梦' => '夢',
 '梼' => '檮',
 '梾' => '棶',
@@ -727,9 +776,12 @@ $zh2Hant = array(
 '棁' => '梲',
 '棂' => '欞',
 '椁' => '槨',
+'椝' => '槼',
 '椟' => '櫝',
 '椠' => '槧',
+'椢' => '槶',
 '椤' => '欏',
+'椫' => '樿',
 '椭' => '橢',
 '楼' => '樓',
 '榄' => '欖',
@@ -783,6 +835,7 @@ $zh2Hant = array(
 '沥' => '瀝',
 '沦' => '淪',
 '沧' => '滄',
+'沨' => '渢',
 '沩' => '溈',
 '沪' => '滬',
 '泞' => '濘',
@@ -813,6 +866,7 @@ $zh2Hant = array(
 '浒' => '滸',
 '浓' => '濃',
 '浔' => '潯',
+'浕' => '濜',
 '涂' => '塗',
 '涛' => '濤',
 '涝' => '澇',
@@ -820,6 +874,7 @@ $zh2Hant = array(
 '涟' => '漣',
 '涠' => '潿',
 '涡' => '渦',
+'涢' => '溳',
 '涣' => '渙',
 '涤' => '滌',
 '润' => '潤',
@@ -833,7 +888,6 @@ $zh2Hant = array(
 '渐' => '漸',
 '渑' => '澠',
 '渔' => '漁',
-'渖' => '瀋',
 '渗' => '滲',
 '温' => '溫',
 '湾' => '灣',
@@ -841,6 +895,7 @@ $zh2Hant = array(
 '溃' => '潰',
 '溅' => '濺',
 '溆' => '漵',
+'溇' => '漊',
 '滗' => '潷',
 '滚' => '滾',
 '滞' => '滯',
@@ -861,6 +916,7 @@ $zh2Hant = array(
 '潍' => '濰',
 '潜' => '潛',
 '潴' => '瀦',
+'澛' => '瀂',
 '澜' => '瀾',
 '濑' => '瀨',
 '濒' => '瀕',
@@ -872,7 +928,6 @@ $zh2Hant = array(
 '灿' => '燦',
 '炀' => '煬',
 '炉' => '爐',
-'炖' => '燉',
 '炜' => '煒',
 '炝' => '熗',
 '点' => '點',
@@ -1014,12 +1069,13 @@ $zh2Hant = array(
 '硖' => '硤',
 '硗' => '磽',
 '硙' => '磑',
+'硚' => '礄',
 '确' => '確',
+'硵' => '磠',
 '硷' => '礆',
 '碍' => '礙',
 '碛' => '磧',
 '碜' => '磣',
-'碱' => '鹼',
 '礼' => '禮',
 '祃' => '禡',
 '祎' => '禕',
@@ -1081,6 +1137,7 @@ $zh2Hant = array(
 '篑' => '簣',
 '篓' => '簍',
 '篮' => '籃',
+'篯' => '籛',
 '篱' => '籬',
 '簖' => '籪',
 '籁' => '籟',
@@ -1256,6 +1313,8 @@ $zh2Hant = array(
 '羟' => '羥',
 '羡' => '羨',
 '翘' => '翹',
+'翙' => '翽',
+'翚' => '翬',
 '耢' => '耮',
 '耧' => '耬',
 '耸' => '聳',
@@ -1295,6 +1354,7 @@ $zh2Hant = array(
 '脶' => '腡',
 '脸' => '臉',
 '腊' => '臘',
+'腘' => '膕',
 '腭' => '齶',
 '腻' => '膩',
 '腼' => '靦',
@@ -1337,6 +1397,7 @@ $zh2Hant = array(
 '荚' => '莢',
 '荛' => '蕘',
 '荜' => '蓽',
+'荝' => '萴',
 '荞' => '蕎',
 '荟' => '薈',
 '荠' => '薺',
@@ -1405,6 +1466,7 @@ $zh2Hant = array(
 '蚀' => '蝕',
 '蚁' => '蟻',
 '蚂' => '螞',
+'蚃' => '蠁',
 '蚕' => '蠶',
 '蚬' => '蜆',
 '蛊' => '蠱',
@@ -1445,9 +1507,10 @@ $zh2Hant = array(
 '裢' => '褳',
 '裣' => '襝',
 '裤' => '褲',
-'裥' => 'è¥\87',
+'裥' => 'è¥\89',
 '褛' => '褸',
 '褴' => '襤',
+'襕' => '襴',
 '见' => '見',
 '观' => '觀',
 '觃' => '覎',
@@ -1469,6 +1532,7 @@ $zh2Hant = array(
 '触' => '觸',
 '觯' => '觶',
 '訚' => '誾',
+'詟' => '讋',
 '誉' => '譽',
 '誊' => '謄',
 '讠' => '訁',
@@ -2209,6 +2273,7 @@ $zh2Hant = array(
 '颠' => '顛',
 '颡' => '顙',
 '颢' => '顥',
+'颣' => '纇',
 '颤' => '顫',
 '颥' => '顬',
 '颦' => '顰',
@@ -2344,6 +2409,7 @@ $zh2Hant = array(
 '髋' => '髖',
 '髌' => '髕',
 '鬓' => '鬢',
+'鬶' => '鬹',
 '魇' => '魘',
 '魉' => '魎',
 '鱼' => '魚',
@@ -2404,7 +2470,6 @@ $zh2Hant = array(
 '鲳' => '鯧',
 '鲴' => '鯝',
 '鲵' => '鯢',
-'鲶' => '鯰',
 '鲷' => '鯛',
 '鲸' => '鯨',
 '鲹' => '鰺',
@@ -2570,9 +2635,144 @@ $zh2Hant = array(
 '龚' => '龔',
 '龛' => '龕',
 '龟' => '龜',
+'𠆲' => '儣',
+'𠆿' => '𠌥',
+'𠉂' => '㒓',
+'𠉗' => '𠏢',
+'𠚳' => '𠠎',
+'𠛅' => '剾',
+'𠛆' => '𠞆',
 '𠮶' => '嗰',
+'𠯟' => '哯',
+'𠯠' => '噅',
+'𠲥' => '𡅏',
+'𠴢' => '𡄔',
+'𠵸' => '𡄣',
+'𠵾' => '㗲',
+'𡋀' => '𡓾',
+'𡋗' => '𡑭',
 '𡒄' => '壈',
+'𡝠' => '㜷',
+'𡞱' => '㜢',
+'𡭜' => '𡮉',
+'𡭬' => '𡮣',
+'𡶴' => '嵼',
+'𢋈' => '㢝',
+'𢘝' => '𢣚',
+'𢘞' => '𢣭',
+'𢙓' => '懀',
+'𢛯' => '㦎',
+'𢫊' => '𢷮',
+'𢫞' => '𢶫',
+'𢫬' => '摋',
+'𢬦' => '𢹿',
+'𢭏' => '擣',
+'𢽾' => '斅',
+'𣆐' => '曥',
+'𣍨' => '𦢈',
+'𣍯' => '腪',
+'𣍰' => '脥',
+'𣎑' => '臗',
+'𣐤' => '欍',
+'𣑶' => '𣠲',
+'𣗋' => '欓',
+'𣘓' => '𣞻',
+'𣘴' => '檭',
+'𣘷' => '𣝕',
+'𣭤' => '𣯴',
+'𣶩' => '澅',
+'𣶫' => '𣿉',
+'𣸣' => '濆',
+'𣺼' => '灙',
+'𣺽' => '𤁣',
+'𣽷' => '瀃',
+'𤆡' => '熓',
+'𤇃' => '爄',
+'𤇄' => '熌',
+'𤈶' => '熉',
+'𤈷' => '㷿',
+'𤊀' => '𤒎',
+'𤋏' => '熡',
+'𤞤' => '玁',
+'𤠋' => '㺏',
+'𤦀' => '瓕',
+'𤳄' => '𤳸',
+'𤶧' => '𤸫',
+'𤽯' => '㿧',
+'𤾀' => '皟',
+'𥅘' => '𥌃',
+'𥅴' => '䀹',
+'𥆧' => '瞤',
+'𥇢' => '䁪',
+'𥐟' => '礒',
+'𥐯' => '𥖅',
+'𥐰' => '𥕥',
+'𥐻' => '碙',
+'𥧂' => '𥨐',
+'𥬀' => '䉙',
+'𥬞' => '籋',
+'𥬠' => '篘',
+'𥭉' => '𥵊',
+'𥮋' => '𥸠',
+'𥮜' => '䉲',
+'𥱔' => '𥵃',
+'𥹥' => '𥼽',
+'𥺅' => '䊭',
+'𥺇' => '𥽖',
+'𦈈' => '𥿊',
+'𦈉' => '緷',
+'𦈋' => '綇',
+'𦈌' => '綀',
+'𦈎' => '繟',
+'𦈏' => '緍',
+'𦈐' => '縺',
+'𦈑' => '緸',
+'𦈒' => '𦂅',
+'𦈓' => '䋿',
+'𦈔' => '縎',
+'𦈕' => '緰',
 '𦈖' => '䌈',
+'𦈗' => '𦃄',
+'𦈘' => '䌋',
+'𦈙' => '䌰',
+'𦈚' => '縬',
+'𦈛' => '繓',
+'𦈜' => '䌖',
+'𦈝' => '繏',
+'𦈞' => '䌟',
+'𦈟' => '䌝',
+'𦈠' => '䌥',
+'𦈡' => '繻',
+'𦛨' => '朥',
+'𦝼' => '膢',
+'𦟗' => '𦣎',
+'𦨩' => '𦪽',
+'𦰴' => '䕳',
+'𧉞' => '䗿',
+'𧒭' => '𧔥',
+'𧮪' => '詀',
+'𧳕' => '𧳟',
+'𧹑' => '䞈',
+'𧹓' => '𧶔',
+'𧹕' => '䝻',
+'𧹖' => '賟',
+'𧹗' => '贃',
+'𧿈' => '𨇁',
+'𨀱' => '𨄣',
+'𨁴' => '𨅍',
+'𨂺' => '𨈊',
+'𨄄' => '𨈌',
+'𨅫' => '𨇞',
+'𨅬' => '躝',
+'𨉗' => '軉',
+'𨐅' => '軗',
+'𨐆' => '𨊻',
+'𨐇' => '𨏠',
+'𨐈' => '輄',
+'𨐉' => '𨎮',
+'𨐊' => '𨏥',
+'𨑹' => '䢨',
+'𨤰' => '𨤻',
 '𨰾' => '鎷',
 '𨰿' => '釳',
 '𨱀' => '𨥛',
@@ -2581,6 +2781,7 @@ $zh2Hant = array(
 '𨱃' => '鈲',
 '𨱄' => '鈯',
 '𨱅' => '鉁',
+'𨱆' => '龯',
 '𨱇' => '銶',
 '𨱈' => '鋉',
 '𨱉' => '鍄',
@@ -2591,12 +2792,28 @@ $zh2Hant = array(
 '𨱎' => '鍮',
 '𨱏' => '鎝',
 '𨱐' => '𨫒',
+'𨱑' => '鐄',
 '𨱒' => '鏉',
 '𨱓' => '鐎',
 '𨱔' => '鐏',
 '𨱕' => '𨮂',
+'𨱖' => '䥩',
+'𨷿' => '䦳',
+'𨸀' => '𨳕',
+'𨸁' => '𨳑',
 '𨸂' => '閍',
 '𨸃' => '閐',
+'𨸄' => '䦘',
+'𨸅' => '𨴗',
+'𨸆' => '𨵩',
+'𨸇' => '𨵸',
+'𨸉' => '𨶀',
+'𨸊' => '𨶏',
+'𨸋' => '𨶲',
+'𨸌' => '𨶮',
+'𨸎' => '𨷲',
+'𨸘' => '𨽏',
+'𨸟' => '䧢',
 '𩏼' => '䪏',
 '𩏽' => '𩏪',
 '𩏾' => '𩎢',
@@ -2617,12 +2834,22 @@ $zh2Hant = array(
 '𩙮' => '䬘',
 '𩙯' => '䬝',
 '𩙰' => '𩙈',
+'𩟿' => '𩚛',
+'𩠀' => '𩚥',
+'𩠁' => '𩚵',
+'𩠂' => '𩛆',
+'𩠃' => '𩛩',
 '𩠅' => '𩟐',
 '𩠆' => '𩜦',
 '𩠇' => '䭀',
 '𩠈' => '䭃',
+'𩠉' => '𩜇',
+'𩠊' => '𩜵',
 '𩠋' => '𩝔',
 '𩠌' => '餸',
+'𩠎' => '𩞄',
+'𩠏' => '𩞦',
+'𩠠' => '𩠴',
 '𩧦' => '𩡺',
 '𩧨' => '駎',
 '𩧩' => '𩤊',
@@ -2649,14 +2876,20 @@ $zh2Hant = array(
 '𩨄' => '騪',
 '𩨅' => '𩤸',
 '𩨆' => '𩤙',
+'𩨇' => '䮫',
 '𩨈' => '騟',
 '𩨉' => '𩤲',
 '𩨊' => '騚',
 '𩨋' => '𩥄',
 '𩨌' => '𩥑',
 '𩨍' => '𩥇',
+'𩨎' => '龭',
 '𩨏' => '䮳',
 '𩨐' => '𩧆',
+'𩬣' => '𩭙',
+'𩬤' => '𩰀',
+'𩯒' => '𩯳',
+'𩲒' => '𩳤',
 '𩽹' => '魥',
 '𩽺' => '𩵩',
 '𩽻' => '𩵹',
@@ -2666,6 +2899,7 @@ $zh2Hant = array(
 '𩽿' => '𩶰',
 '𩾀' => '鮕',
 '𩾁' => '鯄',
+'𩾂' => '䲖',
 '𩾃' => '鮸',
 '𩾄' => '𩷰',
 '𩾅' => '𩸃',
@@ -2699,6 +2933,8 @@ $zh2Hant = array(
 '𪎊' => '麨',
 '𪎋' => '䴴',
 '𪎌' => '麳',
+'𪎍' => '𪋿',
+'𪔭' => '𪔵',
 '𪚏' => '𪘀',
 '𪚐' => '𪘯',
 '𪞝' => '凙',
@@ -2715,7 +2951,7 @@ $zh2Hant = array(
 '𫌀' => '襀',
 '𫌨' => '覼',
 '𫍙' => '訑',
-'𫍟' => '𧦧',
+'𫍟' => '',
 '𫍢' => '譊',
 '𫍰' => '諰',
 '𫍲' => '謏',
@@ -2728,6 +2964,7 @@ $zh2Hant = array(
 '𫓧' => '鈇',
 '𫓩' => '鏦',
 '𫔎' => '鐍',
+'𫖸' => '願',
 '𫗠' => '餦',
 '𫗦' => '餔',
 '𫗧' => '餗',
@@ -3993,7 +4230,6 @@ $zh2Hant = array(
 '优游' => '優遊',
 '兀术' => '兀朮',
 '元凶' => '元兇',
-'充饥' => '充饑',
 '兆个' => '兆個',
 '兆余' => '兆餘',
 '凶刀' => '兇刀',
@@ -4144,7 +4380,6 @@ $zh2Hant = array(
 '出于' => '出於',
 '出游' => '出遊',
 '出丑' => '出醜',
-'出锤' => '出鎚',
 '分占' => '分佔',
 '分别致' => '分别致',
 '分半钟' => '分半鐘',
@@ -4393,6 +4628,7 @@ $zh2Hant = array(
 '古书云' => '古書云',
 '古書云' => '古書云',
 '古柯咸' => '古柯鹹',
+'古柯碱' => '古柯鹼',
 '古朴' => '古樸',
 '古语云' => '古語云',
 '古語云' => '古語云',
@@ -4534,7 +4770,7 @@ $zh2Hant = array(
 '吹干' => '吹乾',
 '吹发' => '吹髮',
 '吹胡' => '吹鬍',
-'吾之范我驰驱' => '吾爲之範我馳驅',
+'吾之范我驰驱' => '吾爲之範我馳驅',
 '吕后' => '呂后',
 '呂后' => '呂后',
 '呆呆傻傻' => '呆呆傻傻',
@@ -4617,8 +4853,8 @@ $zh2Hant = array(
 '严于' => '嚴於',
 '严丝合缝' => '嚴絲合縫',
 '嚼谷' => '嚼穀',
-'å\9b\89å\9b\89苏苏' => '囉囉囌囌',
-'å\9b\89苏' => '囉囌',
+'å\95°å\95°苏苏' => '囉囉囌囌',
+'å\95°苏' => '囉囌',
 '嘱托' => '囑託',
 '四个' => '四個',
 '四出刊' => '四出刊',
@@ -4711,7 +4947,7 @@ $zh2Hant = array(
 '城里' => '城裡',
 '埔裡社撫墾局' => '埔裏社撫墾局',
 '埔裏社撫墾局' => '埔裏社撫墾局',
-'埔社抚垦局' => '埔裏社撫墾局',
+'埔社抚垦局' => '埔裏社撫墾局',
 '基干' => '基幹',
 '基于' => '基於',
 '基准' => '基準',
@@ -4815,7 +5051,6 @@ $zh2Hant = array(
 '大赞' => '大讚',
 '大周折' => '大週摺',
 '大金发苔' => '大金髮苔',
-'大锤' => '大鎚',
 '大钟' => '大鐘',
 '大只' => '大隻',
 '大风后' => '大風後',
@@ -4836,6 +5071,7 @@ $zh2Hant = array(
 '天文钟' => '天文鐘',
 '天历' => '天曆',
 '天历史' => '天歷史',
+'天然碱' => '天然鹼',
 '天翻地覆' => '天翻地覆',
 '天覆地载' => '天覆地載',
 '太仆' => '太僕',
@@ -4885,7 +5121,6 @@ $zh2Hant = array(
 '好丑' => '好醜',
 '好斗' => '好鬥',
 '如果干' => '如果幹',
-'如饥似渴' => '如饑似渴',
 '妖后' => '妖后',
 '妙药' => '妙藥',
 '始于' => '始於',
@@ -5279,6 +5514,7 @@ $zh2Hant = array(
 '弘历史' => '弘歷史',
 '弱于' => '弱於',
 '弱水三千只取一瓢' => '弱水三千只取一瓢',
+'弱碱' => '弱鹼',
 '张三丰' => '張三丰',
 '張三丰' => '張三丰',
 '张勋' => '張勳',
@@ -5288,6 +5524,7 @@ $zh2Hant = array(
 '强奸' => '強姦',
 '强干' => '強幹',
 '强于' => '強於',
+'强碱' => '強鹼',
 '别口气' => '彆口氣',
 '别强' => '彆強',
 '别扭' => '彆扭',
@@ -5503,7 +5740,6 @@ $zh2Hant = array(
 '心脏' => '心臟',
 '心荡' => '心蕩',
 '心药' => '心藥',
-'心里面' => '心裏面',
 '心里' => '心裡',
 '心长发短' => '心長髮短',
 '心余' => '心餘',
@@ -5635,7 +5871,7 @@ $zh2Hant = array(
 '手表达' => '手表達',
 '手表露' => '手表露',
 '手表面' => '手表面',
-'手剑' => '手裏劍',
+'手剑' => '手裏劍',
 '手里' => '手裡',
 '手表' => '手錶',
 '手松' => '手鬆',
@@ -5686,6 +5922,7 @@ $zh2Hant = array(
 '抗癌药' => '抗癌藥',
 '抗御' => '抗禦',
 '抗药' => '抗藥',
+'抗碱' => '抗鹼',
 '折向往' => '折向往',
 '折子戏' => '折子戲',
 '折戟沈河' => '折戟沈河',
@@ -5824,7 +6061,7 @@ $zh2Hant = array(
 '挂名' => '掛名',
 '挂帘' => '掛帘',
 '挂历' => '掛曆',
-'æ\8c\82é\92©' => '掛鈎',
+'æ\8c\82é\88\8e' => '掛鈎',
 '挂钟' => '掛鐘',
 '采下' => '採下',
 '采伐' => '採伐',
@@ -6528,12 +6765,14 @@ $zh2Hant = array(
 '水里浊水溪' => '水里濁水溪',
 '水里鄉' => '水里鄉',
 '水里乡' => '水里鄉',
+'水碱' => '水鹼',
 '永历' => '永曆',
 '永历史' => '永歷史',
 '永志不忘' => '永誌不忘',
 '求知欲' => '求知慾',
 '求签' => '求籤',
 '求道于盲' => '求道於盲',
+'汗碱' => '汗鹼',
 '池里' => '池裡',
 '污蔑' => '污衊',
 '汲于' => '汲於',
@@ -6726,16 +6965,8 @@ $zh2Hant = array(
 '滃郁' => '滃鬱',
 '滑借' => '滑藉',
 '汇丰' => '滙豐',
-'卤味' => '滷味',
-'卤水' => '滷水',
-'卤汁' => '滷汁',
-'卤湖' => '滷湖',
-'卤肉' => '滷肉',
-'卤菜' => '滷菜',
-'卤蛋' => '滷蛋',
-'卤制' => '滷製',
-'卤鸡' => '滷雞',
-'卤面' => '滷麵',
+'滷制' => '滷製',
+'滷面' => '滷麵',
 '满拼自尽' => '滿拚自盡',
 '满满当当' => '滿滿當當',
 '满头洋发' => '滿頭洋髮',
@@ -6831,6 +7062,7 @@ $zh2Hant = array(
 '煎面' => '煎麵',
 '烟卷' => '煙捲',
 '烟斗丝' => '煙斗絲',
+'烟碱' => '煙鹼',
 '照占' => '照佔',
 '照入签' => '照入籤',
 '照准' => '照準',
@@ -6840,9 +7072,10 @@ $zh2Hant = array(
 '熊杰' => '熊杰',
 '荧郁' => '熒鬱',
 '熬药' => '熬藥',
-'ç\82\96药' => '燉藥',
+'ç\87\89药' => '燉藥',
 '燎发' => '燎髮',
 '烧干' => '燒乾',
+'烧碱' => '燒鹼',
 '燕几' => '燕几',
 '燕巢于幕' => '燕巢於幕',
 '燕燕于飞' => '燕燕于飛',
@@ -7015,7 +7248,7 @@ $zh2Hant = array(
 '发松' => '發鬆',
 '发面' => '發麵',
 '白干' => '白乾',
-'白兔药' => '白兔擣藥',
+'白兔𢭏药' => '白兔擣藥',
 '白干儿' => '白干兒',
 '白术' => '白朮',
 '白朴' => '白樸',
@@ -7149,6 +7382,7 @@ $zh2Hant = array(
 '石英钟表' => '石英鐘錶',
 '石莼' => '石蓴',
 '石钟乳' => '石鐘乳',
+'石碱' => '石鹼',
 '矽谷' => '矽谷',
 '研制' => '研製',
 '砰当' => '砰噹',
@@ -7159,6 +7393,7 @@ $zh2Hant = array(
 '朱红色' => '硃紅色',
 '朱色' => '硃色',
 '朱谕' => '硃諭',
+'硫化碱' => '硫化鹼',
 '硬干' => '硬幹',
 '确瘠' => '确瘠',
 '碑志' => '碑誌',
@@ -7267,7 +7502,6 @@ $zh2Hant = array(
 '积极参加' => '積极參加',
 '积淀' => '積澱',
 '积谷' => '積穀',
-'积谷防饥' => '積穀防饑',
 '积郁' => '積鬱',
 '稳占' => '穩佔',
 '稳扎' => '穩紮',
@@ -7404,6 +7638,7 @@ $zh2Hant = array(
 '纡郁' => '紆鬱',
 '纳征' => '納徵',
 '纯朴' => '純樸',
+'纯碱' => '純鹼',
 '纸扎' => '紙紮',
 '素朴' => '素樸',
 '素发' => '素髮',
@@ -7599,6 +7834,7 @@ $zh2Hant = array(
 '考试' => '考試',
 '而克制' => '而剋制',
 '耍斗' => '耍鬥',
+'耐碱' => '耐鹼',
 '耕佣' => '耕傭',
 '耕获' => '耕穫',
 '耳余' => '耳餘',
@@ -7732,6 +7968,7 @@ $zh2Hant = array(
 '花马吊嘴' => '花馬弔嘴',
 '花哄' => '花鬨',
 '苑里' => '苑裡',
+'苛性碱' => '苛性鹼',
 '若干' => '若干',
 '苦干' => '苦幹',
 '苦药' => '苦藥',
@@ -7762,7 +7999,7 @@ $zh2Hant = array(
 '草药' => '草藥',
 '荐居' => '荐居',
 '荐臻' => '荐臻',
-'è\8d\90饥' => '荐饑',
+'è\8d\90é¥\91' => '荐饑',
 '荷花淀' => '荷花澱',
 '庄上' => '莊上',
 '庄主' => '莊主',
@@ -7796,6 +8033,7 @@ $zh2Hant = array(
 '菠萝干' => '菠蘿乾',
 '华严钟' => '華嚴鐘',
 '华发' => '華髮',
+'菸碱' => '菸鹼',
 '萬一只' => '萬一只',
 '万一只' => '萬一只',
 '万个' => '萬個',
@@ -7875,7 +8113,7 @@ $zh2Hant = array(
 '姜饼' => '薑餅',
 '姜黄' => '薑黃',
 '薙发' => '薙髮',
-'薝' => '薝蔔',
+'薝' => '薝蔔',
 '苧悴' => '薴悴',
 '薴烯' => '薴烯',
 '苧烯' => '薴烯',
@@ -7962,8 +8200,7 @@ $zh2Hant = array(
 '蕴含着' => '蘊含著',
 '蕴涵着' => '蘊涵著',
 '苹果干' => '蘋果乾',
-'萝卜' => '蘿蔔',
-'萝卜干' => '蘿蔔乾',
+'萝蔔干' => '蘿蔔乾',
 '虎须' => '虎鬚',
 '虎斗' => '虎鬥',
 '号志' => '號誌',
@@ -7983,7 +8220,7 @@ $zh2Hant = array(
 '蛏干' => '蟶乾',
 '蚁后' => '蟻后',
 '蟻后' => '蟻后',
-'è \81干' => '蠁幹',
+'è\9a\83干' => '蠁幹',
 '蛮干' => '蠻幹',
 '血拼' => '血拚',
 '血余' => '血餘',
@@ -8061,8 +8298,9 @@ $zh2Hant = array(
 '被发阳狂' => '被髮陽狂',
 '裁并' => '裁併',
 '裁制' => '裁製',
-'里手' => '裏手',
-'里海' => '裏海',
+'裏勾外连' => '裏勾外連',
+'裏手' => '裏手',
+'裏海' => '裏海',
 '补于' => '補於',
 '补药' => '補藥',
 '补血药' => '補血藥',
@@ -8379,7 +8617,6 @@ $zh2Hant = array(
 '资金占用' => '資金占用',
 '贾后' => '賈后',
 '賈后' => '賈后',
-'赈饥' => '賑饑',
 '赏赞' => '賞讚',
 '贤后' => '賢后',
 '賢后' => '賢后',
@@ -8655,6 +8892,7 @@ $zh2Hant = array(
 '酒醴曲蘖' => '酒醴麴櫱',
 '酒曲' => '酒麴',
 '酥松' => '酥鬆',
+'酸碱' => '酸鹼',
 '醇朴' => '醇樸',
 '醉于' => '醉於',
 '醋坛' => '醋罈',
@@ -8729,7 +8967,6 @@ $zh2Hant = array(
 '重复' => '重複',
 '重托' => '重託',
 '重游' => '重遊',
-'重锤' => '重鎚',
 '野姜' => '野薑',
 '野游' => '野遊',
 '厘出' => '釐出',
@@ -8756,10 +8993,10 @@ $zh2Hant = array(
 '金装玉里' => '金裝玉裡',
 '金表' => '金錶',
 '金钟' => '金鐘',
+'金鸡纳碱' => '金雞納鹼',
 '金马仑道' => '金馬崙道',
 '金发' => '金髮',
-'钉锤' => '釘鎚',
-'钩心斗角' => '鈎心鬥角',
+'鈎心斗角' => '鈎心鬥角',
 '银朱' => '銀硃',
 '银发' => '銀髮',
 '铜范' => '銅範',
@@ -8777,7 +9014,7 @@ $zh2Hant = array(
 '钱谷' => '錢穀',
 '钱范' => '錢範',
 '钱庄' => '錢莊',
-'é\94¦ç»£花园' => '錦綉花園',
+'é\94¦ç\89花园' => '錦綉花園',
 '锦绣' => '錦繡',
 '表停' => '錶停',
 '表冠' => '錶冠',
@@ -8814,9 +9051,6 @@ $zh2Hant = array(
 '锻炼出' => '鍛鍊出',
 '锲而不舍' => '鍥而不捨',
 '镰仓' => '鎌倉',
-'锤儿' => '鎚兒',
-'锤子' => '鎚子',
-'锤头' => '鎚頭',
 '锈病' => '鏽病',
 '锈菌' => '鏽菌',
 '锈蚀' => '鏽蝕',
@@ -8896,7 +9130,6 @@ $zh2Hant = array(
 '钟鼓' => '鐘鼓',
 '铁杆' => '鐵杆',
 '铁栏杆' => '鐵欄杆',
-'铁锤' => '鐵鎚',
 '铁锈' => '鐵鏽',
 '铁钟' => '鐵鐘',
 '铸钟' => '鑄鐘',
@@ -9298,13 +9531,8 @@ $zh2Hant = array(
 '喂鱼' => '餵魚',
 '喂鸭' => '餵鴨',
 '喂鹅' => '餵鵝',
-'饥寒' => '饑寒',
-'饥民' => '饑民',
-'饥渴' => '饑渴',
-'饥溺' => '饑溺',
-'饥荒' => '饑荒',
-'饥饱' => '饑飽',
-'饥馑' => '饑饉',
+'饑荒' => '饑荒',
+'饑馑' => '饑饉',
 '首当其冲' => '首當其衝',
 '首发' => '首發',
 '首只' => '首隻',
@@ -9581,7 +9809,7 @@ $zh2Hant = array(
 '鱼干' => '魚乾',
 '鱼松' => '魚鬆',
 '鲸须' => '鯨鬚',
-'é²\87鱼' => '鯰魚',
+'鯰鱼' => '鯰魚',
 '鸠占鹊巢' => '鳩佔鵲巢',
 '凤凰于飞' => '鳳凰于飛',
 '凤梨干' => '鳳梨乾',
@@ -9624,9 +9852,22 @@ $zh2Hant = array(
 '咸鸭蛋' => '鹹鴨蛋',
 '咸卤' => '鹹鹵',
 '咸咸' => '鹹鹹',
+'碱化' => '鹼化',
+'碱土金属' => '鹼土金屬',
+'碱地' => '鹼地',
+'碱度' => '鹼度',
+'碱性' => '鹼性',
+'碱水' => '鹼水',
+'碱液' => '鹼液',
+'碱熔' => '鹼熔',
+'碱石灰' => '鹼石灰',
+'碱纤维素' => '鹼纖維素',
+'碱金属' => '鹼金屬',
+'碱类' => '鹼類',
 '盐打怎么咸' => '鹽打怎麼鹹',
-'盐卤' => '鹽滷',
 '盐余' => '鹽餘',
+'盐碱土' => '鹽鹼土',
+'盐碱滩' => '鹽鹼灘',
 '丽于' => '麗於',
 '曲尘' => '麴塵',
 '曲蘖' => '麴櫱',
@@ -9779,18 +10020,90 @@ $zh2Hant = array(
 );
 
 $zh2Hans = array(
+'㑯' => '㑔',
+'㑳' => '㑇',
+'㒓' => '𠉂',
+'㓨' => '刾',
+'㗲' => '𠵾',
+'㘚' => '㘎',
+'㜄' => '㚯',
+'㜏' => '㛣',
+'㜢' => '𡞱',
+'㜷' => '𡝠',
 '㞞' => '𪨊',
 '㠏' => '㟆',
+'㢝' => '𢋈',
+'㥮' => '㤘',
+'㦎' => '𢛯',
 '㩜' => '㨫',
+'㩳' => '㧐',
+'㷿' => '𤈷',
+'㺏' => '𤠋',
+'㿧' => '𤽯',
+'䀹' => '𥅴',
+'䁪' => '𥇢',
+'䁻' => '䀥',
+'䉙' => '𥬀',
 '䉬' => '𫂈',
+'䉲' => '𥮜',
+'䊭' => '𥺅',
 '䊷' => '䌶',
 '䋙' => '䌺',
+'䋚' => '䌻',
 '䋻' => '䌾',
+'䋿' => '𦈓',
+'䌈' => '𦈖',
+'䌋' => '𦈘',
+'䌖' => '𦈜',
+'䌝' => '𦈟',
+'䌟' => '𦈞',
+'䌥' => '𦈠',
+'䌰' => '𦈙',
+'䕳' => '𦰴',
+'䗿' => '𧉞',
+'䙡' => '䙌',
+'䜀' => '䜧',
+'䝻' => '𧹕',
 '䝼' => '䞍',
+'䞈' => '𧹑',
+'䢨' => '𨑹',
+'䥇' => '䦂',
+'䥩' => '𨱖',
+'䥱' => '䥾',
+'䦘' => '𨸄',
+'䦛' => '䦶',
+'䦟' => '䦷',
+'䦳' => '𨷿',
+'䧢' => '𨸟',
+'䪏' => '𩏼',
+'䪗' => '𩐀',
+'䪘' => '𩏿',
+'䫴' => '𩖗',
+'䬘' => '𩙮',
+'䬝' => '𩙯',
+'䬞' => '𩙧',
+'䭀' => '𩠇',
+'䭃' => '𩠈',
+'䭿' => '𩧭',
+'䮝' => '𩧰',
+'䮞' => '𩨁',
+'䮠' => '𩧿',
+'䮫' => '𩨇',
+'䮳' => '𩨏',
+'䮾' => '𩧪',
 '䯀' => '䯅',
 '䰾' => '鲃',
+'䱙' => '𩾈',
+'䱬' => '𩾊',
+'䱰' => '𩾋',
+'䱷' => '䲣',
 '䱽' => '䲝',
 '䲁' => '鳚',
+'䲖' => '𩾂',
+'䲰' => '𪉂',
+'䴉' => '鹮',
+'䴬' => '𪎈',
+'䴴' => '𪎋',
 '丟' => '丢',
 '並' => '并',
 '乾' => '干',
@@ -9808,6 +10121,7 @@ $zh2Hans = array(
 '係' => '系',
 '俔' => '伣',
 '俠' => '侠',
+'俥' => '伡',
 '倀' => '伥',
 '倆' => '俩',
 '倈' => '俫',
@@ -9816,7 +10130,9 @@ $zh2Hans = array(
 '們' => '们',
 '倖' => '幸',
 '倫' => '伦',
+'倲' => '㑈',
 '偉' => '伟',
+'偑' => '㐽',
 '側' => '侧',
 '偵' => '侦',
 '偽' => '伪',
@@ -9852,6 +10168,7 @@ $zh2Hans = array(
 '儕' => '侪',
 '儘' => '尽',
 '償' => '偿',
+'儣' => '𠆲',
 '優' => '优',
 '儲' => '储',
 '儷' => '俪',
@@ -9885,6 +10202,7 @@ $zh2Hans = array(
 '剴' => '剀',
 '創' => '创',
 '剷' => '铲',
+'剾' => '𠛅',
 '劃' => '划',
 '劇' => '剧',
 '劉' => '刘',
@@ -9915,7 +10233,6 @@ $zh2Hans = array(
 '卻' => '却',
 '卽' => '即',
 '厙' => '厍',
-'厠' => '厕',
 '厤' => '历',
 '厭' => '厌',
 '厲' => '厉',
@@ -9929,10 +10246,10 @@ $zh2Hans = array(
 '呂' => '吕',
 '咼' => '呙',
 '員' => '员',
+'哯' => '𠯟',
 '唄' => '呗',
 '唚' => '吣',
 '問' => '问',
-'啓' => '启',
 '啞' => '哑',
 '啟' => '启',
 '啢' => '唡',
@@ -9953,6 +10270,7 @@ $zh2Hans = array(
 '嗹' => '𪡏',
 '嘆' => '叹',
 '嘍' => '喽',
+'嘓' => '啯',
 '嘔' => '呕',
 '嘖' => '啧',
 '嘗' => '尝',
@@ -9965,6 +10283,7 @@ $zh2Hans = array(
 '嘸' => '呒',
 '嘽' => '啴',
 '噁' => '恶',
+'噅' => '𠯠',
 '噓' => '嘘',
 '噚' => '㖊',
 '噝' => '咝',
@@ -9995,6 +10314,7 @@ $zh2Hans = array(
 '囂' => '嚣',
 '囅' => '冁',
 '囈' => '呓',
+'囉' => '啰',
 '囌' => '苏',
 '囑' => '嘱',
 '囪' => '囱',
@@ -10032,7 +10352,6 @@ $zh2Hans = array(
 '墮' => '堕',
 '墰' => '坛',
 '墳' => '坟',
-'墻' => '墙',
 '墾' => '垦',
 '壇' => '坛',
 '壈' => '𡒄',
@@ -10059,7 +10378,6 @@ $zh2Hans = array(
 '奧' => '奥',
 '奩' => '奁',
 '奪' => '夺',
-'奬' => '奖',
 '奮' => '奋',
 '奼' => '姹',
 '妝' => '妆',
@@ -10071,13 +10389,14 @@ $zh2Hans = array(
 '婭' => '娅',
 '媧' => '娲',
 '媯' => '妫',
+'媰' => '㛀',
 '媼' => '媪',
 '媽' => '妈',
 '嫗' => '妪',
 '嫵' => '妩',
 '嫻' => '娴',
 '嫿' => '婳',
-'å¬\80' => '妫',
+'å¬\83' => '媭',
 '嬈' => '娆',
 '嬋' => '婵',
 '嬌' => '娇',
@@ -10087,6 +10406,7 @@ $zh2Hans = array(
 '嬪' => '嫔',
 '嬰' => '婴',
 '嬸' => '婶',
+'孋' => '㛤',
 '孌' => '娈',
 '孫' => '孙',
 '學' => '学',
@@ -10128,6 +10448,7 @@ $zh2Hans = array(
 '崬' => '岽',
 '嵐' => '岚',
 '嵗' => '岁',
+'嵼' => '𡶴',
 '嶁' => '嵝',
 '嶄' => '崭',
 '嶇' => '岖',
@@ -10189,7 +10510,9 @@ $zh2Hans = array(
 '彎' => '弯',
 '彙' => '汇',
 '彞' => '彝',
+'彠' => '彟',
 '彥' => '彦',
+'彲' => '彨',
 '後' => '后',
 '徑' => '径',
 '從' => '从',
@@ -10220,7 +10543,6 @@ $zh2Hans = array(
 '慚' => '惭',
 '慟' => '恸',
 '慣' => '惯',
-'慤' => '悫',
 '慪' => '怄',
 '慫' => '怂',
 '慮' => '虑',
@@ -10239,6 +10561,7 @@ $zh2Hans = array(
 '憮' => '怃',
 '憲' => '宪',
 '憶' => '忆',
+'懀' => '𢙓',
 '懇' => '恳',
 '應' => '应',
 '懌' => '怿',
@@ -10274,6 +10597,7 @@ $zh2Hans = array(
 '捲' => '卷',
 '掃' => '扫',
 '掄' => '抡',
+'掆' => '㧏',
 '掗' => '挜',
 '掙' => '挣',
 '掛' => '挂',
@@ -10287,6 +10611,7 @@ $zh2Hans = array(
 '搗' => '捣',
 '搵' => '揾',
 '搶' => '抢',
+'摋' => '𢫬',
 '摑' => '掴',
 '摜' => '掼',
 '摟' => '搂',
@@ -10318,6 +10643,7 @@ $zh2Hans = array(
 '擔' => '担',
 '據' => '据',
 '擠' => '挤',
+'擣' => '𢭏',
 '擬' => '拟',
 '擯' => '摈',
 '擰' => '拧',
@@ -10328,6 +10654,7 @@ $zh2Hans = array(
 '擺' => '摆',
 '擻' => '擞',
 '擼' => '撸',
+'擽' => '㧰',
 '擾' => '扰',
 '攄' => '摅',
 '攆' => '撵',
@@ -10349,6 +10676,8 @@ $zh2Hans = array(
 '數' => '数',
 '斂' => '敛',
 '斃' => '毙',
+'斅' => '𢽾',
+'斆' => '敩',
 '斕' => '斓',
 '斬' => '斩',
 '斷' => '断',
@@ -10371,10 +10700,12 @@ $zh2Hans = array(
 '曏' => '向',
 '曖' => '暧',
 '曠' => '旷',
+'曥' => '𣆐',
 '曨' => '昽',
 '曬' => '晒',
 '書' => '书',
 '會' => '会',
+'朥' => '𦛨',
 '朧' => '胧',
 '朮' => '术',
 '東' => '东',
@@ -10391,10 +10722,12 @@ $zh2Hans = array(
 '棖' => '枨',
 '棗' => '枣',
 '棟' => '栋',
+'棡' => '㭎',
 '棧' => '栈',
 '棲' => '栖',
 '棶' => '梾',
 '椏' => '桠',
+'椲' => '㭏',
 '楊' => '杨',
 '楓' => '枫',
 '楨' => '桢',
@@ -10412,6 +10745,8 @@ $zh2Hans = array(
 '槧' => '椠',
 '槨' => '椁',
 '槳' => '桨',
+'槶' => '椢',
+'槼' => '椝',
 '樁' => '桩',
 '樂' => '乐',
 '樅' => '枞',
@@ -10419,10 +10754,14 @@ $zh2Hans = array(
 '樓' => '楼',
 '標' => '标',
 '樞' => '枢',
+'樢' => '㭤',
 '樣' => '样',
+'樫' => '㭴',
+'樳' => '桪',
 '樸' => '朴',
 '樹' => '树',
 '樺' => '桦',
+'樿' => '椫',
 '橈' => '桡',
 '橋' => '桥',
 '機' => '机',
@@ -10435,6 +10774,7 @@ $zh2Hans = array(
 '檟' => '槚',
 '檢' => '检',
 '檣' => '樯',
+'檭' => '𣘴',
 '檮' => '梼',
 '檯' => '台',
 '檳' => '槟',
@@ -10460,8 +10800,10 @@ $zh2Hans = array(
 '欄' => '栏',
 '欅' => '榉',
 '權' => '权',
+'欍' => '𣐤',
 '欏' => '椤',
 '欒' => '栾',
+'欓' => '𣗋',
 '欖' => '榄',
 '欞' => '棂',
 '欽' => '钦',
@@ -10484,7 +10826,6 @@ $zh2Hans = array(
 '殰' => '㱩',
 '殲' => '歼',
 '殺' => '杀',
-'殻' => '壳',
 '殼' => '壳',
 '毀' => '毁',
 '毆' => '殴',
@@ -10518,6 +10859,7 @@ $zh2Hans = array(
 '淺' => '浅',
 '渙' => '涣',
 '減' => '减',
+'渢' => '沨',
 '渦' => '涡',
 '測' => '测',
 '渾' => '浑',
@@ -10529,6 +10871,7 @@ $zh2Hans = array(
 '準' => '准',
 '溝' => '沟',
 '溫' => '温',
+'溳' => '涢',
 '滄' => '沧',
 '滅' => '灭',
 '滌' => '涤',
@@ -10537,12 +10880,12 @@ $zh2Hans = array(
 '滬' => '沪',
 '滯' => '滞',
 '滲' => '渗',
-'滷' => '卤',
 '滸' => '浒',
 '滻' => '浐',
 '滾' => '滚',
 '滿' => '满',
 '漁' => '渔',
+'漊' => '溇',
 '漚' => '沤',
 '漢' => '汉',
 '漣' => '涟',
@@ -10554,7 +10897,6 @@ $zh2Hans = array(
 '潁' => '颍',
 '潑' => '泼',
 '潔' => '洁',
-'潙' => '沩',
 '潛' => '潜',
 '潤' => '润',
 '潯' => '浔',
@@ -10562,6 +10904,7 @@ $zh2Hans = array(
 '潷' => '滗',
 '潿' => '涠',
 '澀' => '涩',
+'澅' => '𣶩',
 '澆' => '浇',
 '澇' => '涝',
 '澐' => '沄',
@@ -10575,16 +10918,22 @@ $zh2Hans = array(
 '澾' => '㳠',
 '濁' => '浊',
 '濃' => '浓',
+'濄' => '㳡',
+'濆' => '𣸣',
 '濕' => '湿',
 '濘' => '泞',
+'濜' => '浕',
 '濟' => '济',
 '濤' => '涛',
+'濧' => '㳔',
 '濫' => '滥',
 '濰' => '潍',
 '濱' => '滨',
 '濺' => '溅',
 '濼' => '泺',
 '濾' => '滤',
+'瀂' => '澛',
+'瀃' => '𣽷',
 '瀅' => '滢',
 '瀆' => '渎',
 '瀇' => '㲿',
@@ -10607,8 +10956,10 @@ $zh2Hans = array(
 '灑' => '洒',
 '灕' => '漓',
 '灘' => '滩',
+'灙' => '𣺼',
 '灝' => '灏',
 '灠' => '漤',
+'灡' => '㳕',
 '灣' => '湾',
 '灤' => '滦',
 '灧' => '滟',
@@ -10626,14 +10977,17 @@ $zh2Hans = array(
 '煬' => '炀',
 '煱' => '㶽',
 '熅' => '煴',
+'熉' => '𤈶',
+'熌' => '𤇄',
 '熒' => '荧',
+'熓' => '𤆡',
 '熗' => '炝',
+'熡' => '𤋏',
 '熱' => '热',
 '熲' => '颎',
 '熾' => '炽',
 '燁' => '烨',
 '燈' => '灯',
-'燉' => '炖',
 '燒' => '烧',
 '燙' => '烫',
 '燜' => '焖',
@@ -10645,11 +10999,11 @@ $zh2Hans = array(
 '燶' => '㶶',
 '燼' => '烬',
 '燾' => '焘',
+'爄' => '𤇃',
 '爍' => '烁',
 '爐' => '炉',
 '爛' => '烂',
 '爭' => '争',
-'爲' => '为',
 '爺' => '爷',
 '爾' => '尔',
 '牆' => '墙',
@@ -10683,6 +11037,7 @@ $zh2Hans = array(
 '獻' => '献',
 '獼' => '猕',
 '玀' => '猡',
+'玁' => '𤞤',
 '現' => '现',
 '琺' => '珐',
 '琿' => '珲',
@@ -10698,16 +11053,17 @@ $zh2Hans = array(
 '璣' => '玑',
 '璦' => '瑷',
 '璫' => '珰',
+'璯' => '㻅',
 '環' => '环',
 '璽' => '玺',
 '瓊' => '琼',
 '瓏' => '珑',
 '瓔' => '璎',
+'瓕' => '𤦀',
 '瓚' => '瓒',
 '甌' => '瓯',
 '甕' => '瓮',
 '產' => '产',
-'産' => '产',
 '甦' => '苏',
 '甯' => '宁',
 '畝' => '亩',
@@ -10731,7 +11087,6 @@ $zh2Hans = array(
 '瘮' => '瘆',
 '瘲' => '疭',
 '瘺' => '瘘',
-'瘻' => '瘘',
 '療' => '疗',
 '癆' => '痨',
 '癇' => '痫',
@@ -10753,6 +11108,7 @@ $zh2Hans = array(
 '癲' => '癫',
 '發' => '发',
 '皚' => '皑',
+'皟' => '𤾀',
 '皰' => '疱',
 '皸' => '皲',
 '皺' => '皱',
@@ -10774,6 +11130,7 @@ $zh2Hans = array(
 '瞘' => '眍',
 '瞜' => '䁖',
 '瞞' => '瞒',
+'瞤' => '𥆧',
 '瞭' => '了',
 '瞶' => '瞆',
 '瞼' => '睑',
@@ -10787,19 +11144,24 @@ $zh2Hans = array(
 '硨' => '砗',
 '硯' => '砚',
 '碕' => '埼',
+'碙' => '𥐻',
 '碩' => '硕',
 '碭' => '砀',
 '碸' => '砜',
 '確' => '确',
 '碼' => '码',
+'碽' => '䂵',
 '磑' => '硙',
 '磚' => '砖',
+'磠' => '硵',
 '磣' => '碜',
 '磧' => '碛',
 '磯' => '矶',
 '磽' => '硗',
+'礄' => '硚',
 '礆' => '硷',
 '礎' => '础',
+'礒' => '𥐟',
 '礙' => '碍',
 '礦' => '矿',
 '礪' => '砺',
@@ -10846,9 +11208,7 @@ $zh2Hans = array(
 '竄' => '窜',
 '竅' => '窍',
 '竇' => '窦',
-'竈' => '灶',
 '竊' => '窃',
-'竪' => '竖',
 '競' => '竞',
 '筆' => '笔',
 '筍' => '笋',
@@ -10862,6 +11222,7 @@ $zh2Hans = array(
 '築' => '筑',
 '篋' => '箧',
 '篔' => '筼',
+'篘' => '𥬠',
 '篤' => '笃',
 '篩' => '筛',
 '篳' => '筚',
@@ -10876,8 +11237,11 @@ $zh2Hans = array(
 '簽' => '签',
 '簾' => '帘',
 '籃' => '篮',
+'籋' => '𥬞',
 '籌' => '筹',
+'籔' => '䉤',
 '籙' => '箓',
+'籛' => '篯',
 '籜' => '箨',
 '籟' => '籁',
 '籠' => '笼',
@@ -10950,14 +11314,14 @@ $zh2Hans = array(
 '統' => '统',
 '絲' => '丝',
 '絳' => '绛',
-'絶' => '绝',
 '絹' => '绢',
 '絺' => '𫄨',
+'綀' => '𦈌',
 '綁' => '绑',
 '綃' => '绡',
 '綆' => '绠',
+'綇' => '𦈋',
 '綈' => '绨',
-'綉' => '绣',
 '綌' => '绤',
 '綏' => '绥',
 '綐' => '䌼',
@@ -10967,14 +11331,12 @@ $zh2Hans = array(
 '綠' => '绿',
 '綢' => '绸',
 '綣' => '绻',
-'綫' => '线',
 '綬' => '绶',
 '維' => '维',
 '綯' => '绹',
 '綰' => '绾',
 '綱' => '纲',
 '網' => '网',
-'綳' => '绷',
 '綴' => '缀',
 '綵' => '彩',
 '綸' => '纶',
@@ -10988,10 +11350,9 @@ $zh2Hans = array(
 '緇' => '缁',
 '緊' => '紧',
 '緋' => '绯',
-'ç·\91' => '绿',
+'ç·\8d' => 'ð¦\88\8f',
 '緒' => '绪',
 '緓' => '绬',
-'緔' => '绱',
 '緗' => '缃',
 '緘' => '缄',
 '緙' => '缂',
@@ -11006,16 +11367,20 @@ $zh2Hans = array(
 '緩' => '缓',
 '緬' => '缅',
 '緯' => '纬',
+'緰' => '𦈕',
 '緱' => '缑',
 '緲' => '缈',
 '練' => '练',
 '緶' => '缏',
+'緷' => '𦈉',
+'緸' => '𦈑',
 '緹' => '缇',
 '緻' => '致',
 '縈' => '萦',
 '縉' => '缙',
 '縊' => '缢',
 '縋' => '缒',
+'縎' => '𦈔',
 '縐' => '绉',
 '縑' => '缣',
 '縕' => '缊',
@@ -11025,8 +11390,8 @@ $zh2Hans = array(
 '縞' => '缟',
 '縟' => '缛',
 '縣' => '县',
-'縧' => '绦',
 '縫' => '缝',
+'縬' => '𦈚',
 '縭' => '缡',
 '縮' => '缩',
 '縱' => '纵',
@@ -11037,34 +11402,39 @@ $zh2Hans = array(
 '縶' => '絷',
 '縷' => '缕',
 '縹' => '缥',
+'縺' => '𦈐',
 '總' => '总',
 '績' => '绩',
 '繃' => '绷',
 '繅' => '缫',
 '繆' => '缪',
+'繏' => '𦈝',
 '繐' => '穗',
 '繒' => '缯',
+'繓' => '𦈛',
 '織' => '织',
 '繕' => '缮',
 '繚' => '缭',
 '繞' => '绕',
+'繟' => '𦈎',
 '繡' => '绣',
 '繢' => '缋',
 '繩' => '绳',
 '繪' => '绘',
 '繫' => '系',
 '繭' => '茧',
-'繮' => '缰',
 '繯' => '缳',
 '繰' => '缲',
 '繳' => '缴',
 '繸' => '䍁',
 '繹' => '绎',
+'繻' => '𦈡',
 '繼' => '继',
 '繽' => '缤',
 '繾' => '缱',
 '繿' => '䍀',
 '纁' => '𫄸',
+'纇' => '颣',
 '纈' => '缬',
 '纊' => '纩',
 '續' => '续',
@@ -11090,7 +11460,9 @@ $zh2Hans = array(
 '羨' => '羡',
 '義' => '义',
 '習' => '习',
+'翬' => '翚',
 '翹' => '翘',
+'翽' => '翙',
 '耬' => '耧',
 '耮' => '耢',
 '聖' => '圣',
@@ -11110,18 +11482,22 @@ $zh2Hans = array(
 '脈' => '脉',
 '脛' => '胫',
 '脣' => '唇',
+'脥' => '𣍰',
 '脫' => '脱',
 '脹' => '胀',
 '腎' => '肾',
 '腖' => '胨',
 '腡' => '脶',
 '腦' => '脑',
+'腪' => '𣍯',
 '腫' => '肿',
 '腳' => '脚',
 '腸' => '肠',
 '膃' => '腽',
+'膕' => '腘',
 '膚' => '肤',
 '膠' => '胶',
+'膢' => '𦝼',
 '膩' => '腻',
 '膽' => '胆',
 '膾' => '脍',
@@ -11129,6 +11505,7 @@ $zh2Hans = array(
 '臉' => '脸',
 '臍' => '脐',
 '臏' => '膑',
+'臗' => '𣎑',
 '臘' => '腊',
 '臚' => '胪',
 '臟' => '脏',
@@ -11161,14 +11538,13 @@ $zh2Hans = array(
 '萇' => '苌',
 '萊' => '莱',
 '萬' => '万',
+'萴' => '荝',
 '萵' => '莴',
 '葉' => '叶',
 '葒' => '荭',
 '葤' => '荮',
 '葦' => '苇',
-'葯' => '药',
 '葷' => '荤',
-'蒓' => '莼',
 '蒔' => '莳',
 '蒞' => '莅',
 '蒼' => '苍',
@@ -11178,7 +11554,6 @@ $zh2Hans = array(
 '蓯' => '苁',
 '蓴' => '莼',
 '蓽' => '荜',
-'蔔' => '卜',
 '蔘' => '参',
 '蔞' => '蒌',
 '蔣' => '蒋',
@@ -11215,7 +11590,6 @@ $zh2Hans = array(
 '藝' => '艺',
 '藥' => '药',
 '藪' => '薮',
-'藴' => '蕴',
 '藶' => '苈',
 '藹' => '蔼',
 '藺' => '蔺',
@@ -11259,6 +11633,7 @@ $zh2Hans = array(
 '蟲' => '虫',
 '蟶' => '蛏',
 '蟻' => '蚁',
+'蠁' => '蚃',
 '蠅' => '蝇',
 '蠆' => '虿',
 '蠍' => '蝎',
@@ -11270,17 +11645,14 @@ $zh2Hans = array(
 '蠱' => '蛊',
 '蠶' => '蚕',
 '蠻' => '蛮',
-'衆' => '众',
 '衊' => '蔑',
 '術' => '术',
 '衕' => '同',
 '衚' => '胡',
 '衛' => '卫',
 '衝' => '冲',
-'衹' => '只',
 '袞' => '衮',
 '裊' => '袅',
-'裏' => '里',
 '補' => '补',
 '裝' => '装',
 '裡' => '里',
@@ -11294,7 +11666,7 @@ $zh2Hans = array(
 '褻' => '亵',
 '襀' => '𫌀',
 '襆' => '幞',
-'è¥\87' => '裥',
+'è¥\89' => '裥',
 '襏' => '袯',
 '襖' => '袄',
 '襝' => '裣',
@@ -11304,6 +11676,7 @@ $zh2Hans = array(
 '襬' => '䙓',
 '襯' => '衬',
 '襲' => '袭',
+'襴' => '襕',
 '見' => '见',
 '覎' => '觃',
 '規' => '规',
@@ -11355,10 +11728,12 @@ $zh2Hans = array(
 '訶' => '诃',
 '診' => '诊',
 '註' => '注',
+'詀' => '𧮪',
 '詁' => '诂',
 '詆' => '诋',
 '詎' => '讵',
 '詐' => '诈',
+'詑' => '𫍟',
 '詒' => '诒',
 '詔' => '诏',
 '評' => '评',
@@ -11404,7 +11779,6 @@ $zh2Hans = array(
 '誦' => '诵',
 '誨' => '诲',
 '說' => '说',
-'説' => '说',
 '誰' => '谁',
 '課' => '课',
 '誶' => '谇',
@@ -11460,15 +11834,12 @@ $zh2Hans = array(
 '講' => '讲',
 '謝' => '谢',
 '謠' => '谣',
-'謡' => '谣',
 '謨' => '谟',
 '謫' => '谪',
 '謬' => '谬',
-'謭' => '谫',
 '謳' => '讴',
 '謹' => '谨',
 '謾' => '谩',
-'譅' => '䜧',
 '證' => '证',
 '譊' => '𫍢',
 '譎' => '谲',
@@ -11489,6 +11860,8 @@ $zh2Hans = array(
 '譾' => '谫',
 '讀' => '读',
 '變' => '变',
+'讋' => '詟',
+'讌' => '䜩',
 '讎' => '仇',
 '讒' => '谗',
 '讓' => '让',
@@ -11547,6 +11920,7 @@ $zh2Hans = array(
 '賚' => '赉',
 '賜' => '赐',
 '賞' => '赏',
+'賟' => '𧹖',
 '賠' => '赔',
 '賡' => '赓',
 '賢' => '贤',
@@ -11555,7 +11929,6 @@ $zh2Hans = array(
 '賦' => '赋',
 '賧' => '赕',
 '質' => '质',
-'賫' => '赍',
 '賬' => '账',
 '賭' => '赌',
 '賰' => '䞐',
@@ -11566,12 +11939,12 @@ $zh2Hans = array(
 '購' => '购',
 '賽' => '赛',
 '賾' => '赜',
+'贃' => '𧹗',
 '贄' => '贽',
 '贅' => '赘',
 '贇' => '赟',
 '贈' => '赠',
 '贊' => '赞',
-'贋' => '赝',
 '贍' => '赡',
 '贏' => '赢',
 '贐' => '赆',
@@ -11580,7 +11953,6 @@ $zh2Hans = array(
 '贖' => '赎',
 '贗' => '赝',
 '贛' => '赣',
-'贜' => '赃',
 '赬' => '赪',
 '趕' => '赶',
 '趙' => '赵',
@@ -11600,16 +11972,19 @@ $zh2Hans = array(
 '躊' => '踌',
 '躋' => '跻',
 '躍' => '跃',
+'躎' => '䟢',
 '躑' => '踯',
 '躒' => '跞',
 '躓' => '踬',
 '躕' => '蹰',
 '躚' => '跹',
+'躝' => '𨅬',
 '躡' => '蹑',
 '躥' => '蹿',
 '躦' => '躜',
 '躪' => '躏',
 '軀' => '躯',
+'軉' => '𨉗',
 '車' => '车',
 '軋' => '轧',
 '軌' => '轨',
@@ -11618,6 +11993,7 @@ $zh2Hans = array(
 '軑' => '轪',
 '軒' => '轩',
 '軔' => '轫',
+'軗' => '𨐅',
 '軛' => '轭',
 '軟' => '软',
 '軤' => '轷',
@@ -11631,6 +12007,7 @@ $zh2Hans = array(
 '軼' => '轶',
 '軾' => '轼',
 '較' => '较',
+'輄' => '𨐈',
 '輅' => '辂',
 '輇' => '辁',
 '輈' => '辀',
@@ -11721,7 +12098,6 @@ $zh2Hans = array(
 '鄺' => '邝',
 '酇' => '酂',
 '酈' => '郦',
-'醖' => '酝',
 '醜' => '丑',
 '醞' => '酝',
 '醣' => '糖',
@@ -11747,10 +12123,12 @@ $zh2Hans = array(
 '釤' => '钐',
 '釧' => '钏',
 '釩' => '钒',
+'釳' => '𨰿',
 '釵' => '钗',
 '釷' => '钍',
 '釹' => '钕',
 '釺' => '钎',
+'釾' => '䥺',
 '鈀' => '钯',
 '鈁' => '钫',
 '鈃' => '钘',
@@ -11758,20 +12136,23 @@ $zh2Hans = array(
 '鈇' => '𫓧',
 '鈈' => '钚',
 '鈉' => '钠',
+'鈋' => '𨱂',
 '鈍' => '钝',
-'鈎' => '钩',
 '鈐' => '钤',
 '鈑' => '钣',
 '鈒' => '钑',
 '鈔' => '钞',
 '鈕' => '钮',
 '鈞' => '钧',
+'鈠' => '𨱁',
 '鈣' => '钙',
 '鈥' => '钬',
 '鈦' => '钛',
 '鈧' => '钪',
 '鈮' => '铌',
+'鈯' => '𨱄',
 '鈰' => '铈',
+'鈲' => '𨱃',
 '鈳' => '钶',
 '鈴' => '铃',
 '鈷' => '钴',
@@ -11782,6 +12163,7 @@ $zh2Hans = array(
 '鈾' => '铀',
 '鈿' => '钿',
 '鉀' => '钾',
+'鉁' => '𨱅',
 '鉅' => '钜',
 '鉈' => '铊',
 '鉉' => '铉',
@@ -11793,7 +12175,6 @@ $zh2Hans = array(
 '鉚' => '铆',
 '鉛' => '铅',
 '鉞' => '钺',
-'鉢' => '钵',
 '鉤' => '钩',
 '鉦' => '钲',
 '鉬' => '钼',
@@ -11825,14 +12206,15 @@ $zh2Hans = array(
 '銬' => '铐',
 '銱' => '铞',
 '銳' => '锐',
+'銶' => '𨱇',
 '銷' => '销',
-'銹' => '锈',
 '銻' => '锑',
 '銼' => '锉',
 '鋁' => '铝',
 '鋃' => '锒',
 '鋅' => '锌',
 '鋇' => '钡',
+'鋉' => '𨱈',
 '鋌' => '铤',
 '鋏' => '铗',
 '鋒' => '锋',
@@ -11846,7 +12228,6 @@ $zh2Hans = array(
 '鋨' => '锇',
 '鋩' => '铓',
 '鋪' => '铺',
-'鋭' => '锐',
 '鋮' => '铖',
 '鋯' => '锆',
 '鋰' => '锂',
@@ -11855,6 +12236,7 @@ $zh2Hans = array(
 '鋸' => '锯',
 '鋼' => '钢',
 '錁' => '锞',
+'錂' => '𨱋',
 '錄' => '录',
 '錆' => '锖',
 '錇' => '锫',
@@ -11877,13 +12259,12 @@ $zh2Hans = array(
 '錫' => '锡',
 '錮' => '锢',
 '錯' => '错',
-'録' => '录',
 '錳' => '锰',
 '錶' => '表',
 '錸' => '铼',
 '鍀' => '锝',
-'鍁' => '锨',
 '鍃' => '锪',
+'鍄' => '𨱉',
 '鍆' => '钔',
 '鍇' => '锴',
 '鍈' => '锳',
@@ -11899,6 +12280,7 @@ $zh2Hans = array(
 '鍥' => '锲',
 '鍩' => '锘',
 '鍬' => '锹',
+'鍮' => '𨱎',
 '鍰' => '锾',
 '鍵' => '键',
 '鍶' => '锶',
@@ -11912,7 +12294,6 @@ $zh2Hans = array(
 '鎔' => '镕',
 '鎖' => '锁',
 '鎘' => '镉',
-'鎚' => '锤',
 '鎛' => '镈',
 '鎝' => '𨱏',
 '鎡' => '镃',
@@ -11925,15 +12306,18 @@ $zh2Hans = array(
 '鎬' => '镐',
 '鎭' => '鎮',
 '鎮' => '镇',
+'鎯' => '𨱍',
 '鎰' => '镒',
 '鎲' => '镋',
 '鎳' => '镍',
 '鎵' => '镓',
-'é\8e¸' => 'é\95\8c',
+'é\8e·' => '𨰾',
 '鎿' => '镎',
 '鏃' => '镞',
+'鏆' => '𨱌',
 '鏇' => '镟',
 '鏈' => '链',
+'鏉' => '𨱒',
 '鏌' => '镆',
 '鏍' => '镙',
 '鏐' => '镠',
@@ -11954,23 +12338,28 @@ $zh2Hans = array(
 '鏵' => '铧',
 '鏷' => '镤',
 '鏹' => '镪',
+'鏺' => '䥽',
 '鏽' => '锈',
 '鐃' => '铙',
+'鐄' => '𨱑',
 '鐋' => '铴',
 '鐍' => '𫔎',
+'鐎' => '𨱓',
+'鐏' => '𨱔',
 '鐐' => '镣',
 '鐒' => '铹',
 '鐓' => '镦',
 '鐔' => '镡',
 '鐘' => '钟',
 '鐙' => '镫',
-'鐝' => '镢',
 '鐠' => '镨',
+'鐥' => '䦅',
 '鐦' => '锎',
 '鐧' => '锏',
 '鐨' => '镄',
 '鐫' => '镌',
 '鐮' => '镰',
+'鐯' => '䦃',
 '鐲' => '镯',
 '鐳' => '镭',
 '鐵' => '铁',
@@ -12010,8 +12399,10 @@ $zh2Hans = array(
 '閉' => '闭',
 '開' => '开',
 '閌' => '闶',
+'閍' => '𨸂',
 '閎' => '闳',
 '閏' => '闰',
+'閐' => '𨸃',
 '閑' => '闲',
 '閒' => '闲',
 '間' => '间',
@@ -12027,7 +12418,6 @@ $zh2Hans = array(
 '閬' => '阆',
 '閭' => '闾',
 '閱' => '阅',
-'閲' => '阅',
 '閶' => '阊',
 '閹' => '阉',
 '閻' => '阎',
@@ -12143,7 +12533,7 @@ $zh2Hans = array(
 '頸' => '颈',
 '頹' => '颓',
 '頻' => '频',
-'é ½' => 'é¢\93',
+'é¡\83' => 'ð©\96\96',
 '顆' => '颗',
 '題' => '题',
 '額' => '额',
@@ -12151,7 +12541,6 @@ $zh2Hans = array(
 '顏' => '颜',
 '顒' => '颙',
 '顓' => '颛',
-'顔' => '颜',
 '願' => '愿',
 '顙' => '颡',
 '顛' => '颠',
@@ -12170,13 +12559,16 @@ $zh2Hans = array(
 '颭' => '飐',
 '颮' => '飑',
 '颯' => '飒',
+'颰' => '𩙥',
 '颱' => '台',
 '颳' => '刮',
 '颶' => '飓',
+'颷' => '𩙪',
 '颸' => '飔',
 '颺' => '飏',
 '颻' => '飖',
 '颼' => '飕',
+'颾' => '𩙫',
 '飀' => '飗',
 '飄' => '飘',
 '飆' => '飙',
@@ -12227,6 +12619,7 @@ $zh2Hans = array(
 '餵' => '喂',
 '餶' => '馉',
 '餷' => '馇',
+'餸' => '𩠌',
 '餺' => '馎',
 '餼' => '饩',
 '餾' => '馏',
@@ -12239,7 +12632,6 @@ $zh2Hans = array(
 '饊' => '馓',
 '饋' => '馈',
 '饌' => '馔',
-'饑' => '饥',
 '饒' => '饶',
 '饗' => '飨',
 '饘' => '𫗴',
@@ -12255,6 +12647,7 @@ $zh2Hans = array(
 '馹' => '驲',
 '駁' => '驳',
 '駃' => '𫘝',
+'駎' => '𩧨',
 '駐' => '驻',
 '駑' => '驽',
 '駒' => '驹',
@@ -12262,14 +12655,17 @@ $zh2Hans = array(
 '駕' => '驾',
 '駘' => '骀',
 '駙' => '驸',
+'駚' => '𩧫',
 '駛' => '驶',
 '駝' => '驼',
 '駟' => '驷',
-'駡' => '骂',
 '駢' => '骈',
+'駧' => '𩧲',
+'駩' => '𩧴',
 '駭' => '骇',
 '駰' => '骃',
 '駱' => '骆',
+'駶' => '𩧺',
 '駸' => '骎',
 '駻' => '𫘣',
 '駿' => '骏',
@@ -12281,11 +12677,16 @@ $zh2Hans = array(
 '騍' => '骒',
 '騎' => '骑',
 '騏' => '骐',
+'騔' => '𩨀',
 '騖' => '骛',
 '騙' => '骗',
+'騚' => '𩨊',
+'騝' => '𩨃',
+'騟' => '𩨈',
 '騠' => '𫘨',
 '騤' => '骙',
 '騧' => '䯄',
+'騪' => '𩨄',
 '騫' => '骞',
 '騭' => '骘',
 '騮' => '骝',
@@ -12301,6 +12702,7 @@ $zh2Hans = array(
 '驄' => '骢',
 '驅' => '驱',
 '驊' => '骅',
+'驋' => '𩧯',
 '驌' => '骕',
 '驍' => '骁',
 '驏' => '骣',
@@ -12332,12 +12734,14 @@ $zh2Hans = array(
 '鬩' => '阋',
 '鬮' => '阄',
 '鬱' => '郁',
+'鬹' => '鬶',
 '魎' => '魉',
 '魘' => '魇',
 '魚' => '鱼',
 '魛' => '鱽',
 '魟' => '𫚉',
 '魢' => '鱾',
+'魥' => '𩽹',
 '魨' => '鲀',
 '魯' => '鲁',
 '魴' => '鲂',
@@ -12349,15 +12753,15 @@ $zh2Hans = array(
 '鮊' => '鲌',
 '鮋' => '鲉',
 '鮍' => '鲏',
-'鮎' => '鲇',
 '鮐' => '鲐',
 '鮑' => '鲍',
 '鮒' => '鲋',
 '鮓' => '鲊',
 '鮚' => '鲒',
 '鮜' => '鲘',
-'鮝' => '鲞',
 '鮞' => '鲕',
+'鮟' => '𩽾',
+'鮣' => '䲟',
 '鮦' => '鲖',
 '鮪' => '鲔',
 '鮫' => '鲛',
@@ -12366,9 +12770,11 @@ $zh2Hans = array(
 '鮰' => '𫚔',
 '鮳' => '鲓',
 '鮶' => '鲪',
+'鮸' => '𩾃',
 '鮺' => '鲝',
 '鯀' => '鲧',
 '鯁' => '鲠',
+'鯄' => '𩾁',
 '鯆' => '𫚙',
 '鯇' => '鲩',
 '鯉' => '鲤',
@@ -12387,19 +12793,21 @@ $zh2Hans = array(
 '鯨' => '鲸',
 '鯪' => '鲮',
 '鯫' => '鲰',
-'鯰' => 'é²\87',
+'鯱' => 'ð©¾\87',
 '鯴' => '鲺',
+'鯶' => '𩽼',
 '鯷' => '鳀',
 '鯽' => '鲫',
 '鯿' => '鳊',
 '鰁' => '鳈',
 '鰂' => '鲗',
 '鰃' => '鳂',
+'鰆' => '䲠',
 '鰈' => '鲽',
 '鰉' => '鳇',
+'鰌' => '䲡',
 '鰍' => '鳅',
 '鰏' => '鲾',
-'鰐' => '鳄',
 '鰒' => '鳆',
 '鰓' => '鳃',
 '鰜' => '鳒',
@@ -12408,6 +12816,7 @@ $zh2Hans = array(
 '鰣' => '鲥',
 '鰤' => '𫚕',
 '鰥' => '鳏',
+'鰧' => '䲢',
 '鰨' => '鳎',
 '鰩' => '鳐',
 '鰭' => '鳍',
@@ -12424,6 +12833,7 @@ $zh2Hans = array(
 '鰾' => '鳔',
 '鱂' => '鳉',
 '鱅' => '鳙',
+'鱇' => '𩾌',
 '鱈' => '鳕',
 '鱉' => '鳖',
 '鱒' => '鳟',
@@ -12447,12 +12857,12 @@ $zh2Hans = array(
 '鳥' => '鸟',
 '鳧' => '凫',
 '鳩' => '鸠',
-'鳬' => '凫',
 '鳲' => '鸤',
 '鳳' => '凤',
 '鳴' => '鸣',
 '鳶' => '鸢',
 '鳷' => '𫛛',
+'鳼' => '𪉃',
 '鳾' => '䴓',
 '鴃' => '𫛞',
 '鴆' => '鸩',
@@ -12462,6 +12872,7 @@ $zh2Hans = array(
 '鴕' => '鸵',
 '鴗' => '𫁡',
 '鴛' => '鸳',
+'鴜' => '𪉈',
 '鴝' => '鸲',
 '鴞' => '鸮',
 '鴟' => '鸱',
@@ -12470,6 +12881,7 @@ $zh2Hans = array(
 '鴨' => '鸭',
 '鴯' => '鸸',
 '鴰' => '鸹',
+'鴲' => '𪉆',
 '鴴' => '鸻',
 '鴷' => '䴕',
 '鴻' => '鸿',
@@ -12481,6 +12893,7 @@ $zh2Hans = array(
 '鵑' => '鹃',
 '鵒' => '鹆',
 '鵓' => '鹁',
+'鵚' => '𪉍',
 '鵜' => '鹈',
 '鵝' => '鹅',
 '鵠' => '鹄',
@@ -12516,19 +12929,19 @@ $zh2Hans = array(
 '鶻' => '鹘',
 '鶼' => '鹣',
 '鶿' => '鹚',
-'鷀' => '鹚',
 '鷁' => '鹢',
 '鷂' => '鹞',
-'鷄' => '鸡',
 '鷈' => '䴘',
 '鷊' => '鹝',
 '鷓' => '鹧',
+'鷔' => '𪉑',
 '鷖' => '鹥',
 '鷗' => '鸥',
 '鷙' => '鸷',
 '鷚' => '鹨',
 '鷥' => '鸶',
 '鷦' => '鹪',
+'鷨' => '𪉊',
 '鷫' => '鹔',
 '鷯' => '鹩',
 '鷲' => '鹫',
@@ -12556,10 +12969,12 @@ $zh2Hans = array(
 '鹽' => '盐',
 '麗' => '丽',
 '麥' => '麦',
+'麨' => '𪎊',
 '麩' => '麸',
 '麪' => '面',
 '麫' => '面',
 '麯' => '曲',
+'麲' => '𪎉',
 '麴' => '曲',
 '麵' => '面',
 '麼' => '么',
@@ -12605,25 +13020,167 @@ $zh2Hans = array(
 '龔' => '龚',
 '龕' => '龛',
 '龜' => '龟',
+'龭' => '𩨎',
+'龯' => '𨱆',
+'𠌥' => '𠆿',
+'𠏢' => '𠉗',
+'𠞆' => '𠛆',
+'𠠎' => '𠚳',
+'𡄔' => '𠴢',
+'𡄣' => '𠵸',
+'𡅏' => '𠲥',
+'𡑭' => '𡋗',
+'𡓾' => '𡋀',
 '𡞵' => '㛟',
 '𡠹' => '㛿',
 '𡢃' => '㛠',
+'𡮉' => '𡭜',
+'𡮣' => '𡭬',
 '𡻕' => '岁',
+'𡾱' => '㟜',
+'𢣚' => '𢘝',
+'𢣭' => '𢘞',
+'𢶫' => '𢫞',
+'𢷮' => '𢫊',
+'𢹿' => '𢬦',
+'𣙎' => '㭣',
+'𣝕' => '𣘷',
+'𣞻' => '𣘓',
+'𣠲' => '𣑶',
+'𣯴' => '𣭤',
+'𣾷' => '㳢',
+'𣿉' => '𣶫',
+'𤁣' => '𣺽',
+'𤒎' => '𤊀',
 '𤪺' => '㻘',
 '𤫩' => '㻏',
+'𤳸' => '𤳄',
+'𤸫' => '𤶧',
+'𥌃' => '𥅘',
+'𥕥' => '𥐰',
+'𥖅' => '𥐯',
+'𥢢' => '䅪',
+'𥨐' => '𥧂',
+'𥵃' => '𥱔',
+'𥵊' => '𥭉',
+'𥸠' => '𥮋',
+'𥼽' => '𥹥',
+'𥽖' => '𥺇',
+'𥿊' => '𦈈',
+'𦂅' => '𦈒',
+'𦃄' => '𦈗',
+'𦢈' => '𣍨',
+'𦣎' => '𦟗',
+'𦪽' => '𦨩',
+'𧔥' => '𧒭',
+'𧜗' => '䘞',
 '𧜵' => '䙊',
 '𧝞' => '䘛',
-'𧦧' => '𫍟',
 '𧩙' => '䜥',
+'𧳟' => '𧳕',
 '𧵳' => '䞌',
+'𧶔' => '𧹓',
+'𧶧' => '䞎',
+'𨄣' => '𨀱',
+'𨅍' => '𨁴',
+'𨇁' => '𧿈',
+'𨇞' => '𨅫',
+'𨈊' => '𨂺',
+'𨈌' => '𨄄',
+'𨊰' => '䢀',
+'𨊸' => '䢁',
+'𨊻' => '𨐆',
 '𨋢' => '䢂',
+'𨎮' => '𨐉',
+'𨏠' => '𨐇',
+'𨏥' => '𨐊',
+'𨤻' => '𨤰',
+'𨥛' => '𨱀',
 '𨦫' => '䦀',
 '𨧜' => '䦁',
+'𨧱' => '𨱊',
+'𨫒' => '𨱐',
+'𨮂' => '𨱕',
 '𨯅' => '䥿',
+'𨳑' => '𨸁',
+'𨳕' => '𨸀',
+'𨴗' => '𨸅',
+'𨵩' => '𨸆',
+'𨵸' => '𨸇',
+'𨶀' => '𨸉',
+'𨶏' => '𨸊',
+'𨶮' => '𨸌',
+'𨶲' => '𨸋',
+'𨷲' => '𨸎',
+'𨽏' => '𨸘',
+'𩎢' => '𩏾',
+'𩏪' => '𩏽',
+'𩓣' => '𩖕',
+'𩗀' => '𩙦',
+'𩘀' => '𩙩',
+'𩘝' => '𩙭',
+'𩘹' => '𩙨',
+'𩘺' => '𩙬',
+'𩙈' => '𩙰',
+'𩚛' => '𩟿',
+'𩚥' => '𩠀',
+'𩚵' => '𩠁',
+'𩛆' => '𩠂',
+'𩛩' => '𩠃',
+'𩜇' => '𩠉',
+'𩜦' => '𩠆',
+'𩜵' => '𩠊',
+'𩝔' => '𩠋',
+'𩞄' => '𩠎',
+'𩞦' => '𩠏',
+'𩞯' => '䭪',
+'𩟐' => '𩠅',
+'𩠴' => '𩠠',
+'𩡺' => '𩧦',
+'𩢡' => '𩧬',
+'𩢴' => '𩧵',
+'𩢸' => '𩧳',
+'𩢾' => '𩧮',
+'𩣏' => '𩧶',
 '𩣑' => '䯃',
 '𩣵' => '𩧻',
+'𩣺' => '𩧼',
+'𩤊' => '𩧩',
+'𩤙' => '𩨆',
+'𩤲' => '𩨉',
+'𩤸' => '𩨅',
+'𩥄' => '𩨋',
+'𩥇' => '𩨍',
+'𩥉' => '𩧱',
+'𩥑' => '𩨌',
+'𩧆' => '𩨐',
+'𩭙' => '𩬣',
+'𩯳' => '𩯒',
+'𩰀' => '𩬤',
+'𩳤' => '𩲒',
+'𩵩' => '𩽺',
+'𩵹' => '𩽻',
 '𩶘' => '䲞',
-'𫚒' => '軿',
+'𩶰' => '𩽿',
+'𩶱' => '𩽽',
+'𩷰' => '𩾄',
+'𩸃' => '𩾅',
+'𩸦' => '𩾆',
+'𩿪' => '𪉄',
+'𪀦' => '𪉅',
+'𪀾' => '𪉋',
+'𪁈' => '𪉉',
+'𪁖' => '𪉌',
+'𪂆' => '𪉎',
+'𪃍' => '𪉐',
+'𪃏' => '𪉏',
+'𪄆' => '𪉔',
+'𪄕' => '𪉒',
+'𪇳' => '𪉕',
+'𪋿' => '𪎍',
+'𪔵' => '𪔭',
+'𪘀' => '𪚏',
+'𪘯' => '𪚐',
 '《易乾' => '《易乾',
 '不著痕跡' => '不着痕迹',
 '不著邊際' => '不着边际',
@@ -12762,8 +13319,8 @@ $zh2Hans = array(
 '乾曜' => '乾曜',
 '乾构' => '乾构',
 '乾構' => '乾构',
-'乾枢' => '乾枢',
 '乾樞' => '乾枢',
+'乾枢' => '乾枢',
 '乾栋' => '乾栋',
 '乾棟' => '乾栋',
 '乾步' => '乾步',
@@ -13473,6 +14030,7 @@ $zh2Hans = array(
 '尋著稱' => '寻著称',
 '尋著者' => '寻著者',
 '尋著述' => '寻著述',
+'將軍抽俥' => '将军抽俥',
 '將軍抽車' => '将军抽車',
 '尼乾陀' => '尼乾陀',
 '展著' => '展着',
@@ -14790,6 +15348,8 @@ $zh2Hans = array(
 '繞著稱' => '绕著称',
 '繞著者' => '绕著者',
 '繞著述' => '绕著述',
+'綳著勁' => '绷着劲',
+'綳著臉' => '绷着脸',
 '編著' => '编著',
 '纏著' => '缠着',
 '纏著書' => '缠著书',
@@ -14918,7 +15478,9 @@ $zh2Hans = array(
 '著者' => '著者',
 '著身' => '著身',
 '著述' => '著述',
+'蒙汗葯' => '蒙汗药',
 '蒙著' => '蒙着',
+'蒙葯' => '蒙药',
 '蒙著書' => '蒙著书',
 '蒙著书' => '蒙著书',
 '蒙著作' => '蒙著作',
@@ -15512,7 +16074,6 @@ $zh2Hans = array(
 '鬱氏' => '鬱氏',
 '魏徵' => '魏徵',
 '魚乾乾' => '鱼干干',
-'鯰魚' => '鲶鱼',
 '麯崇裕' => '麯崇裕',
 '麴義' => '麴义',
 '麴义' => '麴义',
index e986323..29c3d7e 100644 (file)
@@ -234,6 +234,12 @@ class InfoAction extends FormlessAction {
                // Page ID (number not localised, as it's a database ID)
                $pageInfo['header-basic'][] = array( $this->msg( 'pageinfo-article-id' ), $id );
 
+               // Language in which the page content is (supposed to be) written
+               $pageLang = $title->getPageLanguage()->getCode();
+               $pageInfo['header-basic'][] = array( $this->msg( 'pageinfo-language' ),
+                       Language::fetchLanguageName( $pageLang, $lang->getCode() )
+                       . ' ' . $this->msg( 'parentheses', $pageLang ) );
+
                // Search engine status
                $pOutput = new ParserOutput();
                if ( isset( $pageProperties['noindex'] ) ) {
diff --git a/includes/conf/Conf.php b/includes/conf/Conf.php
deleted file mode 100644 (file)
index 22c621f..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-<?php
-/**
- * Base configuration class.
- *
- * Get some configuration variable:
- *   $mySetting = Conf::get( 'mySetting' );
- *
- * Copyright © 2011 Chad Horohoe <chadh@wikimedia.org>
- * http://www.mediawiki.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @defgroup Config Config
- */
-abstract class Conf {
-       /**
-        * A special value to return when default config items do not exist. Use
-        * this to differentiate from 'null' which may be a valid config value.
-        *
-        * Please don't ever make this a default (or accepted) value for your
-        * configuration. It's liable to Break Something.
-        */
-       const NO_SUCH_DEFAULT_CONFIG = 'mw-no-such-default-config';
-
-       /**
-        * The Wiki ID (usually $wgDBname)
-        * @var String
-        */
-       private $wikiId;
-
-       /**
-        * Singleton
-        * @var Conf
-        */
-       private static $__instance;
-
-       /**
-        * Stores of the core defaults, extension defaults and wiki overrides
-        *
-        * @var array
-        */
-       protected $defaults, $extensionDefaults, $values = array();
-
-       /**
-        * Constructor. Children should call this if implementing.
-        * @param $confConfig Array of config vars
-        */
-       protected function __construct( $confConfig ) {
-               $this->wikiId = $confConfig['wikiId'];
-               $this->defaults = (array)(new DefaultSettings);
-               // @todo implement this:
-               // $this->initExtensionDefaults();
-               $this->initChangedSettings();
-               if( isset( $confConfig['exposeGlobals'] ) ) {
-                       $this->exposeGlobals();
-               }
-       }
-
-       /**
-        * Expose all config variables as globals for back-compat. Ewwww.
-        */
-       private function exposeGlobals() {
-               $allVars = $this->defaults + $this->extensionDefaults + $this->values;
-               foreach( $allVars as $name => $value ) {
-                       $var = 'wg' . ucfirst( $name );
-                       $GLOBALS[$var] = $value;
-               }
-       }
-
-       /**
-        * Load customized settings from whatever the data store is
-        */
-       abstract protected function initChangedSettings();
-
-       /**
-        * Apply a setting to the backend store
-        * @param $name String Name of the setting
-        * @param $value mixed Value to store
-        */
-       abstract protected function writeSetting( $name, $value );
-
-       /**
-        * Initialize a new child class based on a configuration array
-        * @param $conf Array of configuration settings, see $wgConfiguration
-        *   for details
-        * @throws MWException
-        * @return Conf
-        */
-       private static function newFromSettings( $conf ) {
-               $class = ucfirst( $conf['type'] ) . 'Conf';
-               if( !class_exists( $class ) ) {
-                       throw new MWException( '$wgConfiguration misconfigured with invalid "type"' );
-               }
-               return new $class( $conf );
-       }
-
-       /**
-        * Get the singleton if we don't want a specific wiki
-        * @param bool|string $wiki An id for a remote wiki
-        * @throws MWException
-        * @return Conf child
-        */
-       public static function load( $wiki = false ) {
-               throw new MWException( "Not working yet, don't attempt to use this" );
-               if( !self::$__instance ) {
-                       /**global $wgConfiguration;
-                       self::$__instance = self::newFromSettings( $wgConfiguration );*/
-               }
-               if( $wiki && $wiki != self::$__instance->getWikiId() ) {
-                       // Load configuration for a different wiki, not sure how
-                       // we're gonna do this yet
-                       return null;
-               }
-               return self::$__instance;
-       }
-
-       /**
-        * Get a property from the configuration database, falling back
-        * to DefaultSettings if undefined
-        * @param $name String Name of setting to retrieve.
-        * @param $wiki String An id for a remote wiki
-        * @return mixed
-        */
-       public static function get( $name, $wiki = false ) {
-               return self::load( $wiki )->retrieveSetting( $name );
-       }
-
-       /**
-        * Actually get the setting, checking overrides, extensions, then core.
-        *
-        * @param $name String Name of setting to get
-        * @return mixed
-        */
-       public function retrieveSetting( $name ) {
-               // isset() is ok here, because the default is to return null anyway.
-               if( isset( $this->values[$name] ) ) {
-                       return $this->values[$name];
-               } elseif( isset( $this->extensionDefaults[$name] ) ) {
-                       return $this->extensionDefaults[$name];
-               } elseif( isset( $this->defaults[$name] ) ) {
-                       return $this->defaults[$name];
-               } else {
-                       wfDebug( __METHOD__ . " called for unknown configuration item '$name'\n" );
-                       return null;
-               }
-       }
-
-       /**
-        * Apply a setting to the configuration object.
-        * @param $name String Name of the config item
-        * @param $value mixed Any value to use for the key
-        * @param $write bool Whether to write to the static copy (db, file, etc)
-        */
-       public function applySetting( $name, $value, $write = false ) {
-               $this->values[$name] = $value;
-               if( $write && ( $value !== $this->getDefaultSetting( $name ) ) ) {
-                       $this->writeSetting( $name, $value );
-               }
-       }
-
-       /**
-        * Get the default for a given setting name. Check core and then extensions.
-        * Will return NO_SUCH_DEFAULT_CONFIG if the config item does not exist.
-        *
-        * @param $name String Name of setting
-        * @return mixed
-        */
-       public function getDefaultSetting( $name ) {
-               // Use array_key_exists() here, to make sure we return a default
-               // that's really set to null.
-               if( array_key_exists( $name, $this->defaults ) ) {
-                       return $this->defaults[$name];
-               } elseif( array_key_exists( $name, $this->extensionDefaults ) ) {
-                       return $this->extensionDefaults[$name];
-               } else {
-                       wfDebug( __METHOD__ . " called for unknown configuration item '$name'\n" );
-                       return self::NO_SUCH_DEFAULT_CONFIG;
-               }
-       }
-
-       /**
-        * What is the wiki ID for this site?
-        * @return String
-        */
-       public function getWikiId() {
-               return $this->wikiId;
-       }
-}
diff --git a/includes/conf/DatabaseConf.php b/includes/conf/DatabaseConf.php
deleted file mode 100644 (file)
index d8f644d..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/**
- * Database configuration class
- *
- * Copyright © 2011 Chad Horohoe <chadh@wikimedia.org>
- * http://www.mediawiki.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Config
- */
-class DatabaseConf extends Conf {
-       /**
-        * @see Conf::initChangedSettings()
-        */
-       protected function initChangedSettings() {
-               $res = wfGetDB( DB_MASTER )->select( 'config', '*', array(), __METHOD__ );
-               foreach( $res as $row ) {
-                       $this->values[$row->cf_name] = unserialize( $row->cf_value );
-               }
-       }
-
-       /**
-        * @see Conf::writeSetting()
-        *
-        * @param $name
-        * @param $value
-        *
-        * @return bool
-        */
-       protected function writeSetting( $name, $value ) {
-               $dbw = wfGetDB( DB_MASTER );
-               $value = serialize( $value );
-               if( $dbw->selectRow( 'config', 'cf_name', array( 'cf_name' => $name ), __METHOD__ ) ) {
-                       $dbw->update( 'config', array( 'cf_value' => $value ),
-                               array( 'cf_name' => $name ), __METHOD__ );
-               } else {
-                       $dbw->insert( 'config',
-                               array( 'cf_name' => $name, 'cf_value' => $value ), __METHOD__ );
-               }
-               return (bool)$dbw->affectedRows();
-       }
-}
diff --git a/includes/conf/DefaultSettings.php b/includes/conf/DefaultSettings.php
deleted file mode 100644 (file)
index 4601f04..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * Utility class for holding all of our default settings.
- *
- * Copyright © 2011 Chad Horohoe <chadh@wikimedia.org>
- * http://www.mediawiki.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Config
- */
-final class DefaultSettings {
-       public $mySetting = 'defaultValue';
-}
index 048ac39..0e22fce 100644 (file)
@@ -33,6 +33,9 @@ class TextContent extends AbstractContent {
                parent::__construct( $model_id );
 
                if ( $text === null || $text === false ) {
+                       wfWarn( "TextContent constructed with \$text = " . var_export( $text, true ) . "! "
+                                       . "This may indicate an error in the caller's scope." );
+
                        $text = '';
                }
 
index f42df55..f0a3c15 100644 (file)
@@ -814,7 +814,9 @@ class LocalFile extends File {
                foreach ( $files as $file ) {
                        # Check that the base file name is part of the thumb name
                        # This is a basic sanity check to avoid erasing unrelated directories
-                       if ( strpos( $file, $this->getName() ) !== false ) {
+                       if ( strpos( $file, $this->getName() ) !== false
+                               || strpos( $file, "-thumbnail" ) !== false // "short" thumb name
+                       ) {
                                $purgeList[] = "{$dir}/{$file}";
                        }
                }
index 805ff0f..33bf69c 100644 (file)
@@ -85,9 +85,6 @@ class Ibm_db2Updater extends DatabaseUpdater {
                        array( 'addField', 'revision',      'rev_sha1',         'patch-rev_sha1.sql' ),
                        array( 'addField', 'archive',       'ar_sha1',          'patch-ar_sha1.sql' ),
 
-                       // 1.20
-                       array( 'addTable', 'config',                            'patch-config.sql' ),
-
                        // 1.21
                        array( 'addField',      'revision',     'rev_content_format',           'patch-revision-rev_content_format.sql' ),
                        array( 'addField',      'revision',     'rev_content_model',            'patch-revision-rev_content_model.sql' ),
index 80ecb1f..4f1c4d0 100644 (file)
@@ -832,7 +832,7 @@ U kan MediaWiki installeer.',
        'config-env-bad' => 'Die omgewing is gekontroleer.
 U kan nie MediaWiki installeer nie.</span>',
        'config-env-php' => 'PHP $1 is tans geïnstalleer.',
-       'config-no-db' => "Kon nie 'n geskikte databasisdrywer vind nie!",
+       'config-no-db' => "Kon nie 'n geskikte databasisdrywer vind nie!", # Fuzzy
        'config-memory-raised' => 'PHP se <code>memory_limit</code> is $1, en is verhoog tot $2.',
        'config-memory-bad' => "'''Waarskuwing:''' PHP se <code>memory_limit</code> is $1.
 Dit is waarskynlik te laag.
@@ -941,7 +941,7 @@ Die skep van tabelle word oorgeslaan.",
        'config-install-interwiki-exists' => "'''Waarskuwing''': Die interwiki-tabel bevat reeds inskrywings.
 Die standaardlys word oorgeslaan.",
        'config-install-stats' => 'Inisialiseer statistieke',
-       'config-install-keys' => 'Genereer geheime sleutel',
+       'config-install-keys' => 'Genereer geheime sleutel', # Fuzzy
        'config-install-sysop' => "Skep 'n gebruiker vir die administrateur",
        'config-install-subscribe-fail' => 'Kon nie vir MediaWiki-announce inskryf nie: $1',
        'config-install-mainpage' => 'Skep die hoofblad met standaard inhoud',
@@ -956,7 +956,7 @@ Dit bevat al u instellings.
 U sal dit moet [$1 aflaai] en dit in die hoofgids van u wiki-installasie plaas; in dieselfde gids as index.php.
 '''Let wel''': As u dit nie nou doen nie, sal die gegenereerde konfigurasielêer nie later meer beskikbaar wees nadat u die installasie afgesluit het nie.
 
-As dit gedoen is, kan u '''[u $2 wiki besoek]'''.",
+As dit gedoen is, kan u '''[u $2 wiki besoek]'''.", # Fuzzy
        'config-download-localsettings' => 'Laai LocalSettings.php af',
        'config-help' => 'hulp',
        'mainpagetext' => "'''MediaWiki is suksesvol geïnstalleer.'''",
@@ -983,7 +983,8 @@ $messages['aln'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWikit]',
 );
 
-/** Amharic (አማርኛ) */
+/** Amharic (አማርኛ)
+ */
 $messages['am'] = array(
        'mainpagetext' => "'''MediaWiki በትክክል ማስገባቱ ተከናወነ።'''",
        'mainpagedocfooter' => "ስለ ዊኪ ሶፍትዌር ጥቅም ለመረዳት፣ [//meta.wikimedia.org/wiki/Help:Contents User's Guide] ያንብቡ።
@@ -1029,7 +1030,7 @@ $messages['ang'] = array(
  */
 $messages['ar'] = array(
        'config-desc' => 'مثبت لميدياويكي',
-       'config-title' => 'ميدياويكي 1$ التثبيت',
+       'config-title' => 'ميدياويكي 1$ التثبيت', # Fuzzy
        'config-information' => 'معلومات',
        'config-back' => '→ ارجع',
        'config-continue' => 'استمر ←',
@@ -1087,7 +1088,8 @@ $messages['ary'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista dyal l-modakaraṫ ĝla versyonaṫ jdad dyal MediaWiki]',
 );
 
-/** Egyptian Spoken Arabic (مصرى) */
+/** Egyptian Spoken Arabic (مصرى)
+ */
 $messages['arz'] = array(
        'mainpagetext' => "''' ميدياويكى اتنزلت بنجاح.'''",
        'mainpagedocfooter' => 'اسال [//meta.wikimedia.org/wiki/Help:Contents دليل اليوزر] للمعلومات حوالين استخدام برنامج الويكى.
@@ -1113,7 +1115,8 @@ $messages['as'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Asturian (asturianu) */
+/** Asturian (asturianu)
+ */
 $messages['ast'] = array(
        'mainpagetext' => "'''MediaWiki instalóse correchamente.'''",
        'mainpagedocfooter' => "Visita la [//meta.wikimedia.org/wiki/Help:Contents Guía d'usuariu] pa saber cómo usar esti software wiki.
@@ -1125,7 +1128,8 @@ $messages['ast'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de corréu de les ediciones de MediaWiki]",
 );
 
-/** Kotava (Kotava) */
+/** Kotava (Kotava)
+ */
 $messages['avk'] = array(
        'mainpagetext' => "'''MediaWiki inkeyen talpeyot.'''",
 );
@@ -1164,7 +1168,7 @@ $messages['az'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-poçt siyahısı]',
 );
 
-/** Bashkir (Ð\91ашҡортса)
+/** Bashkir (башҡортса)
  * @author Haqmar
  */
 $messages['ba'] = array(
@@ -1191,7 +1195,8 @@ $messages['bar'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglisten voh de neichen MediaWiki-Versionen]',
 );
 
-/** Southern Balochi (بلوچی مکرانی) */
+/** Southern Balochi (بلوچی مکرانی)
+ */
 $messages['bcc'] = array(
        'mainpagetext' => "'''مدیا وی کی گون موفقیت نصب بوت.'''",
        'mainpagedocfooter' => "مشورت کنیت گون  [//meta.wikimedia.org/wiki/Help:Contents User's Guide] په گشیترین اطلاعات په استفاده چه برنامه ویکی.
@@ -1202,7 +1207,8 @@ $messages['bcc'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Bikol Central (Bikol Central) */
+/** Bikol Central (Bikol Central)
+ */
 $messages['bcl'] = array(
        'mainpagetext' => "'''Instalado na an MediaWiki.'''",
        'mainpagedocfooter' => "Konsultarón tabì an [//meta.wikimedia.org/wiki/Help:Contents User's Guide] para sa impormasyon sa paggamit nin progama kaining wiki.
@@ -1214,7 +1220,8 @@ $messages['bcl'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Belarusian (беларуская) */
+/** Belarusian (беларуская)
+ */
 $messages['be'] = array(
        'mainpagetext' => "'''MediaWiki паспяхова ўсталяваная.'''",
        'mainpagedocfooter' => 'Гл. [//meta.wikimedia.org/wiki/Help:Contents Дапаможнік карыстальніка (англ.)] па далейшыя звесткі аб карыстанні вікі-праграмамі.
@@ -1226,7 +1233,7 @@ $messages['be'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ліставанне аб выпусках MediaWiki (англ.)]',
 );
 
-/** Belarusian (Taraškievica orthography) (‪беларуская (тарашкевіца)‬)
+/** Belarusian (Taraškievica orthography) (беларуская (тарашкевіца)‎)
  * @author EugeneZelenko
  * @author Jim-by
  * @author Wizardist
@@ -2398,7 +2405,7 @@ $messages['bn'] = array(
        'config-license-none' => 'কোনো লাইসেন্স ফুটার নেই',
        'config-license-cc-by-sa' => 'ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন শেয়ার অ্যালাইক',
        'config-license-cc-by-nc-sa' => 'ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন নন-কমার্শিয়াল শেয়ার অ্যালাইক',
-       'config-license-cc-0' => 'ক্রিয়েটিভ কমন্স জিরো',
+       'config-license-cc-0' => 'ক্রিয়েটিভ কমন্স জিরো', # Fuzzy
        'config-license-pd' => 'পাবলিক ডোমেইন',
        'config-license-cc-choose' => 'একটি স্বনির্ধারিত ক্রিয়েটিভ কমন্স লাইসেন্ট নির্বাচন করুন',
        'config-email-settings' => 'ই-মেইল সেটিংস',
@@ -2427,7 +2434,8 @@ $messages['bn'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়াউইকি রিলিজের মেইলিং লিস্ট]',
 );
 
-/** Bishnupria Manipuri (বিষ্ণুপ্রিয়া মণিপুরী) */
+/** Bishnupria Manipuri (বিষ্ণুপ্রিয়া মণিপুরী)
+ */
 $messages['bpy'] = array(
        'mainpagetext' => "'''মিডিয়াউইকি হবাবালা ইয়া ইন্সটল ইল.'''",
        'mainpagedocfooter' => 'উইকি সফটৱ্যার এহান আতানির বারে দরকার ইলে [//meta.wikimedia.org/wiki/Help:Contents আতাকুরার গাইড]হানর পাঙলাক নেগা।
@@ -2593,7 +2601,7 @@ Staliadur paouezet.",
 
 Ma rit gant un herberc'hiañ kenrannet, e tlefe ho herberc'hier bezañ pourchaset deoc'h un anv ostiz reizh en teulioù titouriñ.
 
-M'emaoc'h o staliañ ur servijer Windows ha ma rit gant MySQL, marteze ne'z aio ket en-dro \"localhost\" evel anv servijer. Ma ne dro ket, klaskit ober gant \"127.0.0.1\" da chomlec'h IP lechel.",
+M'emaoc'h o staliañ ur servijer Windows ha ma rit gant MySQL, marteze ne'z aio ket en-dro \"localhost\" evel anv servijer. Ma ne dro ket, klaskit ober gant \"127.0.0.1\" da chomlec'h IP lechel.", # Fuzzy
        'config-db-host-oracle' => 'TNS an diaz roadennoù :',
        'config-db-wiki-settings' => 'Anavezout ar wiki-mañ',
        'config-db-name' => 'Anv an diaz roadennoù :',
@@ -2930,7 +2938,7 @@ $messages['ca'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu (''listserv'') per a anuncis del MediaWiki]",
 );
 
-/** Chechen (Ð\9dохчийн)
+/** Chechen (нохчийн)
  * @author Sasan700
  */
 $messages['ce'] = array(
@@ -2944,7 +2952,8 @@ $messages['ce'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Хаам бохьуьйту араяларца башхонца керла MediaWiki].',
 );
 
-/** Cebuano (Cebuano) */
+/** Cebuano (Cebuano)
+ */
 $messages['ceb'] = array(
        'mainpagetext' => "'''Malamposon ang pag-instalar sa MediaWiki.'''",
        'mainpagedocfooter' => 'Konsultaha ang [//meta.wikimedia.org/wiki/Help:Contents Giya sa mga gumagamit] alang sa impormasyon unsaon paggamit niining wiki nga software.
@@ -2982,7 +2991,8 @@ $messages['cps'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista sang mga ginapadal-an sang sulat sang MediaWiki]',
 );
 
-/** Crimean Turkish (Cyrillic script) (‪Къырымтатарджа (Кирилл)‬) */
+/** Crimean Turkish (Cyrillic script) (къырымтатарджа (Кирилл)‎)
+ */
 $messages['crh-cyrl'] = array(
        'mainpagetext' => "'''MediaWiki мувафакъиетнен къурулды.'''",
        'mainpagedocfooter' => "Бу викининъ ёл-ёругъыны [//meta.wikimedia.org/wiki/Help:Contents User's Guide къулланыджы къылавузындан] огренип оласынъыз.
@@ -2993,7 +3003,8 @@ $messages['crh-cyrl'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-нинъ янъы версияларынынъ чыкъувындан хабер йиберюв].",
 );
 
-/** Crimean Turkish (Latin script) (‪Qırımtatarca (Latin)‬) */
+/** Crimean Turkish (Latin script) (qırımtatarca (Latin)‎)
+ */
 $messages['crh-latn'] = array(
        'mainpagetext' => "'''MediaWiki muvafaqiyetnen quruldı.'''",
        'mainpagedocfooter' => "Bu vikiniñ yol-yoruğını [//meta.wikimedia.org/wiki/Help:Contents User's Guide qullanıcı qılavuzından] ögrenip olasıñız.
@@ -3542,6 +3553,7 @@ $3
 Až to dokončíte, můžete '''[$2 vstoupit do své wiki]'''.",
        'config-download-localsettings' => 'Stáhnout LocalSettings.php',
        'config-help' => 'nápověda',
+       'config-nofile' => 'Soubor „$1“ nelze nalézt. Byl smazán?',
        'mainpagetext' => "'''MediaWiki byla úspěšně nainstalována.'''",
        'mainpagedocfooter' => '[//meta.wikimedia.org/wiki/Help:Contents Uživatelská příručka] vám napoví, jak MediaWiki používat.
 
@@ -3552,12 +3564,14 @@ Až to dokončíte, můžete '''[$2 vstoupit do své wiki]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-mailová konference oznámení MediaWiki]',
 );
 
-/** Kashubian (kaszëbsczi) */
+/** Kashubian (kaszëbsczi)
+ */
 $messages['csb'] = array(
        'mainpagetext' => "'''MediaWiki òsta zainstalowónô.'''",
 );
 
-/** Chuvash (Чӑвашла) */
+/** Chuvash (Чӑвашла)
+ */
 $messages['cv'] = array(
        'mainpagetext' => "'''«MediaWiki» вики-движока лартасси ăнăçлă вĕçленчĕ.'''",
        'mainpagedocfooter' => 'Ку википе ĕçлеме пулăшакан информацине [//meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 усăç руководствинче] тупма пултаратăр.
@@ -4078,7 +4092,7 @@ Es muss daher mit den nächsten Seite weitergemacht werden.",
 Sofern Änderungen vorgenommen werden sollen, kann man auf „← Zurück“ klicken.',
        'config-install-step-done' => 'erledigt',
        'config-install-step-failed' => 'gescheitert',
-       'config-install-extensions' => 'Softwareerweiterungen',
+       'config-install-extensions' => 'Programmerweiterungen',
        'config-install-database' => 'Datenbank wird eingerichtet',
        'config-install-schema' => 'Datenschema wird erstellt',
        'config-install-pg-schema-not-exist' => 'Das PostgesSQL-Datenschema ist nicht vorhanden',
@@ -4144,7 +4158,7 @@ Sobald alles erledigt wurde, kann auf das '''[$2 Wiki zugegriffen werden]'''. Wi
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
 );
 
-/** German (formal address) (‪Deutsch (Sie-Form)‬)
+/** German (formal address) (Deutsch (Sie-Form)‎)
  * @author MichaelFrey
  */
 $messages['de-formal'] = array(
@@ -4163,7 +4177,7 @@ $messages['de-formal'] = array(
 $messages['diq'] = array(
        'config-your-language' => 'Zıwanê şıma:',
        'config-wiki-language' => 'Wiki zıwan:',
-       'config-back' => '← Peyd',
+       'config-back' => '← Peyser',
        'config-continue' => 'Dewam ke',
        'config-page-language' => 'Zıwan',
        'config-page-welcome' => 'Şıma xeyr ameyê MediaWiki!',
@@ -4204,6 +4218,7 @@ $messages['diq'] = array(
        'config-license-cc-by' => 'Creative Commons Attribution',
        'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
        'config-license-pd' => 'Malê Şari',
+       'config-extensions' => 'Olekeni',
        'mainpagetext' => "'''MediaWiki vıst ra ser, vıraziya.'''",
        'mainpagedocfooter' => 'Seba gurenayış u eyarkerdışê Wiki-Softwarey [//meta.wikimedia.org/wiki/Help:Contents İdarê karberi] de mıracaet ke.
 
@@ -4214,7 +4229,8 @@ $messages['diq'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki ra lista serbest-dayışê postey]',
 );
 
-/** Lower Sorbian (dolnoserbski) */
+/** Lower Sorbian (dolnoserbski)
+ */
 $messages['dsb'] = array(
        'mainpagetext' => "'''MediaWiki jo se wuspěšnje instalěrowało.'''",
        'mainpagedocfooter' => "Pomoc pśi wužywanju softwary wiki namakajoš pód [//meta.wikimedia.org/wiki/Help:Contents User's Guide].
@@ -4239,7 +4255,8 @@ $messages['dtp'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lis pininsuratan pinolabus do ModiaWiki]',
 );
 
-/** Greek (Ελληνικά) */
+/** Greek (Ελληνικά)
+ */
 $messages['el'] = array(
        'mainpagetext' => "'''To λογισμικό MediaWiki εγκαταστάθηκε με επιτυχία.'''",
        'mainpagedocfooter' => 'Περισσότερες πληροφορίες σχετικά με τη χρήση και με τη ρύθμιση παραμέτρων θα βρείτε στους συνδέσμους: [//meta.wikimedia.org/wiki/MediaWiki_localisation Οδηγίες για τροποποίηση του περιβάλλοντος εργασίας] και [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Εγχειρίδιο χρήστη].',
@@ -4821,7 +4838,7 @@ Cuando lo haya hecho, usted puede '''[$2  entrar en su wiki]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de distribución de MediaWiki]',
 );
 
-/** Español (formal) (Español (formal))
+/** español (formal) (español (formal))
  * @author Dferg
  */
 $messages['es-formal'] = array(
@@ -4946,7 +4963,8 @@ $messages['eu'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiren argitalpenen posta zerrenda]',
 );
 
-/** Extremaduran (estremeñu) */
+/** Extremaduran (estremeñu)
+ */
 $messages['ext'] = array(
        'mainpagetext' => "'''MeyaGüiqui s'á istalau satihatoriamenti.'''",
        'mainpagedocfooter' => "Consurta la [//meta.wikimedia.org/wiki/Help:Contents User's Guide] pa sabel mas al tentu el huncionamientu el software güiqui.
@@ -4978,10 +4996,27 @@ $messages['fa'] = array(
        'config-page-readme' => 'مرا بخوان',
        'config-page-releasenotes' => 'یادداشت‌های انتشار',
        'config-page-existingwiki' => 'ویکی موجود',
+       'config-restart' => 'بله ، آن دوباره راه اندازی کن',
+       'config-sidebar' => '* [//www.mediawiki.org صفحهٔ اصلی مدیاویکی]
+* [//www.mediawiki.org/wiki/Help:Contents راهنمای کاربر]
+* [//www.mediawiki.org/wiki/Manual:Contents راهنمای مدیر]
+* [//www.mediawiki.org/wiki/Manual:FAQ پرسش‌های رایج]
+----
+* <doclink href=Readme>مرا بخوان</doclink>
+* <doclink href=ReleaseNotes>یادداشت‌های انتشار</doclink>
+* <doclink href=Copying>نسخه برداری</doclink>
+* <doclink href=UpgradeDoc>ارتقا</doclink>',
+       'config-env-php' => 'پی‌اچ‌پی $1 نصب شده است.',
+       'config-env-php-toolow' => 'پی‌اچ‌پی $1 نصب شده است.
+در هر صورت، مدیاویکی نیاز به پی‌اچ‌پی نسخهٔ $2 یا بالاتر دارد.',
        'config-db-type' => 'نوع پایگاه اطلاعات:',
        'config-db-host' => 'میزبان پایگاه اطلاعات:',
        'config-db-username' => 'نام کاربری پایگاه اطلاعات:',
        'config-db-password' => 'کلمه عبور پایگاه اطلاعات:',
+       'config-header-mysql' => 'تنظیمات مای‌اس‌کیو‌ال',
+       'config-connection-error' => '$1.
+
+میزبان، نام کاربری و گذرواژه را بررسی کنید و دوباره امتحان کنید.',
        'config-site-name' => 'نام ویکی:',
        'config-site-name-blank' => 'نام تارنما را وارد کنید.',
        'config-project-namespace' => 'فضای نام پروژه:',
@@ -4991,9 +5026,12 @@ $messages['fa'] = array(
        'config-admin-email' => 'پست الکترونیکی شما:',
        'config-profile-private' => 'ویکی خصوصی',
        'config-license' => 'حق تکثیر و مجوز:',
+       'config-license-none' => 'بدون پاورقی مجوز',
+       'config-license-pd' => 'دامنه عمومی',
        'config-license-cc-choose' => 'انتخاب یک مجوز سفارشی عوام خلاق',
        'config-email-settings' => 'تنظیمات پست الکترونیکی',
        'config-upload-enable' => 'فعال سازی بارگذاری پرونده',
+       'config-logo' => 'نشانی نامواره:',
        'config-install-step-done' => 'انجام شد',
        'config-install-step-failed' => 'ناموفق بود',
        'config-help' => 'راهنما',
@@ -5078,7 +5116,7 @@ Et voi asentaa MediaWikiä.',
        'config-env-php-toolow' => 'PHP $1 on asennettu.
 MediaWiki vaatii PHP:n version $2 tai uudemman.',
        'config-no-db' => 'Sopivaa tietokanta-ajuria ei löytynyt! Sinun täytyy asentaa tietokanta-ajurit PHP:lle.
-Seuraavat tietokantatyypit ovat tuettuja: $1.',
+Seuraavat tietokantatyypit ovat tuettuja: $1.', # Fuzzy
        'config-safe-mode' => "'''Varoitus:''' PHP:n [http://www.php.net/features.safe-mode safe mode] -tila on aktiivinen.
 Se voi aiheuttaa ongelmia erityisesti tiedostojen tallentamisen ja matemaattisten kaavojen kanssa.",
        'config-pcre' => 'PCRE-tukimoduuli puuttuu.
@@ -5192,7 +5230,8 @@ Tarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvitta
 Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) – {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) – {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) – {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) – {{GRAMMAR:illative|{{SITENAME}}}} (yöhön).",
 );
 
-/** Faroese (føroyskt) */
+/** Faroese (føroyskt)
+ */
 $messages['fo'] = array(
        'mainpagetext' => "'''Innlegging av Wiki-ritbúnaði væleydnað.'''",
 );
@@ -5202,6 +5241,7 @@ $messages['fo'] = array(
  * @author Crochet.david
  * @author Gomoko
  * @author Grondin
+ * @author Guillom
  * @author Hashar
  * @author IAlex
  * @author Jean-Frédéric
@@ -5446,7 +5486,7 @@ Si vous ne voyez pas le système de base de données que vous essayez d'utiliser
        'config-support-mysql' => '* $1 est le premier choix pour MediaWiki et est mieux pris en charge ([http://www.php.net/manual/en/mysql.installation.php how to compile PHP with MySQL support])',
        'config-support-postgres' => "* $1 est un système de base de données populaire et ''open source'' qui peut être une alternative à MySQL ([http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]). Il peut contenir quelques bogues mineurs et n'est pas recommandé dans un environnement de production.",
        'config-support-sqlite' => '* $1 est un système de base de données léger qui est bien supporté. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], utilise PDO)',
-       'config-support-oracle' => '* $1 est un système commercial de gestion de base de données d’entreprise. ([Http://www.php.net/manual/en/oci8.installation.php Comment compiler PHP avec le support OCI8])',
+       'config-support-oracle' => '* $1 est un système commercial de gestion de base de données d’entreprise. ([http://www.php.net/manual/en/oci8.installation.php Comment compiler PHP avec le support OCI8])',
        'config-support-ibm_db2' => "* $1 est une base de données d'entreprise commerciale.",
        'config-header-mysql' => 'Paramètres de MySQL',
        'config-header-postgres' => 'Paramètres de PostgreSQL',
@@ -5748,7 +5788,8 @@ Lorsque c'est fait, vous pouvez '''[$2 accéder à votre wiki]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]',
 );
 
-/** Cajun French (français cadien) */
+/** Cajun French (français cadien)
+ */
 $messages['frc'] = array(
        'mainpagetext' => "'''Vous avez bien installé MediaWiki.'''",
        'mainpagedocfooter' => 'Lisez la [//meta.wikimedia.org/wiki/Help:Contents Guide des Useurs] pour apprendre à user le wiki software.
@@ -5935,12 +5976,14 @@ $messages['frr'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
 );
 
-/** Friulian (furlan) */
+/** Friulian (furlan)
+ */
 $messages['fur'] = array(
        'mainpagetext' => "'''MediaWiki e je stade instalade cun sucès.'''",
 );
 
-/** Western Frisian (Frysk) */
+/** Western Frisian (Frysk)
+ */
 $messages['fy'] = array(
        'mainpagetext' => "'''MediaWiki-program goed ynstallearre.'''",
        'mainpagedocfooter' => "Rieplachtsje de [//meta.wikimedia.org/wiki/Help:Ynhâldsopjefte hantlieding] foar ynformaasje oer it gebrûk fan 'e wikisoftware.
@@ -5965,7 +6008,8 @@ $messages['ga'] = array(
 agus an [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar úsáideora] chun cabhair úsáide agus fíoraíochta a fháil.',
 );
 
-/** Gagauz (Gagauz) */
+/** Gagauz (Gagauz)
+ */
 $messages['gag'] = array(
        'mainpagetext' => "'''MediaWiki başarılan kuruldu.'''",
        'mainpagedocfooter' => "Vikilän iş uurunda bilgi almaa için [//meta.wikimedia.org/wiki/Help:Contents User's Guide] sayfasına bakınız
@@ -5977,7 +6021,8 @@ $messages['gag'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Simplified Gan script (‪赣语(简体)‬) */
+/** Simplified Gan script (赣语(简体)‎)
+ */
 $messages['gan-hans'] = array(
        'mainpagetext' => "'''安装正MediaWiki喽。'''",
        'mainpagedocfooter' => '参看[//meta.wikimedia.org/wiki/Help:Contents 用户指南]里头会话到啷用wiki软件
@@ -5989,7 +6034,8 @@ $messages['gan-hans'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 发布email清单]',
 );
 
-/** Traditional Gan script (‪贛語(繁體)‬) */
+/** Traditional Gan script (贛語(繁體)‎)
+ */
 $messages['gan-hant'] = array(
        'mainpagetext' => "'''安裝正MediaWiki嘍。'''",
        'mainpagedocfooter' => '參看[//meta.wikimedia.org/wiki/Help:Contents 用戶指南]裡頭會話到啷用wiki軟件
@@ -6640,7 +6686,7 @@ E <doclink href=Copying>Kopi vu dr GNU General Public-Lizänz</doclink> sott zä
        'config-sidebar' => '* [//www.mediawiki.org MediaWiki Websyte vu MediaWiki]
 * [//www.mediawiki.org/wiki/Help:Contents Nutzeraaleitig zue MediaWiki]
 * [//www.mediawiki.org/wiki/Manual:Contents Adminischtratoreaaleitig zue MediaWiki]
-* [//www.mediawiki.org/wiki/Manual:FAQ Vilmol gstellti Froge zue MediaWiki]',
+* [//www.mediawiki.org/wiki/Manual:FAQ Vilmol gstellti Froge zue MediaWiki]', # Fuzzy
        'config-env-good' => 'D Inschtallationsumgäbig isch prieft wore.
 Du chasch MediaWiki inschtalliere.',
        'config-env-bad' => 'D Inschtallationsumgäbigisch prieft wore.
@@ -6652,7 +6698,7 @@ Du chasch MediaWiki nit inschtalliere.',
 Wänn Du ne Websyte mit ere große Bsuechrzahl bedrybsch, sottsch e weng ebis läse iber [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-Normalisierig (en)].",
        'config-unicode-update-warning' => "'''Warnig:''' Di inschtalliert Version vum Unicode-Normalisierigswrapper verwändet e elteri Version vu dr Bibliothek vum [http://site.icu-project.org/ ICU-Projäkt].
 Du sottsch si [//www.mediawiki.org/wiki/Unicode_normalization_considerations aktualisiere], wänn Dor d Verwändig vu Unicode wichtig isch.",
-       'config-no-db' => 'S isch kei adäquate Datebanktryyber gfunde wore!',
+       'config-no-db' => 'S isch kei adäquate Datebanktryyber gfunde wore!', # Fuzzy
        'config-no-fts3' => "'''Warnig:''' SQLite isch ohni s [//sqlite.org/fts3.html FTS3-Modul] kumpiliert wore, s stehn kei Suechfunktione z Verfiegig.",
        'config-register-globals' => "'''Warnig: Dr Parameter <code>[http://php.net/register_globals register_globals]</code> vu PHP isch aktiviert.'''
 '''Är sott deaktiviert wäre, wänn des megli isch.'''
@@ -6708,12 +6754,14 @@ $messages['gu'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce મિડીયાવિકિ રીલીઝ મેઇલીંગ લીસ્ટ]',
 );
 
-/** Manx (Gaelg) */
+/** Manx (Gaelg)
+ */
 $messages['gv'] = array(
        'mainpagetext' => "'''Ta MediaWiki currit stiagh nish.'''",
 );
 
-/** Hakka (Hak-kâ-fa) */
+/** Hakka (Hak-kâ-fa)
+ */
 $messages['hak'] = array(
        'mainpagetext' => "'''Yí-kîn sṳ̀n-kûng ôn-chông MediaWiki.'''",
        'mainpagedocfooter' => 'chhiáng fóng-mun [//meta.wikimedia.org/wiki/Help:Contents Yung-fu sú-chhak] yî-khi̍p sṳ́-yung chhṳ́ wiki ngiôn-khien ke sin-sit!
@@ -6725,7 +6773,8 @@ $messages['hak'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki fat-phu email chhîn-tân]',
 );
 
-/** Hawaiian (Hawai`i) */
+/** Hawaiian (Hawai`i)
+ */
 $messages['haw'] = array(
        'mainpagetext' => "'''Ua pono ka ho‘ouka ‘ana o MediaWiki.'''",
 );
@@ -7274,7 +7323,8 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce רשימת התפוצה על השקת גרסאות]',
 );
 
-/** Hindi (हिन्दी) */
+/** Hindi (हिन्दी)
+ */
 $messages['hi'] = array(
        'mainpagetext' => "'''मीडियाविकिका इन्स्टॉलेशन पूरा हो गया हैं ।'''",
        'mainpagedocfooter' => 'विकि सॉफ्टवेयरके इस्तेमाल के लिये [//meta.wikimedia.org/wiki/Help:Contents उपयोगकर्ता गाईड] देखें ।
@@ -7311,7 +7361,8 @@ $messages['hil'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista sang mga ginapadal-an sang sulat kon may paguha-on nga MediaWiki]",
 );
 
-/** Croatian (hrvatski) */
+/** Croatian (hrvatski)
+ */
 $messages['hr'] = array(
        'mainpagetext' => "'''Softver MediaWiki je uspješno instaliran.'''",
        'mainpagedocfooter' => 'Pogledajte [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentaciju o prilagodbi sučelja]
@@ -7396,6 +7447,7 @@ Slědowace typy datoweje banki so podpěruja: $1.
 Jeli wužiwaš zhromadnje wužiwany serwer, proš swojeho poskićowarja, zo by přihódny ćěrjak datoweje banki instalował.
 Jeli sy PHP sam kompilował, konfiguruj jón znowa z aktiwizowanym programom datoweje banki, na přikład z pomocu <code>./configure --with-mysql</code>.
 Jeli sy PHP z Debianoweho abo Ubuntuoweho paketa instalował, dyrbiš tež modul php5-mysql instalować.',
+       'config-outdated-sqlite' => "'''Warnowanje''': maš SQLite $1, kotryž je starši hač minimalna trěbna wersija $2. SQLite njebudźe k dispoziciji stać.",
        'config-no-fts3' => "'''Warnowanje''': SQLite je so bjez [//sqlite.org/fts3.html FTS3-modula] kompilował, pytanske funkcije njebudu k dispoziciji stać.",
        'config-register-globals' => "'''Warnowanje: Funkcija <code>[http://php.net/register_globals register_globals]</code> PHP je zmóžnjena.'''
 '''Znjemóžń ju, jeli móžeš.'''
@@ -7408,10 +7460,15 @@ To móže problemy zawinować, předewšěm, jeli so datajowe nahraća a podpěr
        'config-xml-bad' => 'XML-modul za PHP faluje.
 MediaWiki trjeba funkcije w tutym modulu a njebudźe w tutej konfiguraciji fungować.
 Jeli wužiwaš Mandrake, instaluj paket php-xml.',
+       'config-pcre' => 'Zda so, zo modul za PCRE-podpěru faluje.
+MediaWiki trjeba z Perl kompatibelne funkcije za regularne wurazy, zo by fungował.',
+       'config-pcre-no-utf8' => "'''Ćežki zmylk''': Zda so, zo PCRE-modul za PHP ma so bjez PCRE_UTF8-podpěry kompilować.
+MediaWiki trjeba UTF-8-podpěru, zo by korektnje fungował.",
        'config-memory-raised' => 'PHP-parameter <code>memory_limit</code> je $1, je so na hódnotu $2 zwyšił.',
        'config-memory-bad' => "'''Warnowanje:''' PHP-parameter <code>memory_limit</code> ma hódnotu $1,
 To je najskerje přeniske.
 Instalacija móhła so njeporadźić!",
+       'config-ctype' => "'''Ćežki zmylk''': PHP dyrbi so z podpěru za [http://www.php.net/manual/en/ctype.installation.php rozšěrjenje Ctype] kompilować.",
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] je instalowany',
        'config-apc' => '[http://www.php.net/apc APC] je instalowany',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] je instalowany',
@@ -7460,6 +7517,7 @@ Změń ju jenož, jeli su přeswědčiwe přičiny za to.',
        'config-type-ibm_db2' => 'IBM DB2',
        'config-support-mysql' => '* $1 je primarny cil za MediaWiki a podpěruje so najlěpje ([http://www.php.net/manual/en/mysql.installation.php Nawod ke kompilowanju  PHP z  MySQL-podpěru])',
        'config-support-postgres' => '* $1 je popularny system datoweje banki zjawneho žórła jako alternatiwa k MySQL ([http://www.php.net/manual/en/pgsql.installation.php nawod za kompilowanje PHP z podpěru PostgreSQL]). Móhło hišće někotre zmylki eksistować, a njeporuča so jón w produktiwnej wokolinje wužiwać.',
+       'config-support-oracle' => '* $1 je komercielna předewzaćelska datowa banka. ([http://www.php.net/manual/en/oci8.installation.php Nawod za kompilowanje PHP z OCI8-podpěru])',
        'config-support-ibm_db2' => '* $1 je komercielna předewzaćelska datowa banka.',
        'config-header-mysql' => 'Nastajenja MySQL',
        'config-header-postgres' => 'Nastajenja PostgreSQL',
@@ -7826,7 +7884,7 @@ Telepítés megszakítva.',
 
 Ha megosztott webtárhelyet használsz, a szolgáltató dokumentációjában megtalálható a helyes hosztnév.
 
-Ha Windows-alapú szerverre telepítesz, és MySQL-t használsz, a „localhost” nem biztos, hogy működni fog. Ha így van, próbáld meg a „127.0.0.1” helyi IP-cím használatát.',
+Ha Windows-alapú szerverre telepítesz, és MySQL-t használsz, a „localhost” nem biztos, hogy működni fog. Ha így van, próbáld meg a „127.0.0.1” helyi IP-cím használatát.', # Fuzzy
        'config-db-host-oracle' => 'Adatbázis TNS:',
        'config-db-wiki-settings' => 'A wiki azonosítása',
        'config-db-name' => 'Adatbázisnév:',
@@ -8203,7 +8261,7 @@ Ha végeztél a fájl elhelyezésével, '''[$2 beléphetsz a wikibe]'''.",
 $messages['hu-formal'] = array(
        'config-localsettings-upgrade' => "'''Figyelmeztetés''': már létezik a <code>LocalSettings.php</code> fájl.
 A szoftver frissíthető.
-Adja meg a <code>\$wgUpgradeKey</code>-ben található kulcsot a beviteli mezőben",
+Adja meg a <code>\$wgUpgradeKey</code>-ben található kulcsot a beviteli mezőben", # Fuzzy
        'config-session-expired' => 'Úgy tűnik, hogy a munkamenetadatok lejártak.
 A munkamenetek élettartama a következőre van beállítva: $1.
 Az érték növelhető a php.ini <code>session.gc_maxlifetime</code> beállításának módosításával.
@@ -8218,7 +8276,7 @@ Ellenőrizze, hogy a php.ini-ben a <code>session.save_path</code> beállítás a
 Alapvető ellenőrzés, ami megmondja, hogy a környezet alkalmas-e a MediaWiki számára.
 Ha probléma merülne fel a telepítés során, meg kell adnia mások számára az alább megjelenő információkat.',
        'config-unicode-pure-php-warning' => "'''Figyelmeztetés''': Az [http://pecl.php.net/intl intl PECL kiterjesztés] nem érhető el Unicode normalizáláshoz.
-Ha nagy látogatottságú oldalt üzemeltet, itt találhat információkat [//www.mediawiki.org/wiki/Unicode_normalization_considerations a témáról].",
+Ha nagy látogatottságú oldalt üzemeltet, itt találhat információkat [//www.mediawiki.org/wiki/Unicode_normalization_considerations a témáról].", # Fuzzy
        'config-register-globals' => "'''Figyelmeztetés: A PHP <code>[http://php.net/register_globals register_globals]</code> beállítása engedélyezve van.'''
 '''Tiltsa le, ha van rá lehetősége.'''
 A MediaWiki működőképes a beállítás használata mellett, de a szerver biztonsági kockázatnak lesz kitéve.",
@@ -8227,7 +8285,7 @@ A bélyegképek készítése engedélyezve lesz, ha engedélyezi a feltöltések
        'config-db-name-help' => 'Válassza ki a wikije azonosítására használt nevet.
 Nem tartalmazhat szóközt vagy kötőjelet.
 
-Ha megosztott webtárhelyet használ, a szolgáltatója vagy egy konkrét adatbázisnevet ad önnek használatra, vagy létrehozhat egyet a vezérlőpulton keresztül.',
+Ha megosztott webtárhelyet használ, a szolgáltatója vagy egy konkrét adatbázisnevet ad önnek használatra, vagy létrehozhat egyet a vezérlőpulton keresztül.', # Fuzzy
        'config-db-install-help' => 'Adja meg a felhasználónevet és jelszót, amivel a telepítő csatlakozhat az adatbázishoz.',
        'config-db-wiki-help' => 'Adja meg azt a felhasználónevet és jelszót, amivel a wiki fog csatlakozni az adatbázishoz működés közben.
 Ha a fiók nem létezik és a telepítést végző fiók rendelkezik megfelelő jogosultsággal, egy új fiók készül a megadott a névvel, azon minimális jogosultságkörrel, ami a wiki működéséhez szükséges.',
@@ -8238,7 +8296,7 @@ Ez sokkal hatékonyabb a MySQL UTF-8-módjától, és lehetővé teszi, hogy a t
 '''UTF-8-módban''' MySQL tudja, hogy milyen karakterkészlettel van kódolva az adat, megfelelően van megjelenítve és konvertálva, de
 nem használhatja a [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane] feletti karaktereket.",
        'config-db-schema-help' => 'A fenti sémák általában megfelelőek.
-Csak akkor módosítson rajta, ha szükség van rá.',
+Csak akkor módosítson rajta, ha szükség van rá.', # Fuzzy
        'config-sqlite-parent-unwritable-nogroup' => 'Nem lehet létrehozni az adatok tárolásához szükséges <code><nowiki>$1</nowiki></code> könyvtárat, mert a webszerver nem írhat a szülőkönyvtárba (<code><nowiki>$2</nowiki></code>).
 
 A telepítő nem tudta megállapíteni, hogy melyik felhasználói fiókon fut a webszerver.
@@ -8266,7 +8324,7 @@ Ez tartalmazza az összes beállítást.
 [$1 Le kell töltenie], és el kell helyeznie a MediaWiki telepítési könyvtárába (az a könyvtár, ahol az index.php van).
 '''Megjegyzés''': Ha ezt most nem teszi meg, és kilép, a generált fájl nem lesz elérhető a későbbiekben.
 
-Ha ezzel készen van, '''[$2 beléphet a wikibe]'''.",
+Ha ezzel készen van, '''[$2 beléphet a wikibe]'''.", # Fuzzy
        'mainpagedocfooter' => "Ha segítségre van szüksége a wikiszoftver használatához, akkor keresse fel a [//meta.wikimedia.org/wiki/Help:Contents User's Guide] oldalt.
 
 == Alapok (angol nyelven) ==
@@ -8275,7 +8333,8 @@ Ha ezzel készen van, '''[$2 beléphet a wikibe]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-kiadások levelezőlistája]",
 );
 
-/** Armenian (Հայերեն) */
+/** Armenian (Հայերեն)
+ */
 $messages['hy'] = array(
        'mainpagetext' => "'''«MediaWiki» ծրագիրը հաջողությամբ տեղադրվեց։'''",
        'mainpagedocfooter' => "Այցելեք [//meta.wikimedia.org/wiki/Help:Contents User's Guide]՝ վիքի ծրագրային ապահովման օգտագործման մասին տեղեկությունների համար։
@@ -8991,7 +9050,7 @@ Instalasi dibatalkan.',
 
 Jika Anda menggunakan inang web bersama, penyedia inang Anda harus memberikan nama inang yang benar di dokumentasi mereka.
 
-Jika Anda menginstal pada server Windows dan menggunakan MySQL, "localhost" mungkin tidak dapat digunakan sebagai nama server. Jika demikian, coba "127.0.0.1" untuk alamat IP lokal.',
+Jika Anda menginstal pada server Windows dan menggunakan MySQL, "localhost" mungkin tidak dapat digunakan sebagai nama server. Jika demikian, coba "127.0.0.1" untuk alamat IP lokal.', # Fuzzy
        'config-db-host-oracle' => 'TNS basis data:',
        'config-db-host-oracle-help' => 'Masukkan [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name] yang sah; berkas tnsnames.ora harus dapat diakses oleh instalasi ini.<br />Jika Anda menggunakan pustaka klien 10g atau lebih baru, Anda juga dapat menggunakan metode penamaan [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
        'config-db-wiki-settings' => 'Identifikasi wiki ini',
@@ -9324,7 +9383,7 @@ Mengabaikan daftar bawaan.",
        'config-install-keys' => 'Membuat kunci rahasia',
        'config-insecure-keys' => "'''Peringatan:''' {{PLURAL:$2|Suatu|Beberapa}} kunci aman ($1) yang dibuat selama instalasi {{PLURAL:$2|tidak|tidak}} benar-benar aman. Pertimbangkan untuk mengubah {{PLURAL:$2|kunci|kunci-kunci}} tersebut secara manual.",
        'config-install-sysop' => 'Membuat akun pengguna pengurus',
-       'config-install-subscribe-fail' => 'Tidak dapat berlangganan mediawiki-announce',
+       'config-install-subscribe-fail' => 'Tidak dapat berlangganan mediawiki-announce', # Fuzzy
        'config-install-mainpage' => 'Membuat halaman utama dengan konten bawaan',
        'config-install-extension-tables' => 'Pembuatan tabel untuk ekstensi yang diaktifkan',
        'config-install-mainpage-failed' => 'Tidak dapat membuat halaman utama: $1',
@@ -9355,7 +9414,8 @@ Setelah melakukannya, Anda dapat '''[$2 memasuki wiki Anda]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]',
 );
 
-/** Interlingue (Interlingue) */
+/** Interlingue (Interlingue)
+ */
 $messages['ie'] = array(
        'mainpagetext' => "'''Software del wiki installat con successe.'''",
 );
@@ -9375,7 +9435,8 @@ $messages['ig'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce wéfù ndétu nke ozi MediaWiki]",
 );
 
-/** Iloko (Ilokano) */
+/** Iloko (Ilokano)
+ */
 $messages['ilo'] = array(
        'mainpagetext' => "'''Sibaballigi a nainstolar ti MediaWiki.'''",
 );
@@ -9393,7 +9454,8 @@ $messages['io'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki nova versioni posto-listo]",
 );
 
-/** Icelandic (íslenska) */
+/** Icelandic (íslenska)
+ */
 $messages['is'] = array(
        'mainpagetext' => "'''Uppsetning á MediaWiki heppnaðist.'''",
        'mainpagedocfooter' => 'Ráðfærðu þig við [//meta.wikimedia.org/wiki/Help:Contents Notandahandbókina] fyrir frekari upplýsingar um notkun wiki-hugbúnaðarins.
@@ -9483,7 +9545,7 @@ MediaWiki necessita di questo modulo per funzinare, che fornisce funzioni per le
        'config-memory-bad' => "''Attenzione:''' Il valore di <code>memory_limit</code> di PHP è $1.
 Probabilmente è troppo basso.
 L'installazione potrebbe non riuscire!",
-       'config-ctype' => "'''Errore''': PHP deve essere compilato con il supporto per la [http://www.php.net/manual/en/ctype.installation.php estensione Ctype].",
+       'config-ctype' => "'''Errore''': PHP deve essere compilato con il supporto per l'[http://www.php.net/manual/it/ctype.installation.php estensione Ctype].",
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] è installato',
        'config-apc' => '[http://www.php.net/apc APC] è installato',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] è installato',
@@ -9494,7 +9556,7 @@ La caching degli oggetti non è attivata.",
 Le miniature delle immagini saranno presenti se gli upload vengono abilitati.',
        'config-gd' => 'Trovata la GD Graphics Library built-in.
 Le miniature delle immagini saranno presenti se gli upload vengono abilitati.',
-       'config-no-scaling' => 'La GD library o ImageMagick non sono state trovate.
+       'config-no-scaling' => 'Impossibile trovare GD library o ImageMagick.
 Le miniature delle immagini saranno disabilitate.',
        'config-no-uri' => "'''Errore:''' Impossibile determinare l'URI attuale.
 Installazione interrotta.",
@@ -10122,7 +10184,8 @@ $messages['jut'] = array(
        'mainpagedocfooter' => "Se vores engelskspråĝede [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentåsje tilpasnenge'm åf æ brugergrænseflade] og [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide æ brugervejlednenge] før åplysnenger åpsætnenge'm og anvendelse.",
 );
 
-/** Javanese (Basa Jawa) */
+/** Javanese (Basa Jawa)
+ */
 $messages['jv'] = array(
        'mainpagetext' => "'''Prangkat empuk wiki wis suksès dipasang.'''",
        'mainpagedocfooter' => "Mangga maca [//meta.wikimedia.org/wiki/Help:Contents User's Guide] kanggo katrangan luwih langkung prakara panggunan prangkat empuk wiki
@@ -10132,8 +10195,90 @@ $messages['jv'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]",
 );
 
-/** Georgian (ქართული) */
+/** Georgian (ქართული)
+ * @author David1010
+ */
 $messages['ka'] = array(
+       'config-information' => 'ინფორმაცია',
+       'config-your-language' => 'თქვენი ენა:',
+       'config-wiki-language' => 'ვიკის ენა:',
+       'config-back' => '← უკან',
+       'config-continue' => 'გაგრძელება →',
+       'config-page-language' => 'ენა',
+       'config-page-welcome' => 'კეთილი იყოს თქვენი მობრძანება მედიავიკიში!',
+       'config-page-dbconnect' => 'მონაცემთა ბაზასთან დაკავშირება',
+       'config-page-dbsettings' => 'მონაცემთა ბაზის კონფიგურაცია',
+       'config-page-name' => 'სახელი',
+       'config-page-options' => 'პარამეტრები',
+       'config-page-install' => 'ინსტალაცია',
+       'config-page-complete' => 'დასრულებულია!',
+       'config-page-restart' => 'ინსტალაციის თავიდან დაწყება',
+       'config-page-readme' => 'წამიკითხე',
+       'config-page-copying' => 'ლიცენზია',
+       'config-page-upgradedoc' => 'განახლება',
+       'config-restart' => 'დიახ, თავიდან დაიწყეთ',
+       'config-sidebar' => '* [//www.mediawiki.org მედიავიკის ვებ-გვერდი]
+* [//www.mediawiki.org/wiki/Help:Contents/ka მომხმარებლების დახმარება]
+* [//www.mediawiki.org/wiki/Manual:Contents/ka ადმინისტრატორების დახმარება]
+* [//www.mediawiki.org/wiki/Manual:FAQ/ka FAQ]
+----
+* <doclink href=Readme>წამიკითხე</doclink>
+* <doclink href=ReleaseNotes>ინფორმაცია გამოშვებაზე</doclink>
+* <doclink href=Copying>ლიცენზია</doclink>
+* <doclink href=UpgradeDoc>განახლება</doclink>',
+       'config-db-type' => 'მონაცემთა ბაზის ტიპი:',
+       'config-db-host-oracle' => 'მონაცემთა ბაზის TNS:',
+       'config-db-name' => 'მონაცემთა ბაზის სახელი:',
+       'config-db-name-oracle' => 'მონაცემთა ბაზის სქემა:',
+       'config-db-username' => 'მონაცემთა ბაზის მომხმარებლის სახელი:',
+       'config-db-password' => 'მონაცემთა ბაზის პაროლი:',
+       'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 ორობითი',
+       'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
+       'config-db-port' => 'მონაცემთა ბაზის პორტი:',
+       'config-db-schema' => 'მედიავიკის სქემა:',
+       'config-header-mysql' => 'MySQL-ის პარამეტრები',
+       'config-header-postgres' => 'PostgreSQL-ის პარამეტრები',
+       'config-header-sqlite' => 'SQLite-ის პარამეტრები',
+       'config-header-oracle' => 'Oracle-ის პარამეტრები',
+       'config-header-ibm_db2' => 'IBM DB2-ის პარამეტრები',
+       'config-invalid-db-type' => 'არასწორი მონაცემთა ბაზის ტიპი',
+       'config-mysql-innodb' => 'InnoDB',
+       'config-mysql-myisam' => 'MyISAM',
+       'config-mysql-binary' => 'ორობითი',
+       'config-mysql-utf8' => 'UTF-8',
+       'config-site-name' => 'ვიკის სახელი:',
+       'config-site-name-blank' => 'შეიყვანეთ ვებ-გვერდის სახელი.',
+       'config-project-namespace' => 'პროექტის სახელთა სივრცე:',
+       'config-ns-generic' => 'პროექტი',
+       'config-ns-other' => 'სხვა (მიუთითეთ)',
+       'config-ns-other-default' => 'ჩემი ვიკი',
+       'config-admin-box' => 'ადმინისტრატორის ანგარიში',
+       'config-admin-name' => 'თქვენი სახელი:',
+       'config-admin-password' => 'პაროლი:',
+       'config-admin-password-confirm' => 'პაროლი ხელმეორედ:',
+       'config-admin-name-blank' => 'შეიყვანეთ ადმინისტრატორის მომხმარებლის სახელი.',
+       'config-admin-email' => 'ელ. ფოსტის მისამართი:',
+       'config-profile-wiki' => 'ტრადიციული ვიკი',
+       'config-profile-private' => 'დახურული ვიკი',
+       'config-license' => 'საავტორო უფლები და ლიცენზია:',
+       'config-license-cc-by-sa' => 'Creative Commons Attribution Share Alike',
+       'config-license-cc-by' => 'Creative Commons Attribution',
+       'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
+       'config-license-cc-0' => 'Creative Commons Zero (საზოგადოებრივი საკუთრება)',
+       'config-license-gfdl' => 'GNU Free Documentation License 1.3 ან უფრო გვიანი',
+       'config-license-pd' => 'საზოგადოებრივი საკუთრება',
+       'config-license-cc-choose' => 'აირჩიეთ Creative Commons-ის ლიცენზიიდან ერთ-ერთი',
+       'config-email-settings' => 'ელ. ფოსტის პარამეტრები',
+       'config-upload-settings' => 'სურათებისა და ფაილების ატვირთვა',
+       'config-upload-enable' => 'ფაილების ატვირთვის ჩართვა',
+       'config-logo' => 'ლოგოს URL:',
+       'config-cc-again' => 'აირჩიეთ კიდევ ერთხელ...',
+       'config-extensions' => 'გაფართოებები',
+       'config-install-step-done' => 'შესრულდა',
+       'config-install-step-failed' => 'ვერ მოხერხდა',
+       'config-install-tables' => 'ცხრილების შექმნა',
+       'config-download-localsettings' => 'LocalSettings.php-ის გადმოწერა',
+       'config-help' => 'დახმარება',
        'mainpagetext' => "'''მედიავიკი წარმატებით ჩაიტვირთა.'''",
        'mainpagedocfooter' => 'ვიკი პროგრამის გამოყენების ინფორმაციისთვის იხილეთ [//meta.wikimedia.org/wiki/Help:Contents მომხმარებლის მეგზური].
 
@@ -10144,7 +10289,8 @@ $messages['ka'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce მედიავიკის გამოცემის დაგზავნის სია]',
 );
 
-/** Kara-Kalpak (Qaraqalpaqsha) */
+/** Kara-Kalpak (Qaraqalpaqsha)
+ */
 $messages['kaa'] = array(
        'mainpagetext' => "'''MediaWiki tabıslı ornatıldı.'''",
        'mainpagedocfooter' => "Wiki bag'darlamasın qollanıw haqqındag'i mag'lıwmat usın [//meta.wikimedia.org/wiki/Help:Contents Paydalanıwshılar qollanbasınan] ken'es alın'.
@@ -10189,7 +10335,8 @@ $messages['kiu'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki ra lista serbest-daena postey]",
 );
 
-/** Kazakh (Arabic script) (‫قازاقشا (تٴوتە)‬) */
+/** Kazakh (Arabic script) (قازاقشا (تٴوتە)‏)
+ */
 $messages['kk-arab'] = array(
        'mainpagetext' => "'''مەدىياۋىيكىي بۋماسى ٴساتتى ورناتىلدى.'''",
        'mainpagedocfooter' => 'ۋىيكىي باعدارلامالىق جاساقتاماسىن قالاي قولداناتىن اقپاراتى ٴۇشىن [//meta.wikimedia.org/wiki/Help:Contents پايدالانۋشىلىق نۇسقاۋلارىنان] كەڭەس الىڭىز.
@@ -10200,7 +10347,8 @@ $messages['kk-arab'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce مەدىياۋىيكىي شىعۋ تۋرالى حات تاراتۋ ٴتىزىمى]',
 );
 
-/** Kazakh (Cyrillic script) (‪Қазақша (кирил)‬) */
+/** Kazakh (Cyrillic script) (қазақша (кирил)‎)
+ */
 $messages['kk-cyrl'] = array(
        'mainpagetext' => "'''МедиаУики бумасы сәтті орнатылды.'''",
        'mainpagedocfooter' => 'Уики бағдарламалық жасақтамасын қалай қолданатын ақпараты үшін [//meta.wikimedia.org/wiki/Help:Contents Пайдаланушылық нұсқауларынан] кеңес алыңыз.
@@ -10211,7 +10359,8 @@ $messages['kk-cyrl'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаУики шығу туралы хат тарату тізімі]',
 );
 
-/** Kazakh (Latin script) (‪Qazaqşa (latın)‬) */
+/** Kazakh (Latin script) (qazaqşa (latın)‎)
+ */
 $messages['kk-latn'] = array(
        'mainpagetext' => "'''MedïaWïkï bwması sätti ornatıldı.'''",
        'mainpagedocfooter' => 'Wïkï bağdarlamalıq jasaqtamasın qalaý qoldanatın aqparatı üşin [//meta.wikimedia.org/wiki/Help:Contents Paýdalanwşılıq nusqawlarınan] keñes alıñız.
@@ -10252,7 +10401,8 @@ $messages['km'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce បញ្ជី​ពិភាក្សា​ការផ្សព្វផ្សាយ​របស់​មេឌាវិគី]',
 );
 
-/** Kannada (ಕನ್ನಡ) */
+/** Kannada (ಕನ್ನಡ)
+ */
 $messages['kn'] = array(
        'mainpagetext' => "'''ವಿಕಿ ತಂತ್ರಾಂಶವನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಅನುಸ್ಥಾಪಿಸಲಾಯಿತು.'''",
        'mainpagedocfooter' => 'ವಿಕಿ ತಂತ್ರಾಂಶವನ್ನು ಬಳಸುವ ಬಗ್ಗೆ ಮಾಹಿತಿಗೆ [//meta.wikimedia.org/wiki/Help:Contents ಬಳಕೆದಾರರಿಗೆ ನಿರ್ದೇಶನ ಪುಟ] ನೋಡಿ.
@@ -10273,7 +10423,7 @@ $messages['ko'] = array(
        'config-title' => 'MediaWiki $1 설치',
        'config-information' => '정보',
        'config-localsettings-upgrade' => '<code>LocalSettings.php</code> 파일이 감지되었습니다.
\9d´ ì\84¤ì¹\98를 ì\97\85ê·¸ë \88ì\9d´ë\93\9cí\95\98려면 ì\95\84ë\9e\98 ì\83\81ì\9e\90ì\97\90 <code>$wgUpgradeKey</code>ì\9d\98 ê°\92ì\9d\84 ì\9e\85ë ¥í\95´ì£¼세요.
\9d´ ì\84¤ì¹\98를 ì\97\85ê·¸ë \88ì\9d´ë\93\9cí\95\98려면 ì\95\84ë\9e\98 ì\83\81ì\9e\90ì\97\90 <code>$wgUpgradeKey</code>ì\9d\98 ê°\92ì\9d\84 ì\9e\85ë ¥í\95\98세요.
 LocalSettings.php에 찾으세요.',
        'config-localsettings-cli-upgrade' => 'LocalSettings.php 파일이 감지되었습니다.
 이 설치를 업그레이드하려면 update.php를 대신 실행하세요',
@@ -10285,7 +10435,7 @@ LocalSettings.php에 찾으세요.',
 $1',
        'config-localsettings-incomplete' => '기존 LocalSettings.php가 완전하지 않은 것 같습니다.
 $1 변수가 설정되어 있지 않습니다.
\9d´ ë³\80ì\88\98ê°\80 ì\84¤ì \95ë\90\98ë\8f\84ë¡\9d LocalSettings.php를 ë³\80ê²½í\95\98고 "계속"을 클릭하세요.',
\9d´ ë³\80ì\88\98ê°\80 ì\84¤ì \95ë\90\98ë\8f\84ë¡\9d LocalSettings.php를 ë°\94꾸고 "계속"을 클릭하세요.',
        'config-localsettings-connection-error' => 'LocalSettings.php 또는 AdminSettings.php에 지정한 설정을 사용하여 데이터베이스에 연결할 때 오류가 발생했습니다. 이러한 설정을 수정하고 다시 시도하세요.
 
 $1',
@@ -10303,12 +10453,12 @@ php.ini를 확인하고 <code>session.save_path</code>가 적절한 디렉토리
        'config-back' => '← 뒤로',
        'config-continue' => '계속 →',
        'config-page-language' => '언어',
-       'config-page-welcome' => '미ë\94\94ì\96´ì\9c\84í\82¤ì\97\90 ì\98¨ 것을 환영합니다!',
+       'config-page-welcome' => '미ë\94\94ì\96´ì\9c\84í\82¤ì\97\90 ì\98¤ì\8b  것을 환영합니다!',
        'config-page-dbconnect' => '데이터베이스에 연결',
        'config-page-upgrade' => '기존 설치 업그레이드',
        'config-page-dbsettings' => '데이터베이스 설정',
        'config-page-name' => '이름',
-       'config-page-options' => 'ì\98µì\85\98',
+       'config-page-options' => 'ì\84¤ì \95',
        'config-page-install' => '설치',
        'config-page-complete' => '완료!',
        'config-page-restart' => '설치 다시 시작',
@@ -10318,9 +10468,9 @@ php.ini를 확인하고 <code>session.save_path</code>가 적절한 디렉토리
        'config-page-upgradedoc' => '업그레이드하기',
        'config-page-existingwiki' => '기존 위키',
        'config-help-restart' => '당신이 입력한 모든 저장된 데이터를 지우고 설치 과정을 다시 시작하겠습니까?',
-       'config-restart' => '예, 다시 시작합니다.',
+       'config-restart' => '예, 다시 시작합니다',
        'config-welcome' => '=== 사용 환경 검사 ===
\9d´ í\99\98ê²½ì\9d´ ë¯¸ë\94\94ì\96´ì\9c\84í\82¤ ì\84¤ì¹\98ì\97\90 ì \81í\95©í\95  지 기본 검사를 실행합니다.
\9d´ í\99\98ê²½ì\9d´ ë¯¸ë\94\94ì\96´ì\9c\84í\82¤ ì\84¤ì¹\98ì\97\90 ì \81í\95©í\95\9c지 기본 검사를 실행합니다.
 설치 중 도움이 필요하다면 이 검사 결과를 함께 제공해주어야 합니다.',
        'config-copyright' => "=== 저작권 및 이용 약관 ===
 
@@ -10358,7 +10508,7 @@ $1
 다음 데이터베이스 유형을 지원합니다 : $1.
 
 호스팅을 공유하고 있다면 적절한 데이터베이스 드라이버를 설치하도록 호스팅 제공 업체에 문의하세요.
-PHP를 ì§\81ì \91 ì»´í\8c\8cì\9d¼í\95  ê²½ì\9a° ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ í\81´ë\9d¼ì\9d´ì\96¸í\8a¸ë¥¼ ì\82¬ì\9a©í\95\98ì\97¬ í\99\9cì\84±í\99\94í\95\98ë\8f\84ë¡\9d ë\8b¤ì\8b\9c ì\84¤ì \95í\95\98ì\84¸ì\9a\94. ì\98\88ë\93¤ ë\93¤ì\96´ <code>./configure --with-mysql</code>ì\9d\84 ì\82¬ì\9a©í\95©ë\8b\88ë\8b¤.
+PHP를 ì§\81ì \91 ì»´í\8c\8cì\9d¼í\95  ê²½ì\9a° ë\8d°ì\9d´í\84°ë² ì\9d´ì\8a¤ í\81´ë\9d¼ì\9d´ì\96¸í\8a¸ë¥¼ ì\82¬ì\9a©í\95\98ì\97¬ í\99\9cì\84±í\99\94í\95\98ë\8f\84ë¡\9d ë\8b¤ì\8b\9c ì\84¤ì \95í\95\98ì\84¸ì\9a\94. ì\98\88ë\93¤ ë\93¤ì\96´ <code>./configure --with-mysql</code>ì\9d\84 ì\82¬ì\9a©í\95\98ì\84¸ì\9a\94.
 데비안이나 우분트 패키지에서 PHP를 설치했다면 php-mysql 모듈도 설치해야 합니다.',
        'config-outdated-sqlite' => "'''경고''': SQLite 필요한 최소 $2 버전보다 낮은 $1(이)가 있습니다. SQLite는 사용할 수 없습니다.",
        'config-no-fts3' => "'''경고''': SQLite는 [//sqlite.org/fts3.html FTS3 모듈] 없이 컴파일되어, 검색 기능은 백엔드에 사용할 수 없습니다.",
@@ -10484,7 +10634,7 @@ PostgreSQL을 사용할 경우 유닉스 소켓을 통해 연결되도록 입력
 
 PHP 파일이 있는 곳을 우리가 이를 맡길 수 없는 이유는 웹을 통해 접근할 수 없다는 것입니다.
 
-설치 마법사가 이과 함께 .htaccess 파일을 만들지만 거기서 실패하면 누군가는 원 데이터베이스에 접근하는 데 실패합니다.
+설치 마법사가 이과 함께 .htaccess 파일을 만들지만 거기서 실패하면 누군가는 원 데이터베이스에 접근하는 데 실패합니다.
 이는 원시 사용자 데이터(이메일 주소, 암호 해시) 뿐만 아니라 삭제된 개정판과 위키의 다른 제한된 데이터를 포함합니다.
 
 <code>/var/lib/mediawiki/yourwiki</code>와 같이 모두 다른 곳에서 데이터베이스를 넣어보도록 하세요.',
@@ -10554,7 +10704,7 @@ chmod a+w $3</pre>',
        'config-sqlite-connection-error' => '$1.
 
 호스트, 계정 이름과 비밀번호를 확인하고 다시 시도하세요.',
-       'config-sqlite-readonly' => '파일 <code>$1</code>은 쓰기가 불가능합니다.',
+       'config-sqlite-readonly' => '<code>$1</code> 파일은 쓰기가 불가능합니다.',
        'config-sqlite-cant-create-db' => '<code>$1</code> 데이터베이스 파일을 만들 수 없습니다.',
        'config-sqlite-fts3-downgrade' => 'PHP가 FTS3 지원이 없어졌습니다. 테이블을 다운그레이드하세요.',
        'config-can-upgrade' => "이 데이터베이스에 미디어위키 테이블이 있습니다.
@@ -10582,8 +10732,8 @@ chmod a+w $3</pre>',
        'config-mysql-myisam' => 'MyISAM',
        'config-mysql-myisam-dep' => "'''경고''': 미디어위키와 함께 사용하도록 권장하지 않는 MySQL에 대한 스토리지 엔진으로 MyISAM을 선택하였습니다. 이유는:
 * 이는 테이블이 잠겨있어 동시성을 거의 지원하지 않습니다
-* 이는 다른 엔진보다 손상이 더 자주 발생합니다.
-* 미디어위키 바탕 코드가 항상 정상적으로 MyISAM을 처리하지 않습니다.
+* 이는 다른 엔진보다 손상이 더 자주 발생합니다
+* 미디어위키 바탕 코드가 항상 정상적으로 MyISAM을 처리하지 않습니다
 
 MySQL 설치가 InnoDB를 지원한다면 그 선택 대신에 InnoDB를 선택할 것을 매우 권장합니다.
 MySQL 설치가 InnoDB를 지원하지 않는다면 아마도 업그레이드를 해야 할 수도 있습니다.",
@@ -10607,7 +10757,7 @@ MyISAM 데이터베이스는 InnoDB 데이터베이스보다 더 자주 손실
        'config-ns-site-name' => '위키 이름과 같은 이름: $1',
        'config-ns-other' => '기타 (지정)',
        'config-ns-other-default' => '내위키',
-       'config-project-namespace-help' => '위키백과의 예를 따라서, 많은 위키는 "프로젝트 이름공간"에 그들의 콘텐츠 페이지에서 그들의 정책 페이지는 별도로 보관합니다.
+       'config-project-namespace-help' => '위키백과의 예를 따라서, 많은 위키는 "\'\'\'프로젝트 이름공간\'\'\'"에 그들의 콘텐츠 페이지에서 그들의 정책 페이지는 별도로 보관합니다.
 이 이름공간에 있는 모든 페이지의 제목은 여기서 지정할 수 있는 특정 접두어로 시작합니다.
 보통 이 접두어는 위키의 이름에서 파생되지만, 이는 "#" 또는 ":"와 같은 특수 문자를 포함할 수 없습니다.',
        'config-ns-invalid' => '특정 "<nowiki>$1</nowiki>" 이름공간이 잘못되었습니다.
@@ -10627,7 +10777,7 @@ MyISAM 데이터베이스는 InnoDB 데이터베이스보다 더 자주 손실
        'config-admin-password-same' => '비밀번호는 사용자 이름과 같아서는 안 됩니다.',
        'config-admin-password-mismatch' => '입력한 비밀번호 두 개가 일치하지 않습니다.',
        'config-admin-email' => '이메일 주소:',
-       'config-admin-email-help' => 'ì\9c\84í\82¤ì\9d\98 ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ë¡\9cë¶\80í\84° ì\9d´ë©\94ì\9d¼ì\9d\84 ì \84ë\8b¬ë°\9bê±°ë\82\98 ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\9e¬ì\84¤ì \95í\95\98ê³  ì£¼ì\8b\9c문ì\84\9c ëª©ë¡\9dì\97\90 ë\8c\80í\95\9c ë³\80ê²½ 알림을 받기 위해 여기에 이메일 주소를 입력하세요. 이 필드를 비워 둘 수 있습니다.',
+       'config-admin-email-help' => 'ì\9c\84í\82¤ì\9d\98 ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ë¡\9cë¶\80í\84° ì\9d´ë©\94ì\9d¼ì\9d\84 ì \84ë\8b¬ë°\9bê±°ë\82\98 ë¹\84ë°\80ë²\88í\98¸ë¥¼ ì\9e¬ì\84¤ì \95í\95\98ê³  ì£¼ì\8b\9c문ì\84\9c ëª©ë¡\9dì\97\90 ë\8c\80í\95\9c ë°\94ë\80\9c 알림을 받기 위해 여기에 이메일 주소를 입력하세요. 이 필드를 비워 둘 수 있습니다.',
        'config-admin-error-user' => '"<nowiki>$1</nowiki>" 이름의 관리자를 만드는 중 내부 오류가 발생했습니다.',
        'config-admin-error-password' => '"<nowiki>$1</nowiki>" 관리자의 비밀번호를 설정하는 중 내부 오류가 발생했습니다: <pre>$2</pre>',
        'config-admin-error-bademail' => '이메일 주소를 잘못 입력하였습니다.',
@@ -10636,12 +10786,13 @@ MyISAM 데이터베이스는 InnoDB 데이터베이스보다 더 자주 손실
 당신이 이를 구독하고 나서 새 버전이 나올 때 미디어위키 설치를 업데이트해야합니다.',
        'config-subscribe-noemail' => '이메일 주소를 제공하지 않고 배포 발표 메일링 리스트에 가입하려 합니다.
 메일링 리스트에 가입하고자 할 경우 이메일 주소를 제공하세요.',
-       'config-almost-done' => '거의 다 완료했습니다! 이제 남은 설정을 생략하고 지금 바로 위키를 설치할 수 있습니다.',
+       'config-almost-done' => '거의 다 완료했습니다!
+이제 남은 설정을 생략하고 지금 바로 위키를 설치할 수 있습니다.',
        'config-optional-continue' => '더 많은 질문을 물어보세요.',
        'config-optional-skip' => '지겨워요, 그냥 위키를 설치할래요.',
        'config-profile' => '사용자 권한 프로필:',
        'config-profile-wiki' => '평범한 위키',
-       'config-profile-no-anon' => '계정 생성 필요',
+       'config-profile-no-anon' => '계정 만들기 필요',
        'config-profile-fishbowl' => '승인된 편집자만 이용 가능',
        'config-profile-private' => '비공개 위키',
        'config-profile-help' => "위키는 당신이 가능한 한 많은 사람들이 편집하도록 할 때 최고로 적합합니다.
@@ -10681,12 +10832,12 @@ GFDL은 유효한 라이선스이지만 이는 이해하기 어렵습니다.
        'config-email-user' => '사용자와 사용자 간 이메일 활성화',
        'config-email-user-help' => '환경 설정에서 활성화한 경우 모든 사용자가 이메일을 서로 보내도록 활성화합니다.',
        'config-email-usertalk' => '사용자 토론 문서 알림 활성화',
-       'config-email-usertalk-help' => 'í\99\98ê²½ ì\84¤ì \95ì\97\90ì\84\9c í\99\9cì\84±í\99\94í\95\9c ê²½ì\9a° ì\82¬ì\9a©ì\9e\90ë\8a\94 ì\82¬ì\9a©ì\9e\90 í\86 ë¡  ë¬¸ì\84\9cì\9d\98 ë³\80ê²½ 알림을 받도록 활성화합니다.',
+       'config-email-usertalk-help' => 'í\99\98ê²½ ì\84¤ì \95ì\97\90ì\84\9c í\99\9cì\84±í\99\94í\95\9c ê²½ì\9a° ì\82¬ì\9a©ì\9e\90ë\8a\94 ì\82¬ì\9a©ì\9e\90 í\86 ë¡  ë¬¸ì\84\9cì\9d\98 ë°\94ë\80\9c 알림을 받도록 활성화합니다.',
        'config-email-watchlist' => '주시문서 목록 알림 활성화',
        'config-email-watchlist-help' => '환경 설정에서 활성화한 경우 사용자가 주시한 문서에 대한 알림을 받도록 활성화합니다.',
        'config-email-auth' => '이메일 인증 활성화',
-       'config-email-auth-help' => "ì\9d´ ì\84¤ì \95ì\9d´ í\99\9cì\84±í\99\94ë\90\98ì\96´ ì\9e\88ì\9c¼ë©´ ì\82¬ì\9a©ì\9e\90ë\8a\94 ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ì\84¤ì \95í\95\98ê±°ë\82\98 ë³\80ê²½í\95  때마다 그들에게 보낸 링크를 사용하여 이메일 주소를 확인해야 합니다.
\9d¸ì¦\9dë\90\9c ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8cë§\8c ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ë¡\9cë¶\80í\84°ì\9d\98 ì\9d´ë©\94ì\9d¼ì\9d´ë\82\98 ë³\80ê²½ 알림 이메일을 받을 수 있습니다.
+       'config-email-auth-help' => "ì\9d´ ì\84¤ì \95ì\9d´ í\99\9cì\84±í\99\94ë\90\98ì\96´ ì\9e\88ì\9c¼ë©´ ì\82¬ì\9a©ì\9e\90ë\8a\94 ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ì\84¤ì \95í\95\98ê±°ë\82\98 ë°\94ê¿\80 때마다 그들에게 보낸 링크를 사용하여 이메일 주소를 확인해야 합니다.
\9d¸ì¦\9dë\90\9c ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8cë§\8c ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ë¡\9cë¶\80í\84°ì\9d\98 ì\9d´ë©\94ì\9d¼ì\9d´ë\82\98 ë°\94ë\80\9c 알림 이메일을 받을 수 있습니다.
 이메일 기능의 남용 가능성이 있기 때문에 이 옵션을 설정하는 것은 공개 위키에서 '''권장'''합니다.",
        'config-email-sender' => '반송 이메일 주소',
        'config-email-sender-help' => '발신한 이메일에 대한 반송 주소로 사용할 이메일 주소를 입력하세요.
@@ -10697,7 +10848,7 @@ GFDL은 유효한 라이선스이지만 이는 이해하기 어렵습니다.
        'config-upload-help' => '파일 올리기는 서버에 잠재적인 보안 위험에 쉽게 노출될 수 있습니다.
 자세한 내용은 매뉴얼의 [//www.mediawiki.org/wiki/Manual:Security 보안 문단]을 읽어보세요.
 
\8c\8cì\9d¼ ì\98¬ë¦¬ê¸°ë¥¼ í\99\9cì\84±í\99\94í\95\98려면 ë¯¸ë\94\94ì\96´ì\9c\84í\82¤ì\9d\98 ë£¨í\8a¸ ë\94\94ë \89í\86 ë¦¬ì\97\90 ì\9e\88ë\8a\94 <code>images</code> í\95\98ì\9c\84 ë\94\94ë \89í\86 ë¦¬ì\97\90ì\84\9c ì\9b¹ ì\84\9cë²\84ê°\80 ê¸°ë¡\9dí\95  ì\88\98 ì\9e\88ë\8f\84ë¡\9d ëª¨ë\93\9c를 ë³\80ê²½í\95©니다.
\8c\8cì\9d¼ ì\98¬ë¦¬ê¸°ë¥¼ í\99\9cì\84±í\99\94í\95\98려면 ë¯¸ë\94\94ì\96´ì\9c\84í\82¤ì\9d\98 ë£¨í\8a¸ ë\94\94ë \89í\86 ë¦¬ì\97\90 ì\9e\88ë\8a\94 <code>images</code> í\95\98ì\9c\84 ë\94\94ë \89í\86 ë¦¬ì\97\90ì\84\9c ì\9b¹ ì\84\9cë²\84ê°\80 ê¸°ë¡\9dí\95  ì\88\98 ì\9e\88ë\8f\84ë¡\9d ëª¨ë\93\9c를 ë°\94ê¿\89니다.
 그 다음 이 옵션을 활성화합니다.',
        'config-upload-deleted' => '삭제된 파일에 대한 디렉토리:',
        'config-upload-deleted-help' => '삭제된 파일을 보관할 디렉토리를 선택하세요.
@@ -10736,11 +10887,11 @@ GFDL은 유효한 라이선스이지만 이는 이해하기 어렵습니다.
        'config-extensions' => '확장 기능',
        'config-extensions-help' => '위에 나열된 확장 기능이 <code>./extensions</code>에서 발견되었습니다.
 
\9d´ë\93¤ì\9d\80 추가적인 설정이 필요할 수 있습니다만 지금 활성화시킬 수 있습니다.',
\9d´ë\8a\94 추가적인 설정이 필요할 수 있습니다만 지금 활성화시킬 수 있습니다.',
        'config-install-alreadydone' => "'''경고:''' 당신은 이미 미디어위키를 설치하였고 다시 설치하려고 합니다.
 다음 페이지에서 진행하세요.",
        'config-install-begin' => '"{{int:config-continue}}"을 누르면 미디어위키의 설치를 시작합니다.
-ê·¸ë\9e\98ë\8f\84 ë³\80ê²½í\95\98는 것을 원한다면 뒤로를 누릅니다.',
+ê·¸ë\9e\98ë\8f\84 ë°\94꾸는 것을 원한다면 뒤로를 누릅니다.',
        'config-install-step-done' => '완료',
        'config-install-step-failed' => '실패',
        'config-install-extensions' => '확장 기능을 포함하는 중',
@@ -10766,15 +10917,15 @@ GFDL은 유효한 라이선스이지만 이는 이해하기 어렵습니다.
 이를 만드는 것을 원하면 아래의 "계정 만들기" 확인 상자를 클릭하세요.',
        'config-install-tables' => '테이블을 만드는 중',
        'config-install-tables-exist' => "'''경고''': 미디어위키 테이블이 이미 있는 것 같습니다.
-테이블 생성을 생략합니다.",
-       'config-install-tables-failed' => "'''오류''': 다음 오류와 함께 테이블 생성에 실패했습니다: $1",
+테이블 만들기를 생략합니다.",
+       'config-install-tables-failed' => "'''오류''': 다음 오류와 함께 테이블 만들기에 실패했습니다: $1",
        'config-install-interwiki' => '기본 인터위키 테이블을 채우는 중',
        'config-install-interwiki-list' => '<code>interwiki.list</code> 파일을 불러올 수 없습니다.',
        'config-install-interwiki-exists' => "'''경고''': 인터위키 테이블이 이미 항목을 갖고 있는 것 같습니다.
 기본 목록으로 넘어갑니다.",
        'config-install-stats' => '통계를 초기화하는 중',
        'config-install-keys' => '보안 키를 만드는 중',
-       'config-insecure-keys' => "'''경고:''' ì\84¤ì¹\98 ì¤\91ì\97\90 ì\83\9dì\84±í\95\9c {{PLURAL:$2|ë³´ì\95\88 í\82¤}} ($1)를 ì\84¤ì¹\98í\95\98ë\8a\94 ë\8f\99ì\95\88 ì\99\84ì \84í\9e\88 ì\95\88ì \84í\95\98ì§\80 {{PLURAL:$2|ì\95\8aì\8aµë\8b\88ë\8b¤}}. ì§\81ì \91 ë³\80ê²½ì\9d\84 고려하세요.",
+       'config-insecure-keys' => "'''경고:''' ì\84¤ì¹\98 ì¤\91ì\97\90 ì\83\9dì\84±í\95\9c {{PLURAL:$2|ë³´ì\95\88 í\82¤}} ($1)를 ì\84¤ì¹\98í\95\98ë\8a\94 ë\8f\99ì\95\88 ì\99\84ì \84í\9e\88 ì\95\88ì \84í\95\98ì§\80 {{PLURAL:$2|ì\95\8aì\8aµë\8b\88ë\8b¤}}. ì§\81ì \91 ë°\94꾸기를 고려하세요.",
        'config-install-sysop' => '관리자 사용자 계정을 만드는 중',
        'config-install-subscribe-fail' => '미디어위키 발표를 구독할 수 없습니다: $1',
        'config-install-subscribe-notpossible' => 'cURL이 설치되지 않았고 allow_url_fopen를 사용할 수 없습니다.',
@@ -10798,7 +10949,7 @@ $3
 완료되었으면 '''[$2 위키에 들어갈 수 있습니다]'''.",
        'config-download-localsettings' => 'LocalSettings.php 다운로드',
        'config-help' => '도움말',
-       'config-nofile' => '파일 "$1"(을)를 찾을 수 없습니다. 이미 삭제되었나요?',
+       'config-nofile' => '"$1" 파일을 찾을 수 없습니다. 이미 삭제되었나요?',
        'mainpagetext' => "'''미디어위키가 성공적으로 설치되었습니다.'''",
        'mainpagedocfooter' => '[//meta.wikimedia.org/wiki/Help:Contents 이곳]에서 위키 프로그램에 대한 정보를 얻을 수 있습니다.
 
@@ -10809,7 +10960,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 메일링 리스트]',
 );
 
-/** Karachay-Balkar (Ð\9aÑ\8aаÑ\80аÑ\87ай-Ð\9cалкъар)
+/** Karachay-Balkar (кÑ\8aаÑ\80аÑ\87ай-малкъар)
  * @author Iltever
  */
 $messages['krc'] = array(
@@ -10858,13 +11009,13 @@ Dat kanns De verlängere, endämm dat De de <code lang="en">session.gc_maxlifeti
 Don dat Projramm för et Opsäze norr_ens aanschmiiße.',
        'config-no-session' => 'De Daate för Ding Setzung sinn verschött jejange.
 Donn en dä Dattei <code>php.ini</code> nohloore, ov dä <code lang="en">session.save_path</code> op e zopaß Verzeijschneß zeisch.',
-       'config-your-language' => 'Ding Shprooch:',
+       'config-your-language' => 'Ding Schprooch:',
        'config-your-language-help' => 'Donn heh di Shprooch ußsöhke, di dat Enshtallzjuhnsprojramm kalle sull.',
        'config-wiki-language' => 'Dem Wiki sing Shprooch:',
        'config-wiki-language-help' => 'Donn heh di Shprooch ußsöhke, di et Wiki shtandattmääßesch kalle sull.',
        'config-back' => '← Retuur',
        'config-continue' => 'Wigger →',
-       'config-page-language' => 'Shprooch',
+       'config-page-language' => 'Schprooch',
        'config-page-welcome' => 'Wellkumme beim MediaWiki!',
        'config-page-dbconnect' => 'Met dä Daatebangk Verbenge',
        'config-page-upgrade' => 'En Inshtallzjuhn op der neuste Shtand bränge',
@@ -11383,7 +11534,7 @@ Dat es och all op Änglesch:
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
 );
 
-/** Kurdish (Latin script) (‪Kurdî (latînî)‬)
+/** Kurdish (Latin script) (Kurdî (latînî)‎)
  * @author George Animal
  */
 $messages['ku-latn'] = array(
@@ -11394,6 +11545,7 @@ $messages['ku-latn'] = array(
        'config-page-options' => 'Vebijêrk',
        'config-ns-generic' => 'Proje',
        'config-install-step-done' => 'çêbû',
+       'config-help' => 'alîkarî',
        'mainpagetext' => "'''MediaWiki serketî hate çêkirin.'''",
        'mainpagedocfooter' => 'Alîkarî ji bo bikaranîn û guherandin yê datayê Wîkî tu di bin [//meta.wikimedia.org/wiki/Help:Contents pirtûka alîkarîyê ji bikarhêneran] da dikarê bibînê.
 
@@ -11429,6 +11581,9 @@ $messages['lb'] = array(
 Dir fannt en am LocalSettings.php.",
        'config-localsettings-key' => 'Aktualisatiounsschlëssel:',
        'config-localsettings-badkey' => 'De Schlëssel deen Dir aginn hutt ass net korrekt',
+       'config-localsettings-incomplete' => 'De Fichier LocalSettings.php schéngt net komplett ze sinn.
+D\'Variabel $1 ass net definéiert.
+Ännert w.e.g. de Fichier LocalSettings.php esou datt déi Variabel definéiert ass a klickt op "Virufueren".',
        'config-session-error' => 'Feeler beim Starte vun der Sessioun: $1',
        'config-no-session' => "D'Donnéeë vun ärer Sessioun si verluergaangen!
 Kuckt Är php.ini no a vergewëssert Iech datt <code>session.save_path</code>  op adequate REpertoire agestallt ass.",
@@ -11529,6 +11684,7 @@ Wann et de Kont net gëtt, a wann den Installatiouns-Kont genuch Rechter huet, g
        'config-header-ibm_db2' => 'IBM DB2-Astellungen',
        'config-invalid-db-type' => 'Net valabelen Datebank-Typ',
        'config-missing-db-name' => 'Dir musst en Numm fir de Wäert "Numm vun der Datebank" uginn',
+       'config-missing-db-host' => 'Dir musst e Wäert fir "Database host" uginn',
        'config-missing-db-server-oracle' => 'Dir musst e Wäert fir "Datebank-TNS" uginn',
        'config-db-sys-user-exists-oracle' => 'De Benotzerkont "$1" gëtt et schonn. SYSDBA kann nëmme benotzt gi fir en neie Benotzerkont opzemaachen.',
        'config-postgres-old' => 'PostgreSQL $1 oder eng méi nei Versioun gëtt gebraucht, Dir hutt $2.',
@@ -11615,6 +11771,7 @@ Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki el
        'config-install-stats' => 'Initialisatioun vun de Statistiken',
        'config-install-keys' => 'Generéiere vum Geheimschlëssel',
        'config-install-sysop' => 'Administrateur Benotzerkont gëtt ugeluecht',
+       'config-install-extension-tables' => "D'Tabelle fir déi aktivéiert Erweiderunge ginn ugeluecht",
        'config-install-mainpage-failed' => "D'Haaptsäit konnt net dragesat ginn: $1",
        'config-download-localsettings' => 'LocalSettings.php eroflueden',
        'config-help' => 'Hëllef',
@@ -11628,7 +11785,8 @@ Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki el
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglëscht vun neie MediaWiki-Versiounen]",
 );
 
-/** Lingua Franca Nova (Lingua Franca Nova) */
+/** Lingua Franca Nova (Lingua Franca Nova)
+ */
 $messages['lfn'] = array(
        'mainpagetext' => "'''MediaWiki es aora instalada.'''",
        'mainpagedocfooter' => 'Atenda la [//meta.wikimedia.org/wiki/Help:Contents Gida per Usores] per informa supra la usa de la programa de vici.
@@ -11653,7 +11811,8 @@ $messages['lg'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Wewandise ofunenga amawulire aga email ag'ebifa ku MediaWiki]",
 );
 
-/** Limburgish (Limburgs) */
+/** Limburgish (Limburgs)
+ */
 $messages['li'] = array(
        'mainpagetext' => "'''MediaWiki software succesvol geïnsjtalleerd.'''",
        'mainpagedocfooter' => "Raodpleeg de [//meta.wikimedia.org/wiki/NL_Help:Inhoudsopgave handjleiding] veur informatie euver 't gebroek van de wikisoftware.
@@ -11665,12 +11824,14 @@ $messages['li'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki mailinglies veur nuuj versies]",
 );
 
-/** Lao (ລາວ) */
+/** Lao (ລາວ)
+ */
 $messages['lo'] = array(
        'mainpagetext' => "'''ຕິດຕັ້ງມີເດຍວິກິນີ້ສຳເລັດແລ້ວ.'''",
 );
 
-/** Lithuanian (lietuvių) */
+/** Lithuanian (lietuvių)
+ */
 $messages['lt'] = array(
        'mainpagetext' => "'''MediaWiki sėkmingai įdiegta.'''",
        'mainpagedocfooter' => 'Informacijos apie wiki programinės įrangos naudojimą, ieškokite [//meta.wikimedia.org/wiki/Help:Contents žinyne].
@@ -11709,7 +11870,8 @@ $messages['lv'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Parakstīties uz paziņojumiem par jaunām MediaWiki versijām]',
 );
 
-/** Literary Chinese (文言) */
+/** Literary Chinese (文言)
+ */
 $messages['lzh'] = array(
        'mainpagetext' => "'''共筆臺已立'''",
        'mainpagedocfooter' => "欲識維基,見[//meta.wikimedia.org/wiki/Help:Contents User's Guide]
@@ -11747,7 +11909,8 @@ $messages['mai'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Moksha (Мокшень) */
+/** Moksha (мокшень)
+ */
 $messages['mdf'] = array(
        'mainpagetext' => "'''МедиаВикить арафтозь лац.'''",
        'mainpagedocfooter' => 'Ванк [//meta.wikimedia.org/wiki/Help:Contents Ветямовал Тиинди] тяса ули кода содамс Вики програпнень эрявикснень колга.
@@ -11817,7 +11980,8 @@ $messages['mg'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Resaka momba ny fizaràn'ny MediaWiki]",
 );
 
-/** Eastern Mari (Олык Марий) */
+/** Eastern Mari (олык марий)
+ */
 $messages['mhr'] = array(
        'mainpagetext' => "'''MediaWiki сай шындыме.'''",
 );
@@ -12393,7 +12557,7 @@ $messages['ml'] = array(
        'config-information' => 'വിവരങ്ങൾ',
        'config-localsettings-upgrade' => "'''അറിയിപ്പ്''': ഒരു <code>LocalSettings.php</code> ഫയൽ കാണുന്നു.
 സോഫ്റ്റ്‌വേർ അപ്‌ഗ്രേഡ് ചെയ്യുക സാദ്ധ്യമാണ്.
-ദയവായി പെട്ടിയിൽ <code>\$wgUpgradeKey</code> എന്നതിന്റെ വില നൽകുക.",
+ദയവായി പെട്ടിയിൽ <code>\$wgUpgradeKey</code> എന്നതിന്റെ വില നൽകുക.", # Fuzzy
        'config-localsettings-key' => 'അപ്‌ഗ്രേഡ് ചാവി:',
        'config-localsettings-badkey' => 'താങ്കൾ നൽകിയ ചാവി തെറ്റാണ്',
        'config-session-error' => 'സെഷൻ തുടങ്ങുന്നതിൽ പിഴവ്: $1',
@@ -12422,9 +12586,9 @@ $messages['ml'] = array(
        'config-sidebar' => '* [//www.mediawiki.org മീഡിയവിക്കി പ്രധാനതാൾ]
 * [//www.mediawiki.org/wiki/Help:Contents ഉപയോക്തൃസഹായി]
 * [//www.mediawiki.org/wiki/Manual:Contents കാര്യനിർവഹണസഹായി]
-* [//www.mediawiki.org/wiki/Manual:FAQ പതിവുചോദ്യങ്ങൾ]',
+* [//www.mediawiki.org/wiki/Manual:FAQ പതിവുചോദ്യങ്ങൾ]', # Fuzzy
        'config-env-php' => 'പി.എച്ച്.പി. $1 ഇൻസ്റ്റോൾ ചെയ്തിട്ടുണ്ട്.',
-       'config-no-db' => 'അനുയോജ്യമായ ഡേറ്റാബേസ് ഡ്രൈവർ കണ്ടെത്താനായില്ല!',
+       'config-no-db' => 'അനുയോജ്യമായ ഡേറ്റാബേസ് ഡ്രൈവർ കണ്ടെത്താനായില്ല!', # Fuzzy
        'config-memory-raised' => 'പി.എച്ച്.പി.യുടെ <code>memory_limit</code> $1 ആണ്, $2 ആയി ഉയർത്തിയിരിക്കുന്നു.',
        'config-memory-bad' => "'''മുന്നറിയിപ്പ്:''' പി.എച്ച്.പി.യുടെ <code>memory_limit</code> $1 ആണ്.
 ഇത് മിക്കവാറും വളരെ കുറവാണ്.
@@ -12506,7 +12670,7 @@ $1
        'config-logo-help' => 'മീഡിയവിക്കിയിൽ സ്വതേയുള്ള ദൃശ്യരൂപത്തിൽ 135x160 പിക്സലുള്ള ലോഗോ മുകളിൽ ഇടത് മൂലയിൽ കാണാം.
 അനുയോജ്യമായ വലിപ്പമുള്ള ഒരു ചിത്രം അപ്‌ലോഡ് ചെയ്തിട്ട്, അതിന്റെ യൂ.ആർ.എൽ. ഇവിടെ നൽകുക.
 
-താങ്കൾക്ക് ലോഗോ ആവശ്യമില്ലെങ്കിൽ, ഈ പെട്ടി ശൂന്യമായിടുക.',
+താങ്കൾക്ക് ലോഗോ ആവശ്യമില്ലെങ്കിൽ, ഈ പെട്ടി ശൂന്യമായിടുക.', # Fuzzy
        'config-cc-again' => 'ഒന്നുകൂടി എടുക്കൂ...',
        'config-advanced-settings' => 'വിപുലീകൃത ക്രമീകരണങ്ങൾ',
        'config-extensions' => 'അനുബന്ധങ്ങൾ',
@@ -12553,7 +12717,8 @@ $messages['mn'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаВикигийн мэдээний мэйл явуулах жагсаалт]',
 );
 
-/** Marathi (मराठी) */
+/** Marathi (मराठी)
+ */
 $messages['mr'] = array(
        'mainpagetext' => "'''मीडियाविकीचे इन्स्टॉलेशन पूर्ण.'''",
        'mainpagedocfooter' => 'विकी सॉफ्टवेअर वापरण्याकरिता [//meta.wikimedia.org/wiki/Help:Contents यूजर गाईड] पहा.
@@ -12656,7 +12821,7 @@ $messages['my'] = array(
        'mainpagetext' => "'''မီဒီယာဝီကီကို အောင်မြင်စွာ သွင်းပြီးပါပြီ။'''",
 );
 
-/** Erzya (Эрзянь)
+/** Erzya (эрзянь)
  * @author Botuzhaleny-sodamo
  */
 $messages['myv'] = array(
@@ -12678,7 +12843,8 @@ $messages['mzn'] = array(
        'config-help' => 'راهنما',
 );
 
-/** Nahuatl (Nāhuatl) */
+/** Nahuatl (Nāhuatl)
+ */
 $messages['nah'] = array(
        'mainpagetext' => "'''MediaHuiqui cualli ōmotlahtlāli.'''",
 );
@@ -12696,7 +12862,7 @@ $messages['nan'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki的公布列單]',
 );
 
-/** Norwegian Bokmål (‪norsk (bokmål)‬)
+/** Norwegian Bokmål (norsk (bokmål)‎)
  * @author Event
  * @author Nghtwlkr
  */
@@ -12741,7 +12907,7 @@ Sjekk din php.ini og sørg for at <code>session.save_path</code> er satt til en
        'config-page-dbsettings' => 'Databaseinnstillinger',
        'config-page-name' => 'Navn',
        'config-page-options' => 'Valg',
-       'config-page-install' => 'Innstaller',
+       'config-page-install' => 'Installer',
        'config-page-complete' => 'Ferdig!',
        'config-page-restart' => 'Start installasjonen på nytt',
        'config-page-readme' => 'Les meg',
@@ -13090,7 +13256,7 @@ Mer komplekse konfigurasjoner av brukerrettigheter er tilgjengelig etter install
        'config-license-cc-by-sa' => 'Creative Commons Navngivelse Del på samme vilkår',
        'config-license-cc-by' => 'Creative Commons Attribution',
        'config-license-cc-by-nc-sa' => 'Creative Commons Navngivelse Ikke-kommersiell Del på samme vilkår',
-       'config-license-cc-0' => 'Creative Commons Zero',
+       'config-license-cc-0' => 'Creative Commons Zero', # Fuzzy
        'config-license-pd' => 'Offentlig rom',
        'config-license-cc-choose' => 'Velg en egendefinert Creative Commons-lisens',
        'config-email-settings' => 'E-postinnstillinger',
@@ -13125,7 +13291,7 @@ Ideelt burde ikke denne være tilgjengelig for nettet.',
        'config-logo-help' => 'MediaWikis standarddrakt inkluderer plass til en 135x160 pikslers logo i øvre venstre hjørne.
 Last opp et bilde i passende størrelse og skriv inn nettadressen her.
 
-Hvis du ikke ønsker en logo, la denne boksen være tom.',
+Hvis du ikke ønsker en logo, la denne boksen være tom.', # Fuzzy
        'config-instantcommons' => 'Aktiver Instant Commons',
        'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] er en funksjon som gjør det mulig for wikier å bruke bilder, lyder og andre media funnet på nettstedet [//commons.wikimedia.org/ Wikimedia Commons].
 For å gjøre dette krever MediaWiki tilgang til internett.
@@ -13157,7 +13323,8 @@ For mer informasjon om denne funksjonen, inklusive instruksjoner om hvordan man
 *[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-postliste]',
 );
 
-/** Low German (Plattdüütsch) */
+/** Low German (Plattdüütsch)
+ */
 $messages['nds'] = array(
        'mainpagetext' => "'''De MediaWiki-Software is mit Spood installeert worrn.'''",
        'mainpagedocfooter' => 'Kiek de [//meta.wikimedia.org/wiki/MediaWiki_localisation Dokumentatschoon för dat Anpassen vun de Brukerböversiet]
@@ -13752,7 +13919,7 @@ Na het plaatsen van het bestand met instellingen kunt u '''[$2 uw wiki betreden]
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglijst voor aankondigingen van nieuwe versies]',
 );
 
-/** Norwegian Nynorsk (‪norsk (nynorsk)‬)
+/** Norwegian Nynorsk (norsk (nynorsk)‎)
  * @author Harald Khan
  * @author Nghtwlkr
  */
@@ -13785,9 +13952,9 @@ Installasjonen kan mislukkast!",
        'config-header-oracle' => 'Oracle-innstillingar',
        'config-invalid-db-type' => 'Ugyldig databasetype',
        'config-invalid-db-name' => 'Ugyldig databasenamn «$1».
-Berre bruk ASCII-bokstavar (a-z, A-Z), tal (0-9) og undestrekar (_).',
+Berre bruk ASCII-bokstavar (a-z, A-Z), tal (0-9) og undestrekar (_).', # Fuzzy
        'config-invalid-db-prefix' => 'Ugyldig databaseprefiks «$1».
-Berre bruk ASCII-bokstavar (a-z, A-Z), tal (0-9) og undestrekar (_).',
+Berre bruk ASCII-bokstavar (a-z, A-Z), tal (0-9) og undestrekar (_).', # Fuzzy
        'config-invalid-schema' => 'Ugyldig skjema for MediaWiki «$1».
 Berre bruk ASCII-bokstavar (a-z, A-Z), tal (0-9) og undestrekar (_).',
        'config-postgres-old' => 'PostgreSQL $1 eller seinare krevst, du har $2.',
@@ -13807,7 +13974,8 @@ $messages['no'] = array(
        'mainpagetext' => "'''MediaWiki-programvaren er nå installert.'''",
 );
 
-/** Occitan (occitan) */
+/** Occitan (occitan)
+ */
 $messages['oc'] = array(
        'mainpagetext' => "'''MediaWiki es estat installat amb succès.'''",
        'mainpagedocfooter' => "Consultatz lo [//meta.wikimedia.org/wiki/Ajuda:Contengut Guida de l'utilizaire] per mai d'entresenhas sus l'utilizacion d'aqueste logicial.
@@ -13839,12 +14007,14 @@ $messages['os'] = array(
        'mainpagetext' => "'''Вики-скрипт «MediaWiki» æнтыстджынæй æвæрд æрцыд.'''",
 );
 
-/** Punjabi (ਪੰਜਾਬੀ) */
+/** Punjabi (ਪੰਜਾਬੀ)
+ */
 $messages['pa'] = array(
        'mainpagetext' => "'''ਮੀਡਿਆਵਿਕਿ ਠੀਕ ਤਰ੍ਹਾਂ ਇੰਸਟਾਲ ਹੋ ਗਿਆ ਹੈ।'''",
 );
 
-/** Pampanga (Kapampangan) */
+/** Pampanga (Kapampangan)
+ */
 $messages['pam'] = array(
        'mainpagetext' => "'''Melaus ing pamipalyari ning MediaWiki.'''",
        'mainpagedocfooter' => "Basan me ing [//meta.wikimedia.org/wiki/Help:Contents User's Guide] para king impormasiun keng pamangamit ning wiki software.
@@ -13855,7 +14025,8 @@ $messages['pam'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Picard (Picard) */
+/** Picard (Picard)
+ */
 $messages['pcd'] = array(
        'mainpagetext' => "'''MediaWiki o té instalé aveuc victoère.'''",
 );
@@ -14501,7 +14672,7 @@ It peule pa instalé MediaWiki.",
 S'a gestiss un sit a àut tràfich, a dovrìa lese cheicòs an sla [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalisassion Unicode].",
        'config-unicode-update-warning' => "'''Avis:''' La version instalà dlë spassiador ëd normalisassion Unicode a deuvra na version veja ëd la librarìa dël [http://site.icu-project.org/ proget ICU].
 A dovrìa fé n'[//www.mediawiki.org/wiki/Unicode_normalization_considerations agiornament] s'a l'é anteressà a dovré Unicode.",
-       'config-no-db' => 'Impossìbil tové un pilòta ëd base ëd dàit bon!',
+       'config-no-db' => 'Impossìbil tové un pilòta ëd base ëd dàit bon!', # Fuzzy
        'config-no-fts3' => "'''Avis''': SQLite a l'é compilà sensa ël mòdul [//sqlite.org/fts3.html FTS3], le funsion d'arserca a saran pa disponìbij su cost motor.",
        'config-register-globals' => "'''Avis: L'opsion <code>[http://php.net/register_globals register_globals]</code> ëd PHP a l'é abilità.'''
 '''Ch'a la disabìlita s'a peul.'''
@@ -14550,7 +14721,7 @@ Bele che MediaWiki a contròla j'aspet ëd sicurëssa ëd tùit j'archivi carià
 
 S'a deuvra n'ospitalità partagià, sò fornidor d'ospitalità a dovrìa deje ël nòm dl'ospitant giust ant soa documentassion.
 
-Se a anstala su un servent Windows e a deuvra MySQL, dovré \"localhost\" a podrìa funsioné nen com nòm dël servent. S'a marcia nen, ch'a preuva \"127.0.0.1\" com adrëssa IP local.",
+Se a anstala su un servent Windows e a deuvra MySQL, dovré \"localhost\" a podrìa funsioné nen com nòm dël servent. S'a marcia nen, ch'a preuva \"127.0.0.1\" com adrëssa IP local.", # Fuzzy
        'config-db-host-oracle' => 'TNS dla base ëd dàit:',
        'config-db-host-oracle-help' => "Anserì un [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nòm ëd conession local] bon; n'archivi tnsnames.ora a dev esse visìbil da costa anstalassion..<br />S'a deuvra le librarìe cliente 10g o pi neuve a peul ëdcò dovré ël métod ëd nominassion [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
        'config-db-wiki-settings' => 'Identìfica sta wiki',
@@ -14558,7 +14729,7 @@ Se a anstala su un servent Windows e a deuvra MySQL, dovré \"localhost\" a podr
        'config-db-name-help' => "Ch'a serna un nòm ch'a identìfica soa wiki.
 A dovrìa conten-e gnun ëspassi o tratin.
 
-S'a deuvra n'ospitalità partagià, sò fornidor ëd l'ospitalità a-j darà un nòm ëd base ëd dàit specìfich da dovré, o a lassrà ch'a lo crea via un panel ëd contròl.",
+S'a deuvra n'ospitalità partagià, sò fornidor ëd l'ospitalità a-j darà un nòm ëd base ëd dàit specìfich da dovré, o a lassrà ch'a lo crea via un panel ëd contròl.", # Fuzzy
        'config-db-name-oracle' => 'Schema dla base ëd dàit:',
        'config-db-install-account' => "Cont d'utent për l'instalassion.",
        'config-db-username' => "Nòm d'utent dla base ëd dàit:",
@@ -14572,7 +14743,7 @@ S'ël cont a esist pa, e ël cont d'instalassion a l'ha ij privilegi ch'a-i van,
        'config-db-prefix-help' => "S'a l'ha dabzògn ëd partagé na base ëd dàit an tra vàire wiki, o tra MediaWiki e n'àutra aplicassion dl'aragnà, a peul serne ëd gionté un prefiss a tùit ij nòm ëd le tàule për evité ëd conflit.
 Ch'a deuvra ni dë spassi ni ëd tratin.
 
-Cost camp a l'é lassà normalment veuid.",
+Cost camp a l'é lassà normalment veuid.", # Fuzzy
        'config-db-charset' => 'Ansema dij caràter dla base ëd dàit',
        'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 binari',
        'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
@@ -14586,7 +14757,7 @@ An '''manera UTF-8''', MySQL a arconòss an che ansema ëd caràter a son ij sò
        'config-db-port' => 'Porta dla base ëd dàit:',
        'config-db-schema' => 'Schema për MediaWiki',
        'config-db-schema-help' => "Jë schema sì-dzora a son normalment giust.
-Ch'a-j cangia mach s'a sa ch'a n'ha da manca.",
+Ch'a-j cangia mach s'a sa ch'a n'ha da manca.", # Fuzzy
        'config-sqlite-dir' => 'Dossié dij dat SQLite:',
        'config-sqlite-dir-help' => "SQLite a memorisa tùit ij dat ant n'archivi ùnich.
 
@@ -14606,7 +14777,7 @@ $1
 
 S'a vëd pa listà sì-sota ël sistema ëd base ëd dàit ch'a preuva a dovré, antlora va andaré a j'istrussion dl'anliura sì-dzora për abilité ël manteniment.",
        'config-support-mysql' => "* $1 e l'é l'obietiv primari për MediaWiki e a l'é mej mantnù ([http://www.php.net/manual/en/mysql.installation.php com compilé PHP con ël manteniment MySQL])",
-       'config-support-postgres' => "* $1 e l'é un sistema ëd base ëd dàit popolar a sorgiss duverta com alternativa a MySQL ([http://www.php.net/manual/en/pgsql.installation.php com compilé PHP con ël manteniment ëd PostgreSQL])",
+       'config-support-postgres' => "* $1 e l'é un sistema ëd base ëd dàit popolar a sorgiss duverta com alternativa a MySQL ([http://www.php.net/manual/en/pgsql.installation.php com compilé PHP con ël manteniment ëd PostgreSQL])", # Fuzzy
        'config-support-sqlite' => "* $1 e l'é un sistema ëd base ëd dàit leger che a l'é motobin bin mantnù ([http://www.php.net/manual/en/pdo.installation.php com compilé PHP con ël manteniment ëd SQLite], a deuvra PDO)",
        'config-support-oracle' => "* $1 a l'é na base ëd dàit comersial për j'amprèise. ([http://www.php.net/manual/en/oci8.installation.php Com compilé PHP con ël manteniment OCI8])",
        'config-header-mysql' => 'Ampostassion MySQL',
@@ -14619,9 +14790,9 @@ S'a vëd pa listà sì-sota ël sistema ëd base ëd dàit ch'a preuva a dovré,
        'config-invalid-db-server-oracle' => 'TNS ëd la base ëd dat pa bon "$1".
 Dovré mach dle litre ASCII (a-z, A-Z), nùmer (0-9), sotlignadure (_) e pontin (.).',
        'config-invalid-db-name' => 'Nòm ëd la base ëd dàit pa bon "$1".
-Dovré mach litre ASCII (a-z, A-Z), nùmer (0-9) e sotlignadure (_).',
+Dovré mach litre ASCII (a-z, A-Z), nùmer (0-9) e sotlignadure (_).', # Fuzzy
        'config-invalid-db-prefix' => 'Prefiss dla base ëd dàit pa bon "$1".
-Dovré mach litre ASCII (a-z, A-Z), nùmer (0-9) e sotlignadure (_).',
+Dovré mach litre ASCII (a-z, A-Z), nùmer (0-9) e sotlignadure (_).', # Fuzzy
        'config-connection-error' => "$1.
 
 Controla l'ospitant, lë stranòm d'utent e la ciav sì-sota e prové torna.",
@@ -14715,7 +14886,7 @@ Specìfica un nòm utent diferent.',
        'config-admin-password-same' => "La ciav a dev nen esse l'istessa ëd lë stranòm d'utent.",
        'config-admin-password-mismatch' => "Le doe ciav che a l'ha scrivù a son diferente antra 'd lor.",
        'config-admin-email' => 'Adrëssa ëd pòsta eletrònica:',
-       'config-admin-email-help' => "Ch'a anserissa ambelessì n'adrëssa ëd pòsta eletrònica për përmëtt-je d'arsèive ëd mëssagi da d'àutri utent an sla wiki, riamposté soa ciav, e esse anformà ëd camgiament a le pàgine ch'a ten sot-euj.",
+       'config-admin-email-help' => "Ch'a anserissa ambelessì n'adrëssa ëd pòsta eletrònica për përmëtt-je d'arsèive ëd mëssagi da d'àutri utent an sla wiki, riamposté soa ciav, e esse anformà ëd camgiament a le pàgine ch'a ten sot-euj.", # Fuzzy
        'config-admin-error-user' => 'Eror antern an creand n\'aministrator con lë stranòm "<nowiki>$1</nowiki>".',
        'config-admin-error-password' => 'Eror antern an ampostand na ciav për l\'admin "<nowiki>$1</nowiki>": <pre>$2</pre>',
        'config-subscribe' => "Ch'a sot-scriva la [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce lista ëd discussion ëd j'anonsi ëd publicassion].",
@@ -14755,7 +14926,7 @@ A l'é generalment nen necessari për na wiki privà o d'asienda.
 S'a veul podèj dovré dij test da Wikipedia, e a veul che Wikipedia a aceta dij test copià da soa wiki, a dovrìa serne '''Creative Commons Attribution Share Alike'''.
 
 La GNU Free Documentation License a l'era la veja licensa dont sota a-i era Wikipedia.
-A l'é anco' na licensa bon-a, an tùit ij cas, sta licensa a l'ha chèich funsion ch'a rendo difìcij l'utilisassion e l'antërpretassion.",
+A l'é anco' na licensa bon-a, an tùit ij cas, sta licensa a l'ha chèich funsion ch'a rendo difìcij l'utilisassion e l'antërpretassion.", # Fuzzy
        'config-email-settings' => 'Ampostassion ëd pòsta eletrònica',
        'config-enable-email' => 'Abilité ij mëssagi ëd pòsta eletrònica an surtìa',
        'config-enable-email-help' => "S'a veul che la pòsta eletrònica a marcia, j'[http://www.php.net/manual/en/mail.configuration.php ampostassion ëd pòsta eletrònica PHP] a devo esse configurà për da bin.
@@ -14788,7 +14959,7 @@ Idealment, sòn a dovrìa pa esse acessìbil an sl'aragnà.",
        'config-logo-help' => "La pel dë stàndard ëd MediaWiki a comprend lë spassi për na marca ëd 135x160 pontin ant ël canton an àut a snista.
 Ch'a dëscaria na figura ëd la dimension aproprià, e ch'a anserissa l'anliura ambelessì.
 
-S'a veul gnun-e marche, ch'a lassa ës camp bianch.",
+S'a veul gnun-e marche, ch'a lassa ës camp bianch.", # Fuzzy
        'config-instantcommons' => 'Abìlita Instant Commons',
        'config-instantcommons-help' => "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] a l'é na funsion ch'a përmët a le wiki ëd dovré dle figure, dij son e d'àutri mojen trovà an sël sit [//commons.wikimedia.org/ Wikimedia Commons].
 Për dovré sossì, MediaWiki a l'ha da manca dl'acess a la ragnà.
@@ -14807,7 +14978,7 @@ Ij sit da mesan a gròss a son motobin ancoragià a abilité sòn, e ij sit cit
        'config-cache-memcached' => "Dovré Memcached (a ciama n'ampostassion e na configurassion adissionaj)",
        'config-memcached-servers' => 'Servent Memcached:',
        'config-memcached-help' => "Lista d'adrësse IP da dovré për Memcached.
-A dovrìa esse separà con dle vìrgole e specifiché la pòrta da dovré (për esempi: 127.0.0.1:11211, 192.168.1.25:11211).",
+A dovrìa esse separà con dle vìrgole e specifiché la pòrta da dovré (për esempi: 127.0.0.1:11211, 192.168.1.25:11211).", # Fuzzy
        'config-extensions' => 'Estension',
        'config-extensions-help' => "J'estension listà dì-sota a son ëstàite trovà ant sò dossié <code>./extensions</code>.
 
@@ -14830,7 +15001,7 @@ Sauté la creassion.",
        'config-install-interwiki-list' => "As peul pa trovesse l'archivi <code>interwiki.list</code>.",
        'config-install-interwiki-exists' => "'''Avis''': La tàula interwiki a smija ch'a l'abia già dj'element.
 Për stàndard, la lista a sarà sautà.",
-       'config-install-keys' => 'Generassion ëd la ciav segreta',
+       'config-install-keys' => 'Generassion ëd la ciav segreta', # Fuzzy
        'config-install-sysop' => "Creassion dël cont ëd l'utent aministrator",
        'config-install-done' => "'''Congratulassion!'''
 A l'ha instalà për da bin mediaWiki.
@@ -14841,7 +15012,7 @@ A conten tuta soa configurassion.
 A dovrà [$1 dëscarielo] e butelo ant la bas ëd l'instalassion ëd soa wiki (ël midem dossié d'index.php).
 '''Nòta''': S'a lo fa nen adess, cost archivi ëd configurassion generà a sarà pa disponìbil për chiel pi tard s'a chita l'instalassion sensa dëscarielo.
 
-Quand che a l'é stàit fàit, a peul '''[$2 intré an soa wiki]'''.",
+Quand che a l'é stàit fàit, a peul '''[$2 intré an soa wiki]'''.", # Fuzzy
        'config-help' => 'agiut',
        'mainpagetext' => "'''MediaWiki a l'é staita anstalà a la përfession.'''",
        'mainpagedocfooter' => "Che a varda la [//meta.wikimedia.org/wiki/Help:Contents User's Guide] për avèj dj'anformassion ant sël coma dovré ël programa dla wiki.
@@ -14909,8 +15080,11 @@ $messages['ps'] = array(
        'config-admin-password-confirm' => 'پټنوم يو ځل بيا:',
        'config-admin-email' => 'برېښليک پته:',
        'config-profile-wiki' => 'دوديزه ويکي',
+       'config-license-pd' => 'ټولګړی شپول',
        'config-email-settings' => 'د برېښليک امستنې',
        'config-install-step-done' => 'ترسره شو',
+       'config-install-tables' => 'لښتيالونه جوړول',
+       'config-help' => 'لارښود',
        'mainpagetext' => "'''MediaWiki په برياليتوب سره نصب شو.'''",
        'mainpagedocfooter' => 'د ويکي ساوترې د کارولو د  مالوماتو په اړه [//meta.wikimedia.org/wiki/Help:Contents د کارن لارښود] سره سلا وکړۍ.
 
@@ -15019,6 +15193,7 @@ Devia [//www.mediawiki.org/wiki/Unicode_normalization_considerations actualizá-
 Se usa alojamento partilhado, peça ao fornecedor do alojamento para instalar um controlador apropriado.
 Se foi você quem compilou o PHP, reconfigure-o com um cliente de base de dados activado; por exemplo, usando <code>./configure --with-mysql</code>.
 Se instalou o PHP a partir de um pacote Debian ou Ubuntu, então precisa de instalar também o módulo php5-mysql.",
+       'config-outdated-sqlite' => "'''Aviso''': Tem a versão $1 do SQLite, que é anterior à versão mínima necessária, a $2. O SQLite não estará disponível.",
        'config-no-fts3' => "'''Aviso''': O SQLite foi compilado sem o módulo [//sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
        'config-register-globals' => "'''Aviso: A opção <code>[http://php.net/register_globals register_globals]</code> do PHP está activada.'''
 '''Desactive-a, se puder.'''
@@ -15048,11 +15223,14 @@ O MediaWiki necessita do suporte UTF-8 para funcionar correctamente.",
        'config-memory-bad' => "'''Aviso:''' A configuração <code>memory_limit</code> do PHP é $1.
 Isto é provavelmente demasiado baixo.
 A instalação poderá falhar!",
+       'config-ctype' => "'''Fatal''': O PHP tem de ser compilado com suporte para a [http://www.php.net/manual/en/ctype.installation.php extensão Ctype].",
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] instalada',
        'config-apc' => '[http://www.php.net/apc APC] instalada',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] instalada',
-       'config-no-cache' => "'''Aviso:''' Não foram encontrados [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] nem [http://www.iis.net/download/WinCacheForPhp WinCache].
+       'config-no-cache' => "'''Aviso:''' Não foi possível encontrar: [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache], nem [http://www.iis.net/download/WinCacheForPhp WinCache].
 A cache de objectos não será activada.",
+       'config-mod-security' => "'''Aviso''': O seu servidor de internet tem o [http://modsecurity.org/ mod_security] ativado. Se este estiver mal configurado, pode causar problemas ao MediaWiki ou a outros programas, permitindo que os utilizadores publiquem conteúdos arbitrários.
+Consulte a [http://modsecurity.org/documentation/ mod_security documentação] ou peça apoio ao fornecedor do alojamento do seu servidor se encontrar erros aleatórios.",
        'config-diff3-bad' => 'O GNU diff3 não foi encontrado.',
        'config-imagemagick' => 'Foi encontrado o ImageMagick: <code>$1</code>.
 Se possibilitar uploads, a miniaturização de imagens será activada.',
@@ -15067,7 +15245,7 @@ A instalação foi abortada.",
        'config-using-uri' => 'Será usada a URL do servidor "<nowiki>$1$2</nowiki>".',
        'config-uploads-not-safe' => "'''Aviso:''' O directório por omissão para uploads <code>$1</code>, está vulnerável à execução arbitrária de scripts.
 Embora o MediaWiki verifique a existência de ameaças de segurança em todos os ficheiros enviados, é altamente recomendado que [//www.mediawiki.org/wiki/Manual:Security#Upload_security vede esta vulnerabilidade de segurança] antes de possibilitar uploads.",
-       'config-no-cli-uploads-check' => "'''Aviso:''' Durante a instalação da CLI (\"Call Level Interface\", a Interface ao Nível da Chamada de Execução), o directório por omissão para uploads, <code>\$1</code>, não é verificado para determinar se é vulnerável à execução de código arbitrário.",
+       'config-no-cli-uploads-check' => "'''Aviso:''' O directório por omissão para uploads, <code>\$1</code>, não é verificado para determinar se é vulnerável à execução de código arbitrário durante a instalação por CLI (\"Command-line Interface\").",
        'config-brokenlibxml' => 'O seu sistema tem uma combinação de versões de PHP e libxml2 conhecida por ser problemática, podendo causar corrupção de dados no MediaWiki e outras aplicações da internet.
 Actualize para o PHP versão 5.2.9 ou posterior e libxml2 versão 2.7.3 ou posterior ([//bugs.php.net/bug.php?id=45996 incidência reportada no PHP]).
 Instalação interrompida.',
@@ -15079,9 +15257,11 @@ Instalação interrompida.',
        'config-db-host' => 'Servidor da base de dados:',
        'config-db-host-help' => 'Se a base de dados estiver num servidor separado, introduza aqui o nome ou o endereço IP desse servidor.
 
-Se estiver a usar um servidor partilhado, o fornecedor do alojamento deve ter-lhe fornecido o nome do servidor na documentação.
+Se estiver a usar um servidor partilhado, o fornecedor do alojamento deve fornecer o nome do servidor na documentação.
 
-Se está a fazer a instalação num servidor Windows com MySQL, usar como nome do servidor "localhost" poderá não funcionar. Se não funcionar, tente usar "127.0.0.1" como endereço IP local.',
+Se está a fazer a instalação num servidor Windows com MySQL, usar como nome do servidor "localhost" poderá não funcionar. Se não funcionar, tente usar "127.0.0.1" como endereço IP local.
+
+Se estiver a usar PostgreSQL, deixe este campo em branco para fazer a ligação através de um socket Unix.',
        'config-db-host-oracle' => 'TNS (Transparent Network Substrate) da base de dados:',
        'config-db-host-oracle-help' => 'Introduza um [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Nome Local de Ligação] válido; tem de estar visível para esta instalação um ficheiro tnsnames.ora.<br />Se está a usar bibliotecas cliente versão 10g ou posterior, também pode usar o método [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Ligação Fácil] de atribuição do nome.',
        'config-db-wiki-settings' => 'Identifique esta wiki',
@@ -15456,6 +15636,7 @@ $3
 Depois de terminar o passo anterior, pode '''[$2 entrar na wiki]'''.",
        'config-download-localsettings' => 'Download do LocalSettings.php',
        'config-help' => 'ajuda',
+       'config-nofile' => 'Não foi possível encontrar o ficheiro "$1". Terá sido apagado?',
        'mainpagetext' => "'''MediaWiki instalado com sucesso.'''",
        'mainpagedocfooter' => 'Consulte o [//meta.wikimedia.org/wiki/Help:Contents Guia de Utilizadores] para informações sobre o uso do software wiki.
 
@@ -15486,7 +15667,7 @@ Esta instalação deverá ser atualizada através do <code>update.php</code>',
        'config-upgrade-key-missing' => 'Foi detectada uma instalação existente do MediaWiki.
 Para atualizar esta instalação, por favor, coloque a seguinte linha na parte inferior do seu LocalSettings.php:
 
-$ 1',
+$ 1', # Fuzzy
        'config-session-error' => 'Erro ao iniciar a sessão: $1',
        'config-session-expired' => 'Os seus dados de sessão parecem ter expirado.
 As sessões estão configuradas para uma duração de $1.
@@ -15532,7 +15713,7 @@ Em conjunto com este programa você deve ter recebido <doclink href=Copying>uma
        'config-sidebar' => '* [//www.mediawiki.org/wiki/MediaWiki/pt Página principal do MediaWiki]
 * [//www.mediawiki.org/wiki/Help:Contents/pt Ajuda]
 * [//www.mediawiki.org/wiki/Manual:Contents/pt Manual técnico]
-* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]',
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]', # Fuzzy
        'config-env-good' => 'O ambiente foi verificado.
 Você pode instalar o MediaWiki.',
        'config-env-bad' => 'O ambiente foi verificado.
@@ -15541,8 +15722,8 @@ Você não pode instalar o MediaWiki.',
        'config-unicode-using-utf8' => 'A usar o utf8_normalize.so, de Brian Viper, para a normalização Unicode.',
        'config-unicode-using-intl' => 'Usando a [http://pecl.php.net/intl extensão intl PECL] para a normalização Unicode.',
        'config-unicode-pure-php-warning' => "'''Aviso''': A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode.
-Se o seu site tem um alto volume de tráfego, devia informar-se um pouco sobre a [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalização Unicode].",
-       'config-no-db' => 'Não foi possível encontrar um driver de banco de dados adequado!',
+Se o seu site tem um alto volume de tráfego, devia informar-se um pouco sobre a [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalização Unicode].", # Fuzzy
+       'config-no-db' => 'Não foi possível encontrar um driver de banco de dados adequado!', # Fuzzy
        'config-no-fts3' => "' ' 'Aviso' ' ': O SQLite foi compilado sem o módulo [//sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
        'config-register-globals' => "' ' 'Aviso: A opção <code>[http://php.net/register_globals register_globals]</code> do PHP está ativada.'''
 ' ' 'Desative-a, se puder.'''
@@ -15550,7 +15731,7 @@ O MediaWiki funcionará mesmo assim, mas o seu servidor ficará exposto a potenc
        'config-logo-help' => 'O tema padrão do MediaWiki inclui espaço para um logotipo de 135x160 pixels no canto superior esquerdo.
 Faça o upload de uma imagem com estas dimensões e introduza aqui a URL dessa imagem.
 
-Se você não pretende usar um logotipo, deixe este campo em branco.',
+Se você não pretende usar um logotipo, deixe este campo em branco.', # Fuzzy
        'mainpagetext' => "'''MediaWiki instalado com sucesso.'''",
        'mainpagedocfooter' => 'Consulte o [//meta.wikimedia.org/wiki/Help:Contents Manual de Usuário] para informações de como usar o software wiki.
 
@@ -15561,7 +15742,8 @@ Se você não pretende usar um logotipo, deixe este campo em branco.',
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussão com avisos de novas versões do MediaWiki]',
 );
 
-/** Quechua (Runa Simi) */
+/** Quechua (Runa Simi)
+ */
 $messages['qu'] = array(
        'mainpagetext' => "'''MediaWiki nisqa llamp'u kaqqa aypaylla takyachisqañam.'''",
        'mainpagedocfooter' => "Wiki llamp'u kaqmanta willasunaykipaqqa [//meta.wikimedia.org/wiki/Help:Contents Ruraqpaq yanapana] ''(User's Guide)'' sutiyuq p'anqata qhaway.
@@ -15573,7 +15755,8 @@ $messages['qu'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Romagnol (Rumagnôl) */
+/** Romagnol (Rumagnôl)
+ */
 $messages['rgn'] = array(
        'mainpagetext' => "'''L'instalaziòn d'MediaWiki l'è andêda ben'''",
 );
@@ -15620,8 +15803,18 @@ $messages['ro'] = array(
        'config-header-sqlite' => 'Setări SQLite',
        'config-header-oracle' => 'Setări Oracle',
        'config-missing-db-name' => 'Trebuie să introduci o valoare pentru „Numele bazei de date”',
+       'config-mysql-engine' => 'Motor de stocare:',
+       'config-mysql-innodb' => 'InnoDB',
+       'config-mysql-myisam' => 'MyISAM',
+       'config-site-name-blank' => 'Introduceți un nume pentru sit.',
        'config-ns-generic' => 'Proiect',
        'config-admin-password' => 'Parolă:',
+       'config-optional-continue' => 'Adresează-mi mai multe întrebări.',
+       'config-optional-skip' => 'Sunt deja plictisit, doar instalează wikiul.',
+       'config-profile-wiki' => 'Wiki tradițional',
+       'config-profile-private' => 'Wiki privat',
+       'config-email-settings' => 'Setări pentru e-mail',
+       'config-install-step-done' => 'realizat',
        'mainpagetext' => "'''Programul Wiki a fost instalat cu succes.'''",
        'mainpagedocfooter' => 'Consultați [//meta.wikimedia.org/wiki/Help:Contents Ghidul utilizatorului (en)] pentru informații despre utilizarea software-ului wiki.
 
@@ -16225,7 +16418,8 @@ $messages['sa'] = array(
        'mainpagetext' => 'मीडियाविकि तु सफलतया अन्तःस्थापितमस्ति',
 );
 
-/** Sakha (саха тыла) */
+/** Sakha (саха тыла)
+ */
 $messages['sah'] = array(
        'mainpagetext' => "'''«MediaWiki» сөпкө туруорулунна.'''",
        'mainpagedocfooter' => 'Биики программатын туһунан [//meta.wikimedia.org/wiki/Help:Contents справочникка] көрүөххүн сөп.
@@ -16244,7 +16438,8 @@ $messages['sc'] = array(
        'mainpagetext' => "'''MediaWiki est stadu installadu in modu currègidu.'''",
 );
 
-/** Sicilian (sicilianu) */
+/** Sicilian (sicilianu)
+ */
 $messages['scn'] = array(
        'mainpagetext' => "'''Nstallazzioni di MediaWiki cumplitata currettamenti.'''",
        'mainpagedocfooter' => "Pi favuri taliari [//meta.wikimedia.org/wiki/Help:Contents Guida utenti] pi aiutu supra l'usu e la cunfigurazzioni di stu software wiki.
@@ -16255,7 +16450,8 @@ $messages['scn'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list dî rilassi di MediaWiki]",
 );
 
-/** Scots (Scots) */
+/** Scots (Scots)
+ */
 $messages['sco'] = array(
        'mainpagetext' => "'''MediaWiki haes been installit wi speed.'''",
        'mainpagedocfooter' => "Aks the [//meta.wikimedia.org/wiki/Help:Contents Uiser's Manual] for speirins aboot using the wiki saftware.
@@ -16267,7 +16463,8 @@ $messages['sco'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki releese mailin leet]",
 );
 
-/** Sassaresu (Sassaresu) */
+/** Sassaresu (Sassaresu)
+ */
 $messages['sdc'] = array(
        'mainpagetext' => "'''Isthallazioni di MediaWiki accabadda currentementi.'''",
        'mainpagedocfooter' => "Cunsultha la [//meta.wikimedia.org/wiki/Aggiuddu:Summàriu Ghia utenti] pa maggiori infuimmazioni i l'usu di chisthu software wiki.
@@ -16280,7 +16477,8 @@ Li sighenti cullegamenti so in linga ingrese:
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annùnzii MediaWiki]",
 );
 
-/** Cmique Itom (Cmique Itom) */
+/** Cmique Itom (Cmique Itom)
+ */
 $messages['sei'] = array(
        'mainpagetext' => "'''MediaWiki coccebj installöx successua zo mii.'''",
 );
@@ -16374,8 +16572,17 @@ $messages['si'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce මීඩියාවිකි නිකුතුව තැපැල් ලැයිස්තුව]',
 );
 
-/** Slovak (slovenčina) */
+/** Slovak (slovenčina)
+ * @author Kusavica
+ */
 $messages['sk'] = array(
+       'config-your-language' => 'Váš jazyk:',
+       'config-wiki-language' => 'Wiki jazyk:',
+       'config-back' => '← Späť',
+       'config-continue' => 'Pokračovať →',
+       'config-page-language' => 'Jazyk',
+       'config-download-localsettings' => 'Stiahnuť LocalSettings.php',
+       'config-nofile' => 'Súbor "$1" sa nenašiel. Bol zmazaný?',
        'mainpagetext' => "'''Softvér MediaWiki bol úspešne nainštalovaný.'''",
        'mainpagedocfooter' => 'Informácie ako používať wiki softvér nájdete v [//meta.wikimedia.org/wiki/Help:Contents Používateľskej príručke].
 
@@ -16628,7 +16835,8 @@ $messages['so'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Albanian (shqip) */
+/** Albanian (shqip)
+ */
 $messages['sq'] = array(
        'mainpagetext' => "'''MediaWiki software u instalua me sukses.'''",
        'mainpagedocfooter' => 'Për më shumë informata rreth përdorimit të softwerit wiki , ju lutem shikoni [//meta.wikimedia.org/wiki/Help:Contents dokumentacionin përkatës].
@@ -16639,12 +16847,39 @@ $messages['sq'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWiki-t]',
 );
 
-/** Serbian (Cyrillic script) (‪српски (ћирилица)‬)
+/** Serbian (Cyrillic script) (српски (ћирилица)‎)
  * @author Rancher
+ * @author Михајло Анђелковић
  */
 $messages['sr-ec'] = array(
+       'config-session-error' => 'Грешка при започињању сесије: $1',
+       'config-session-expired' => 'Ваши подаци о сесији су истекли.
+Сесије су подешене да трају $1.
+Њихов рок можете повећати постављањем <code>session.gc_maxlifetime</code> у php.ini.
+Поново покрените инсталацију.',
+       'config-no-session' => 'Ваши подаци о сесији су изгубљени!
+Проверите Ваш php.ini и обезбедите да је <code>session.save_path</code> постављен на одговарајући директоријум.',
+       'config-your-language' => 'Ваш језик:',
+       'config-your-language-help' => 'Изаберите језик који желите да користите током инсталације.',
+       'config-wiki-language' => 'Језик викија:',
+       'config-wiki-language-help' => 'Изаберите језик на ком ће бити садржај викија.',
+       'config-back' => '← Назад',
        'config-continue' => 'Настави →',
        'config-page-language' => 'Језик',
+       'config-page-welcome' => 'Добро дошли на МедијаВики!',
+       'config-page-dbconnect' => 'Повезивање са базом података',
+       'config-page-upgrade' => 'Надоградња постојеће инсталације',
+       'config-page-dbsettings' => 'Подешавања базе података',
+       'config-page-name' => 'Назив',
+       'config-page-options' => 'Поставке',
+       'config-page-install' => 'Инсталирај',
+       'config-page-complete' => 'Завршено!',
+       'config-page-restart' => 'Поновно покретање инсталације',
+       'config-page-copying' => 'Умножавање',
+       'config-page-upgradedoc' => 'Надоградња',
+       'config-page-existingwiki' => 'Постојећи вики',
+       'config-help-restart' => 'Желите ли да обришете све сачуване податке које сте унели и поново покренете инсталацију?',
+       'config-restart' => 'Да, покрени поново',
        'config-type-mysql' => 'MySQL',
        'config-type-postgres' => 'PostgreSQL',
        'config-type-sqlite' => 'SQLite',
@@ -16658,10 +16893,37 @@ $messages['sr-ec'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Дописна листа о издањима Медијавикија]',
 );
 
-/** Serbian (Latin script) (‪srpski (latinica)‬) */
+/** Serbian (Latin script) (srpski (latinica)‎)
+ */
 $messages['sr-el'] = array(
+       'config-session-error' => 'Greška pri započinjanju sesije: $1',
+       'config-session-expired' => 'Vaši podaci o sesiji su istekli.
+Sesije su podešene da traju $1.
+Njihov rok možete povećati postavljanjem <code>session.gc_maxlifetime</code> u php.ini.
+Ponovo pokrenite instalaciju.',
+       'config-no-session' => 'Vaši podaci o sesiji su izgubljeni!
+Proverite Vaš php.ini i obezbedite da je <code>session.save_path</code> postavljen na odgovarajući direktorijum.',
+       'config-your-language' => 'Vaš jezik:',
+       'config-your-language-help' => 'Izaberite jezik koji želite da koristite tokom instalacije.',
+       'config-wiki-language' => 'Jezik vikija:',
+       'config-wiki-language-help' => 'Izaberite jezik na kom će biti sadržaj vikija.',
+       'config-back' => '← Nazad',
        'config-continue' => 'Nastavi →',
        'config-page-language' => 'Jezik',
+       'config-page-welcome' => 'Dobro došli na MedijaViki!',
+       'config-page-dbconnect' => 'Povezivanje sa bazom podataka',
+       'config-page-upgrade' => 'Nadogradnja postojeće instalacije',
+       'config-page-dbsettings' => 'Podešavanja baze podataka',
+       'config-page-name' => 'Naziv',
+       'config-page-options' => 'Postavke',
+       'config-page-install' => 'Instaliraj',
+       'config-page-complete' => 'Završeno!',
+       'config-page-restart' => 'Ponovno pokretanje instalacije',
+       'config-page-copying' => 'Umnožavanje',
+       'config-page-upgradedoc' => 'Nadogradnja',
+       'config-page-existingwiki' => 'Postojeći viki',
+       'config-help-restart' => 'Želite li da obrišete sve sačuvane podatke koje ste uneli i ponovo pokrenete instalaciju?',
+       'config-restart' => 'Da, pokreni ponovo',
        'config-type-mysql' => 'MySQL',
        'config-type-postgres' => 'PostgreSQL',
        'config-type-sqlite' => 'SQLite',
@@ -16675,7 +16937,8 @@ $messages['sr-el'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mejling lista o izdanjima MedijaVikija]',
 );
 
-/** Sranan Tongo (Sranantongo) */
+/** Sranan Tongo (Sranantongo)
+ */
 $messages['srn'] = array(
        'mainpagetext' => "'''MediaWiki seti kon bun.'''",
        'mainpagedocfooter' => 'Luku na ini a [//meta.wikimedia.org/wiki/Help:Yepi yepibuku] fu si fa fu kebrouki a wikisoftware.
@@ -16687,7 +16950,8 @@ $messages['srn'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Boskopu grupu gi nyun meki]',
 );
 
-/** Swati (SiSwati) */
+/** Swati (SiSwati)
+ */
 $messages['ss'] = array(
        'mainpagetext' => "'''i-MediaWiki seyifakeke ngalokuphelele.'''",
 );
@@ -16700,7 +16964,8 @@ $messages['stq'] = array(
        'mainpagedocfooter' => 'Sjuch ju [//meta.wikimedia.org/wiki/MediaWiki_localization Dokumentation tou de Anpaasenge fon dän Benutseruurfläche] un dät [//meta.wikimedia.org/wiki/Help:Contents Benutserhondbouk] foar Hälpe tou ju Benutsenge un Konfiguration.',
 );
 
-/** Sundanese (Basa Sunda) */
+/** Sundanese (Basa Sunda)
+ */
 $messages['su'] = array(
        'mainpagetext' => "'''''Software'' MediaWiki geus diinstal.'''",
        'mainpagedocfooter' => "Mangga tingal ''[//meta.wikimedia.org/wiki/MediaWiki_localisation documentation on customizing the interface]'' jeung [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Tungtunan Pamaké] pikeun pitulung maké jeung konfigurasi.",
@@ -16961,7 +17226,8 @@ $messages['ta'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce மீடியாவிக்கி வெளியீடு மின்னஞ்சல் பட்டியல்]',
 );
 
-/** Tulu (ತುಳು) */
+/** Tulu (ತುಳು)
+ */
 $messages['tcy'] = array(
        'mainpagetext' => "'''ಮೀಡಿಯವಿಕಿ ಯಶಸ್ವಿಯಾದ್ ಇನ್’ಸ್ಟಾಲ್ ಆಂಡ್.'''",
        'mainpagedocfooter' => 'ವಿಕಿ ತಂತ್ರಾಂಶನ್ ಉಪಗೋಗ ಮನ್ಪುನ ಬಗ್ಗೆ ಮಾಹಿತಿಗ್ [//meta.wikimedia.org/wiki/Help:Contents ಸದಸ್ಯೆರ್ನ ನಿರ್ದೇಶನ ಪುಟ] ತೂಲೆ.
@@ -17010,6 +17276,7 @@ $messages['te'] = array(
        'config-mysql-utf8' => 'UTF-8',
        'config-site-name' => 'వికీ యొక్క పేరు:',
        'config-ns-other' => 'ఇతర (ఇవ్వండి)',
+       'config-ns-other-default' => 'నావికీ',
        'config-admin-name' => 'మీ పేరు:',
        'config-admin-password' => 'సంకేతపదం:',
        'config-admin-password-confirm' => 'సంకేతపదం మళ్ళీ:',
@@ -17022,6 +17289,7 @@ $messages['te'] = array(
        'config-license-pd' => 'సార్వజనీనం',
        'config-email-settings' => 'ఈ-మెయిల్ అమరికలు',
        'config-upload-deleted' => 'తొలగించిన దస్త్రాల కొరకు సంచయం:',
+       'config-advanced-settings' => 'ఉన్నత స్వరూపణం',
        'config-install-step-done' => 'పూర్తయింది',
        'config-install-step-failed' => 'విఫలమైంది',
        'config-help' => 'సహాయం',
@@ -17043,7 +17311,8 @@ $messages['tet'] = array(
        'config-page-name' => 'Naran',
 );
 
-/** Tajik (Cyrillic script) (тоҷикӣ) */
+/** Tajik (Cyrillic script) (тоҷикӣ)
+ */
 $messages['tg-cyrl'] = array(
        'mainpagetext' => "'''Нармафзори МедиаВики бо муваффақият насб шуд.'''",
        'mainpagedocfooter' => 'Аз [//meta.wikimedia.org/wiki/Help:Contents Роҳнамои Корбарон] барои истифодаи нармафзори вики кӯмак бигиред.
@@ -17101,9 +17370,12 @@ $messages['tk'] = array(
  * @author Sky Harbor
  */
 $messages['tl'] = array(
-       'config-desc' => 'Ang instalador para sa MediaWiki',
+       'config-desc' => 'Ang tagapagluklok para sa MediaWiki',
        'config-title' => 'Instalasyong $1 ng MediaWiki',
        'config-information' => 'Kabatiran',
+       'config-localsettings-upgrade' => 'Napansin ang isang talaksang <code>LocalSettings.php</code>.
+Upang maitaas ang uri ng pagluluklok na ito, paki ipasok ang halaga ng <code>$wgUpgradeKey</code> sa loob ng kahong nasa ibaba.
+Matatagpuan mo ito sa loob ng LocalSettings.php.',
        'config-localsettings-cli-upgrade' => 'Napansin ang isang talaksan ng LocalSettings.php.
 Upang isapanahon ang pagtatalagang ito, mangyaring patakbuhin sa halip ang update.php',
        'config-localsettings-key' => 'Susi ng pagsasapanahon:',
@@ -17115,7 +17387,15 @@ $1',
        'config-localsettings-incomplete' => 'Lumilitaw na hindi pa buo ang umiiral na LocalSettings.php.
 Ang pabagu-bagong $1 ay hindi nakatakda.
 Mangyaring baguhin ang  LocalSettings.php upang ang maitakda ang pagpapabagu-bagong ito, at pindutin ang "Magpatuloy".',
+       'config-localsettings-connection-error' => 'Isang kamalian ang nakatagpo noong kumakabit sa kalipunan ng dato na ginagamit ang tinukoy na mga katakdaan sa loob ng LocalSettings.php o
+AdminSettings.php. Paki kumpunihin ang mga katakdaang ito at subukang muli.
+
+$1',
        'config-session-error' => 'Kamalian sa pagsisimula ng sesyon: $1',
+       'config-session-expired' => 'Tila nagwakas na ang inilaan sa iyong panahon ng dato.
+Ang inilaang mga panahon ay iniayos para sa isang panahon ng buhay na $1.
+Mapapataas mo ito sa pamamagitan ng pagtatakda ng <code>session.gc_maxlifetime</code> sa loob ng php.ini.
+Muling simulan ang proseso ng pagluluklok.',
        'config-no-session' => 'Nawala ang iyong datos ng sesyon!
 Suriin ang iyong php.ini at tiyakin na ang <code>session.save_path</code> ay nakatakda sa angkop na direktoryo.',
        'config-your-language' => 'Ang wika mo:',
@@ -17172,54 +17452,157 @@ Hindi mo mailuklok ang MediaWiki.',
 Subalit, nangangailangan ang MediaWiki ng PHP $2 o mas mataas pa.',
        'config-unicode-using-utf8' => 'Ginagamit ang utf8_normalize.so ni Brion Vibber para sa pagpapanormal ng Unikodigo.',
        'config-unicode-using-intl' => 'Ginagamit ang [http://pecl.php.net/intl intl dugtong na PECL] para sa pagsasanormal ng Unikodigo.',
+       'config-unicode-pure-php-warning' => "'''Babala''': Ang [http://pecl.php.net/intl dugtong ng internasyunal na PECL] ay hindi makukuha upang makapanghawak ng pagpapanormal ng Unikodigo, na babagsak na pabalik sa mabagal na pagsasakatuparan ng dalisay na PHP.
+Kapag nagpapatakbo ka ng isang pook na mataas ang trapiko, dapat kang bumasa ng kaunti hinggil sa [//www.mediawiki.org/wiki/Unicode_normalization_considerations pagpapanormal ng Unikodigo].",
+       'config-unicode-update-warning' => "'''Babala''': Ang nakaluklok na bersiyon ng pambalot ng pagpapanormal ng Unikodigo ay gumagamit ng isang mas matandang bersiyon ng aklatan ng [http://site.icu-project.org/ proyekto ng ICU].
+Dapat kang [//www.mediawiki.org/wiki/Unicode_normalization_considerations magtaas ng uri] kung may pag-aalala ka hinggil sa paggamit ng Unikodigo.",
        'config-no-db' => 'Hindi matagpuan ang isang angkop na tagapagmaneho ng kalipunan ng datos! Kailangan mong magluklok ng isang tagapagmaneho ng kalipunan ng dato para sa PHP.
 Tinatangkilik ang sumusunod na mga uri ng kalipunan ng dato: $1.
 
 Kung ikaw ay nasa isang pinagsasaluhang pagpapasinaya, hilingin sa iyong tagapagbigay ng pagpapasinaya na iluklok ang isang angkop na tagapagmaneho ng kalipunan ng dato.
 Kung ikaw mismo ang nangalap ng PHP, muling isaayos ito na pinagagana ang isang kliyente ng kalipunan ng dato, halimbawa na ang paggamit ng <code>./configure --with-mysql</code>.
 Kung iniluklok mo ang PHP mula sa isang pakete ng Debian o Ubuntu, kung gayon kailangan mo ring magluklok ng modyul na php5-mysql.',
+       'config-outdated-sqlite' => "'''Babala''': mayroong kang $1 ng SQLite, na mas mababa kaysa sa pinaka mababang kailangang bersiyon na $2. Magiging hindi makukuha ang SQLite.",
+       'config-no-fts3' => "'''Warning''': Ang SQLite ay hindi itinala at tinipon na wala ang [//sqlite.org/fts3.html modulong FTS3], ang mga tampok na panghanap ay magiging hindi makukuha sa ibabaw ng panlikod na dulong ito.",
+       'config-register-globals' => "'''Babala: Ang mapipili na <code>[http://php.net/register_globals register_globals]</code> ng PHP ay pinagagana.'''
+'''Huwag paganahin kung kaya mo.'''
+Aandar ang MediaWiki, subalit ang tagapaghain mo ay nakalantad sa maaaring maganap na mga kahinaang pangkatiwasayan.",
+       'config-magic-quotes-runtime' => "'''Malubha: Masigla ang [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]!'''
+Ang piniling ito ay hindi mahuhulaan na pipinsala sa lahok na dato.
+Hindi mo maaaring iluklok o gamitin ang MediaWiki maliban na lamang kung hindi na gumagana ang pinili na ito.",
+       'config-magic-quotes-sybase' => "'''Malubha: Masigla ang [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]!'''
+Hindi mahuhulaan na sinisira ng napiling ito ang lahok na dato.
+Hindi mo maaaring iluklok o gamitin ang MediaWiki maliban na lamang kung hindi na pinagagana ang napiling ito.",
+       'config-mbstring' => "'''Malubha: Masigla ang [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]!'''
+Ang napiling ito ay nagdurulot ng mga kamalian at maaaring sumira nang hindi nahuhulaan ang dato.
+Hindi mo maaaring iluklok o gamitin ang MediaWiki maliban na lamang kung hindi na pinagagana ang napiling ito.",
+       'config-ze1' => "'''Malubha: Masigla ang [http://www.php.net/manual/en/ini.core.php zend.ze1_compatibility_mode]!'''
+Ang napiling ito ay nagsasanhi ng karima-rimarim na mga sira sa MediaWiki.
+Hindi mo maaaring iluklok o gamitin ang MediaWiki maliban na lamang kung hindi na pinagagana ang napiling ito.",
+       'config-safe-mode' => "'''Babala:''' Masigla ang [http://www.php.net/features.safe-mode safe mode] ng PHP.
+Maaari itong magdulot ng mga suliranin, partikular na kung gumagamit ng mga ikinargang paitaas na talaksan at ng suporta sa <code>math</code>.",
+       'config-xml-bad' => 'Nawawala ang modulong XML ng PHP.
+Nangangailangan ang MediaWiki ng mga tungkulin sa loob ng modulong ito at hindi aandar sa loob ng ganitong pagkakaayos.
+Kung pinapatakbo mo ang Mandrake, iluklok ang pakete ng php-xml.',
+       'config-pcre' => 'Tila nawawala ang modyul na pangsuporta ng PCRE.
+Nangangailangan ang MediaWiki ng nakaukol sa Perl na mga tungkulin ng karaniwang pagsasaad upang gumana.',
+       'config-pcre-no-utf8' => "'''Malubha''': Tila tinipon ang modyul na PCRE ng PHP na wala ang suporta ng PCRE_UTF8.
+Nangangailangan ang MediaWiki ng suporta ng UTF-8 upang maging tama ang pag-andar.",
        'config-memory-raised' => 'Ang <code>hangganan_ng_alaala</code> ng PHP ay $1, itinaas sa $2.',
        'config-memory-bad' => "'''Babala:''' Ang <code>hangganan_ng_alaala</code> ng PHP ay $1.
 Ito ay maaaring napakababa.
 Maaaring mabigo ang pagluluklok!",
+       'config-ctype' => "'''Maluba''': Dapat na tipunin ang PHP na mayroong suporta para sa [http://www.php.net/manual/en/ctype.installation.php dugtong Ctype].",
        'config-xcache' => 'Ininstala na ang [http://xcache.lighttpd.net/ XCache]',
        'config-apc' => 'Ininstala na ang [http://www.php.net/apc APC]',
        'config-wincache' => 'Ininstala na ang [http://www.iis.net/download/WinCacheForPhp WinCache]',
        'config-no-cache' => "'''Babala:''' Hindi mahanap ang [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].
 Hindi pinapagana ang pagbabaon ng mga bagay.",
+       'config-mod-security' => "'''Babala''': Ang tagapaghain mo ng sangkasaputan ay pinagana na mayroong [http://modsecurity.org/ mod_security]. Kung mali ang kaayusan, makapagdurulot ito ng mga suliranin para sa MediaWiki o ibang mga sopwer na nagpapahintulot sa mga tagagamit na magpaskil ng hindi makatwirang nilalaman.
+Sumangguni sa [http://modsecurity.org/documentation/ mod_security kasulatan] o makipag-ugnayan sa suporta ng iyong tagapagpasinaya kapag nakatagpo ng alin mang mga kamalian.",
        'config-diff3-bad' => 'Hindi natagpuan ang GNU diff3.',
        'config-imagemagick' => 'Natagpuan ang ImageMagick: <code>$1</code>.
+Papaganahin ang pagkakagyat ng larawan kapag pinagana mo ang mga pagkakargang paitaas.',
+       'config-gd' => 'Natagpuan ang pinasadyang nakapaloob na grapiks ng GD.
 Papaganahin ang pagkakagyat ng larawan kapag pinagana mo ang mga pagkakargang paitaas.',
        'config-no-scaling' => 'Hindi matagpuan ang aklatang GD o ImageMagick.
 Hindi papaganahin ang pagkakagyat ng larawan.',
        'config-no-uri' => "'''Kamalian:''' Hindi matukoy ang kasalukuyang URI.
 Pinigilan ang pag-iinstala.",
+       'config-no-cli-uri' => "'''Babala''': Walang tinukoy na --landas ng panitik, ginagamit ang likas na katakdaan: <code>$1</code>.",
+       'config-using-server' => 'Ginagamit ang pangalan ng tagapaghain na "<nowiki>$1</nowiki>".',
+       'config-using-uri' => 'Ginagamit ang URL ng tagapaghain na "<nowiki>$1$2</nowiki>".',
+       'config-uploads-not-safe' => "'''Babala:''' Ang iyong likas na nakatakdang direktoryo para sa paitaas na mga pagkakarga na <code>$1</code> ay may kahinaan laban sa pagsasagawa ng mga panitiki na hindi makatwiran. Bagaman sinisiyasat ng MediaWiki ang lahat ng paitaas na naikargang mga talaksan para sa mga panganib na pangkatiwasayan, mataas na iminumungkahi na [//www.mediawiki.org/wiki/Manual:Security#Upload_security isara ang kahinaang ito na pangkatiwasayan] bago paganahin ang paitaas na mga pagkakarga.",
+       'config-no-cli-uploads-check' => "'''Babala:''' Ang iyong likas na nakatakdang direktoryo para sa paitaas na mga pagkakarga (<code>$1</code>) ay hindi nasuri para sa kahinaan laban sa pagsasagawa ng panitik na hindi makatwiran habang iniluluklok ang Ugnayang Mukha ng Guhit ng Kaataasan o Command-Line Interface (CLI).",
+       'config-brokenlibxml' => "Ang sistema mo ay mayroong isang pagsasama ng mga bersiyon ng PHP at libxml2 na maaaring masurot at maaaring makapagsanhi ng pagkasira ng datong nakakubli sa loob ng MediaWiki at iba pang mga aplikasyon ng sangkasaputan.
+Magtaas ng uri upang maging PHP 5.2.9 o mas lalong huli at libxml2 2.7.3 o mas lalong huli ([//bugs.php.net/bug.php?id=45996 isinalansan ang surot o ''bug'' na mayroong PHP]). Binigo ang pagluluklok.",
+       'config-using531' => 'Hindi maaaring gamitin ang MediaWiki na kapiling ang PHP na $1 dahil sa isang surot na kinasasangkutan ng mga parametrong pangsangguni sa <code>__call()</code>. Magtaas ng uri upang maging PHP 5.3.2 o mas mataas, o magbaba ng uri upang maging PHP 5.3.0 upang malutas ito. Binigo ang pagluluklok.',
+       'config-suhosin-max-value-length' => 'Nakaluklok ang Suhosin at hinahanggahan ang haba ng parametro ng GET sa $1 mga byte. Ang sangkap na ResourceLoader ng MediaWiki ay gagana sa paligid ng hangganang ito, subalit pasasamain nito ang pagganap. Kung talagang maaari, dapat mong itakda ang suhosin.get.max_value_length upang maging 1024 o mas mataas sa loob ng php.ini, at itakda ang $wgResourceLoaderMaxQueryLength sa katulad na halaga sa loob ng LocalSettings.php.',
        'config-db-type' => 'Uri ng kalipunan ng datos:',
        'config-db-host' => 'Tagapagpasinaya ng kalipunan ng datos:',
+       'config-db-host-help' => 'Kung ang iyong tagapaghain ng kalipunan ng dato ay nasa ibabaw ng isang ibang tagapaghain, ipasok ang pangalan ng tagapagpasinaya o tirahan ng IP dito.
+
+Kung gumagamit ka ng pinagsasaluhang pagpapasinaya ng sangkasaputan, dapat ibigay sa iyo ng iyong tagapagbigay ng pagpapasinaya ang tamang pangalan ng tagapagpasinaya sa loob ng kanilang kasulatan.
+
+Kapag nagluluklok ka sa ibabaw ng isang tagapaghain ng Windows at gumagamit ng MySQL, maaaring hindi gumana ang paggamit ng "localhost" para sa pangalan ng tagapaghain. Kung hindi, subukan ang "127.0.0.1" para sa katutubong tirahan ng IP.
+
+Kapag gumagamit ka ng PostgreSQL, iwanang walang laman ang hanay na ito upang kumabit sa pamamagitan ng bokilya ng Unix.',
        'config-db-host-oracle' => 'TNS ng kalipunan ng dato:',
+       'config-db-host-oracle-help' => 'Magpasok ng isang katanggap-tanggap na [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Katutubong Pangalan ng Pagkabit]; dapat na nakikita ang isang talaksan ng tnsnames.ora sa pagluluklok na ito.<br />Kung gumagamit ka ng mga aklatan ng kliyente na 10g o mas bago, maaari mo ring gamitin ang pamamaraan ng pagpapangalan ng [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Maginhawang Pagkabit].',
        'config-db-wiki-settings' => 'Kilalanin ang wiking ito',
        'config-db-name' => 'Pangalan ng kalipunan ng dato:',
+       'config-db-name-help' => 'Pumili ng isang pangalan na pangkilala sa wiki mo.
+Hindi ito dapat maglaman ng mga patlang.
+
+Kung gumagamit ka ng pinagsasaluhang pagpapasinaya ng sangkasaputan, ang iyong tagapagbigay ng pagpapasinaya ay maaaring bigyan ka ng isang tiyak na pangalan ng kalipunan ng datong gagamitin o papayagan kang lumikha ng mga kalipunan ng dato sa pamamagitan ng isang entrepanyong pantaban.',
        'config-db-name-oracle' => 'Balangkas ng kalipunan ng dato:',
+       'config-db-account-oracle-warn' => 'Mayroong tatlong tinatangkilik na tagpo para sa pagluluklok ng Oracle bilang panlikurang hulihan ng kalipunan ng dato:
+
+Kung nais mong lumikha ng akawnt ng kalipunan ng dato bilang bahagi ng proseso ng pagluluklok, paki magbigay ng isang akawnt na mayroong gampanin ng SYSDBA bilang akawnt ng kalipunan ng dato para sa pagluluklok at tukuyin ang ninanais na mga kredensiyal para sa akawnt ng pagpunta sa sangkasaputan, o di kaya ay maaaring kinakamay na lumikha ng akawnt ng pagpunta sa sangkasaputan at ibigay lamang ang akawnt na iyan (kung mayroong ito ng kinakailangang mga pahintulot upang malikha ang mga bagay na pampagpapanukala) o magbigay ng dalawang magkaibang mga akawnt, isang mayroong pribilehiyo ng paglikha at isang may pagbabawal para sa pagpunta sa sangkasaputan.
+
+Ang panitik sa paglikha ng isang akawnt na mayroon ng kinakailangang mga pribilehiyo ay matatagpuan sa loob ng direktoryong "maintenance/oracle/" ng pagluluklok na ito. Pakatandaan na ang paggamit ng isang akawnt na may pagbabawal ay hindi magpapagana isa lahat ng mga kakayahang pampananatili sa piling ng likas na nakatakdang akawnt.',
        'config-db-install-account' => 'Akawnt ng tagagamit para sa pagluluklok',
        'config-db-username' => 'Pangalang pangtagagamit ng kalipunan ng dato:',
        'config-db-password' => 'Hudyat sa kalipunan ng dato:',
+       'config-db-password-empty' => 'Paki magpasok ng isang hudyat para sa bagong tagagamit ng kalipunan ng dato: $1.
+Habang maging maaari na makalikha ng mga tagagamit na walang mga hudyat, hindi ito ligtas.',
+       'config-db-install-username' => 'Ipasok ang pangalan ng tagagamit na gagamitin upang kumabit sa kalipunan ng dato habang isinasagawa ang pagluluklok.
+Hindi ito ang pangalan ng tagagamit ng akawnt ng MediaWiki; ito ang pangalan ng tagagamit para sa iyong kalipunan ng dato.',
+       'config-db-install-password' => 'Ipasok ang hudyat na gagamitin upang kumabit sa kalipunan ng dato habang isinasagawa ang pagluluklok.
+Hindi ito ang hudyat para sa akawnt ng MediaWiki; ito ang hudyat para sa iyong kalipunan ng dato.',
        'config-db-install-help' => 'Ipasok ang pangalan ng tagagamit at hudyat na gagamitin upang umugnay sa kalipunan ng dato habang isinasagawa ang pagluluklok.',
        'config-db-account-lock' => 'Gamitin ang gayun ding pangalan ng tagagamit at hudyat habang nasa normal na operasyon',
        'config-db-wiki-account' => 'Akawnt ng tagagamit para sa pangkaraniwang pagpapaandar',
+       'config-db-wiki-help' => 'Ipasok ang pangalan ng tagagamit at hudyat na gagamitin upang kumabit sa kalipunan ng dato habang nasa karaniwang pagtakbo ng wiki.
+Kung hindi umiiral ang akawnt, at ang akawnt ng pagluluklok ay mayroong sapat na mga pribilehiyo, ang akawnt na ito ng tagagamit ay lilikhain na mayroong pinaka mababang mga pribilehiyo na kailangan upang mapatakbo ang wiki.',
        'config-db-prefix' => 'Unlapi ng talahanayan ng kalipunan ng dato:',
+       'config-db-prefix-help' => 'Kung kailangan mong ibahagi ang isang kalipunan ng dato sa pagitan ng maramihang mga wiki, o sa pagitan ng MediaWiki at ibang aplikasyon ng kasaputan, maaaring piliin mo na magdagdag ng isang unlapi sa lahat ng mga pangalan ng talahanayan upang maiwasan ang mga salungatan.
+Huwag gumamit ng mga patlang.
+
+Ang hanay na ito ay karaniwang iniiwanang walang laman.',
        'config-db-charset' => 'Pangkat ng panitik ng kalipunan ng dato',
        'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 binaryo',
        'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
        'config-charset-mysql4' => 'MySQL 4.0 paurong-kabagay UTF-8',
+       'config-charset-help' => "'''Babala:''' Kapag ginamit mo ang '''backwards-compatible UTF-8''' o \"nauukol na pabalik na UTF-8\" sa MySQL 4.1+, at may kasunod na pagtatabi ng pansalong kopya ng kalipunan ng dato na mayroong <code>mysqldump</code>, maaaring wasakin nito ang lahat ng mga panitik na hindi ASCII, na hindi na mababawi pa ang mga pansalong kopya.
+
+Sa '''gawi na nakahalo sa dalawa (binaryo)''', itinatabi ng MediaWiki ang tekstong UTF-8 sa kalipunan ng dato sa loob ng mga kahanayang binaryo.
+Mas kapaki-pakinabang ito kaysa sa gawi na UTF-8 ng MySQL, at nagpapahintulot sa iyo na gamitin ang buong kasaklawan ng mga panitik na Unikodigo.
+Sa '''gawi ng UTF-8''', malalaman ng MySQL kung anong pangkat ng panitik ang kinapapalooban ng iyong dato, at may kaangkupang maihaharap at mapapalitan ito, ngunit hindi ka nito papayagan na mag-imbak ng mga panitik sa ibabaw ng [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane] o Saligang Patag na Kayas na Pangmaramihang Wika.",
        'config-mysql-old' => 'Hindi kailangan ang MySQL na $1 o mas bago, mayroon kang $2.',
        'config-db-port' => 'Daungan ng kalipunan ng dato:',
        'config-db-schema' => 'Panukala para sa MediaWiki',
        'config-db-schema-help' => 'Ang nasa itaas na panukala ay pangkaraniwang magiging maayos.
 Baguhin lamang ito kung alam mong kinakailangan.',
+       'config-pg-test-error' => "Hindi makakabit sa kalipunan ng dato na '''$1''': $2",
        'config-sqlite-dir' => 'Direktoryo ng dato ng SQLite:',
+       'config-sqlite-dir-help' => "Iniimbak ng SQLite ang lahat ng dato sa loob ng isang nag-iisang talaksan.
+
+Ang ibibigay mong direktoryo ay dapat na maging masusulatan ng tagapaghain ng kasaputan habang nagluluklok.
+
+'''Hindi''' ito dapat na mapuntahan sa pamamagitan ng kasaputan, ito ang dahilan kung bakit hindi namin ito inilalagay sa kung nasaan ang iyong mga talaksan ng PHP.
+
+Ang tagapagluklok ay magsusulat ng isang talaksang <code>.htaccess</code> na kasama ito, subalit kapag nabigo iyon mayroong isang tao na maaaring makakuha ng pagka nakakapunta sa iyong hilaw na kalipunan ng dato.
+Kasama riyan ang hilaw na dato ng tagagamit (mga tirahan ng e-liham, pinaghalong mga hudyat) pati na ang nabura nang mga pagbabago at iba pang may pagbabawal na dato sa ibabaw ng wiki.
+
+Isaalang-alang ang paglalagay na magkakasama ang kalipunan ng dato sa ibang lugar, halimbawa na ang sa loob ng <code>/var/lib/mediawiki/yourwiki</code>.",
        'config-oracle-def-ts' => 'Likas na nakatakdang puwang ng talahanayan:',
        'config-oracle-temp-ts' => 'Pansamantalang puwang ng talahanayan:',
+       'config-type-mysql' => 'MySQL',
+       'config-type-postgres' => 'PostgreSQL',
+       'config-type-sqlite' => 'SQLite',
+       'config-type-oracle' => 'Oracle',
        'config-type-ibm_db2' => 'DB2 ng IBM',
+       'config-support-info' => 'Sinusuportahan ng MediaWiki ang sumusunod na mga sistema ng kalipunan ng dato:
+
+$1
+
+Kung hindi mo makita ang sistema ng kalipunan ng dato na sinusubukan mong gamitin na nakatala sa ibaba, kung gayon ay sundi ang mga tagubilin na nakakawing sa itaas upang mapagana ang suporta,',
+       'config-support-mysql' => '* Ang $1 ay ang pangunahing puntirya para sa MediaWiki at ang pinaka sinusuportahan ([http://www.php.net/manual/en/mysql.installation.php paano magtipon ng PHP na mayroong suporta ng MySQL])',
+       'config-support-postgres' => '* Ang $1 ay isang bantog na sistema ng kalipunan ng dato na bukas ang pinagmulan na panghalili sa MySQL ([http://www.php.net/manual/en/pgsql.installation.php paano magtipon ng PHP na mayroong suporta ng PostgreSQL]). Maaaring mayroong ilang hindi pangunahing mga surot na natitira pa, at hindi iminumungkahi para gamitin sa loob ng isang kapaligiran ng produksiyon.',
+       'config-support-sqlite' => 'Ang $1 ay isang magaan ang timbang na sistema ng kalipunan ng dato na sinusuportahan nang napaka mainam. ([http://www.php.net/manual/en/pdo.installation.php Paano magtipon ng PHP na mayroong suporta ng SQLite], gumagamit ng PDO)',
+       'config-support-oracle' => '* Ang $1 ay isang kalipunan ng dato ng kasigasigang pangkalakal. ([http://www.php.net/manual/en/oci8.installation.php Paano magtipunan ng PHP na mayroong suporta ng OCI8])',
+       'config-support-ibm_db2' => '* Ang $1 ay isang kalipunan ng dato ng kasigasigang pangkalakal.',
        'config-header-mysql' => 'Mga katakdaan ng MySQL',
        'config-header-postgres' => 'Mga katakdaan ng PostgreSQL',
        'config-header-sqlite' => 'Mga katakdaan ng SQLite',
@@ -17229,14 +17612,42 @@ Baguhin lamang ito kung alam mong kinakailangan.',
        'config-missing-db-name' => 'Dapat kang magpasok ng isang halaga para sa "Pangalan ng kalipunan ng dato"',
        'config-missing-db-host' => 'Dapat kang magpasok ng isang halaga para sa "Tagapagpasinaya ng kalipunan ng dato"',
        'config-missing-db-server-oracle' => 'Dapat kang magpasok ng isang halaga para sa "TNS ng kalipunan ng dato"',
+       'config-invalid-db-server-oracle' => 'Hindi katanggap-tanggap na pangalan ng TNSng kalipunan ng dato na "$1".
+Gumamit lamang ng mga titik ng ASCII (a-z, A-Z), mga bilang (0-9), mga salungguhit (_) at mga tuldok (.).',
        'config-invalid-db-name' => 'Hindi tanggap na pangalan ng kalipunan ng dato na "$1".
-Gumamit lamang ng mga titik ng ASCII (a-z, A-Z), mga bilang (0-9), mga salangguhit (_) at mga gitling (-).',
+Gumamit lamang ng mga titik ng ASCII (a-z, A-Z), mga bilang (0-9), mga salungguhit (_) at mga gitling (-).',
        'config-invalid-db-prefix' => 'Hindi tanggap na unlapi ng kalipunan ng dato na "$1".
-Gamitin lamang ang mga titik na ASCII (a-z, A-Z), mga bilang (0-9), mga salangguhit (_) at mga gitling (-).',
+Gamitin lamang ang mga titik na ASCII (a-z, A-Z), mga bilang (0-9), mga salungguhit (_) at mga gitling (-).',
        'config-connection-error' => '$1.
 
 Suriin ang punong-abala, pangalan ng tagagamit at hudyat na nasa ibaba at subukan ulit.',
+       'config-invalid-schema' => 'Hindi katanggap-tanggap na panukala para sa "$1" ng MediaWiki.
+Gumamit lamang ng mga titik ng ASCII (a-z, A-Z), mga bilang (0-9), at mga salungguhit (_).',
+       'config-db-sys-create-oracle' => 'Ang panluklok ay tumatangkilik lamang sa paggamit ng isang akawnt ng SYSDBA para sa paglikha ng isang bagong akawnt.',
+       'config-db-sys-user-exists-oracle' => 'Umiiral na ang akawnt ng tagagamit na "$1". Magagamit lamang ang SYSDBA para sa paglikha ng isang bagong akawnt!',
        'config-postgres-old' => 'Kailangan ang PostgreSQL $1 o mas bago, mayroon kang $2.',
+       'config-sqlite-name-help' => 'Pumili ng isang pangalan na pangkilala na wiki mo.
+Huwag gumamit ng mga puwang o mga gitling.
+Gagamitin ito para sa pangalan ng talaksan ng dato ng SQLite.',
+       'config-sqlite-parent-unwritable-group' => 'Hindi malikha ang direktoryo ng dato na <code><nowiki>$1</nowiki></code>, sapagkat ang magulang na direktoryong <code><nowiki>$2</nowiki></code> ay hindi masulatan ng tagapaghain ng kasaputan.
+
+Napag-alaman ng tagapagluklok kung sinong tagagamit ang kinatatakbuhan ng iyong tagapaghain ng kasaputan.
+Gawing nasusulatan nito ang <code><nowiki>$3</nowiki></code> ng direktoryo upang makapagpatuloy.
+Ito ang gawin sa ibabaw ng isang sistema ng Unix/Linux:
+
+<pre>cd $2
+mkdir $3
+chgrp $4 $3
+chmod g+w $3</pre>',
+       'config-sqlite-parent-unwritable-nogroup' => 'Hindi malikha ang direktoryo ng dato na <code><nowiki>$1</nowiki></code>, sapagkat ang magulang na direktoryong <code><nowiki>$2</nowiki></code> ay hindi masulatan ng tagapaghain ng kasaputan.
+
+Hindi malaman ng tagapagluklok kung sinong tagagamit ang kinatatakbuhan ng iyong tagapaghain ng kasaputan.
+Gawing nasusulatan nito (at ng mga iba pa) ang <code><nowiki>$3</nowiki></code> ng direktoryo upang makapagpatuloy.
+Ito ang gawin sa ibabaw ng isang sistema ng Unix/Linux:
+
+<pre>cd $2
+mkdir $3
+chmod a+w $3</pre>',
        'config-sqlite-mkdir-error' => 'Kamalian sa paglikha ng direktoryo ng datong "$1".
 Suriin ang kinalalagyan at subukang muli.',
        'config-sqlite-dir-unwritable' => 'Hindi nagawang magsulat sa direktoryong "$1".
@@ -17247,6 +17658,14 @@ Surrin ang direktoryo ng dato at pangalan ng kalipunan ng datong nasa ibaba at s
        'config-sqlite-readonly' => 'Ang talaksang <code>$1</code> ay hindi maisusulat.',
        'config-sqlite-cant-create-db' => 'Hindi malikha ang talaksang <code>$1</code> ng kalipunan ng dato.',
        'config-sqlite-fts3-downgrade' => 'Nawawala ang suportang FTS3 ng PHP, ibinababa ang uri ng mga talahanayan',
+       'config-can-upgrade' => "Mayroong mga talahanayan ng MediaWiki sa loob ng kalipunan ng datong ito.
+Upang maitaas ang uri ng mga ito upang maging MediaWiki na $1, pindutin ang '''Magpatuloy'''.",
+       'config-upgrade-done' => "Buo na ang pagtataas ng uri.
+
+Maaari mo na ngayong [$1 gamitin ang iyong wiki].
+
+Kung nais mong muling likhain ang iyong talaksang <code>LocalSettings.php</code>, lagitikin ang pindutang nasa ibaba.
+'''Hindi minumungkahi''' ito maliban na lamang kung nagkakaroon ka ng mga suliranin sa piling ng wiki mo.",
        'config-upgrade-done-no-regenerate' => 'Buo na ang pagsasapanahon.
 
 Maaari ka na ngayong [$1 magsimula sa paggamit ng wiki mo].',
@@ -17257,12 +17676,30 @@ Maaari ka na ngayong [$1 magsimula sa paggamit ng wiki mo].',
        'config-db-web-help' => 'Piliin ang pangalan ng tagagamit at hudyat na gagamitin ng tagapaghain ng web upang umugnay sa tagapaghain ng kalipunan ng dato, habang nasa pangkaraniwang pagtakbo ng wiki.',
        'config-db-web-account-same' => 'Gamitin ang gayun din akawnt katulad ng sa pagluluklok',
        'config-db-web-create' => 'Likhain ang akawnt kung hindi pa ito umiiral',
+       'config-db-web-no-create-privs' => 'Ang tinukoy mong akawnt na iluluklok ay walang sapat na mga pribilehiyo upang makalikha ng isang akawnt.
+Ang akawnt na tutukuyin mo rito ay umiiral na dapat.',
        'config-mysql-engine' => 'Makinang imbakan:',
        'config-mysql-innodb' => 'InnoDB',
        'config-mysql-myisam' => 'MyISAM',
+       'config-mysql-myisam-dep' => "'''Babala''': Pinili mo ang MyISAM bilang makinang imbakan para sa MySQL, na hindi iminumungkahi para gamitin sa MediaWiki, sapagkat:
+* bahagya lamang itong sumusuporta ng pagkakasundu-sundo dahil sa pagkakandado ng talahanayan
+* mas malaki ang pagkakataon na kapitan ng sira kaysa sa ibang mga makina
+* ang himpilang kodigo ng MediaWiki ay hindi palaging humahawak ng MyISAM ayon sa nararapat
+
+Kung ang iyong nakaluklok na MySQL ay sumusuporta ng InnoDB, higit na iminumungkahi na piliin mo iyon sa halip.
+Kung ang iyong nakaluklok na MySQL ay hindi sumusuporta ng InnoDB, marahil ay panahon na para sa isang pagtataas ng uri.",
+       'config-mysql-engine-help' => "Ang '''InnoDB''' ay ang halos palaging pinaka mainam na mapipili, dahil mayroon itong mabuting suporta ng pagkakasundu-sundo.
+
+Maaaring mas mabilis ang '''MyISAM''' sa mga pagluluklok na pang-isahang tagagamit o mababasa lamang.
+May gawi ang mga kalipunan ng dato ng MyISAM na masira nang mas madalas kaysa sa mga kalipunan ng dato ng InnoDB.",
        'config-mysql-charset' => 'Pangkat ng panitik ng kalipunan ng dato:',
        'config-mysql-binary' => 'Binaryo',
        'config-mysql-utf8' => 'UTF-8',
+       'config-mysql-charset-help' => "Sa '''gawi na binaryo''', iniimbak ng MediaWiki ang tekstong UTF-8 sa kalipunan ng dato sa loob ng mga hanay na binaryo.
+Mas kapaki-pakinabang ito kaysa sa gawi na UTF-8 ng MySQL, at nagpapahintulot sa iyo upang magamit ang buong kasaklawan ng mga panitik ng Unikodigo.
+
+Sa ''gawi na UTF-8''', malalaman ng MySQL kung sa anong pangkat ng panitik nakapaloob ang iyong dato, at angkop na makakapagharap at makapapagpalit nito, subalit hindi ka nito papayagan na mag-imbak ng mga panitik na nasa itaas ng [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane] o Saligang Tapyas na Pangmaramihang Wika.",
+       'config-ibm_db2-low-db-pagesize' => "Ang kalipunan mo ng dato na DB2 ay mayroong isang likas na nakatakdang puwang ng talahanayan na mayroong hindi sapat na sukat ng pahina. Ang sukat ng pahina ay dapat na maging '''32K''' o mas mataas.",
        'config-site-name' => 'Pangalan ng wiki:',
        'config-site-name-help' => "Lilitaw ito sa bareta ng pamagat ng pantingin-tingin at sa samu't saring ibang mga lugar.",
        'config-site-name-blank' => 'Magpasok ng isang pangalan ng sityo.',
@@ -17271,10 +17708,19 @@ Maaari ka na ngayong [$1 magsimula sa paggamit ng wiki mo].',
        'config-ns-site-name' => 'Katulad ng sa pangalan ng wiki: $1',
        'config-ns-other' => 'Iba pa (tukuyin)',
        'config-ns-other-default' => 'Wiki Ko',
+       'config-project-namespace-help' => 'Bilang pagsunod sa halimbawa ng Wikipedia, maraming mga wiki ang nagpapanatili ng kanilang mga pahina ng patakaran na nakahiwalay magmula sa kanilang mga pahina ng nilalaman, na nasa loob ng isang "\'\'\'puwang na pampangalan ng proyekto\'\'\'".
+Ang lahat ng mga pamagat ng pahina na nasa loob ng puwang ng pangalang ito ay nagsisimula na mayroong isang partikular na unlapi, na maaari mong tukuyin dito.
+Sa nakaugalian, ang unlaping ito ay hinango mula sa pangalan ng wiki, subalit hindi ito maaaring maglaman ng mga panitik ng palabantasan na katulad ng "#" o ":".',
+       'config-ns-invalid' => 'Ang tinukoy na puwang ng pangalan na "<nowiki>$1</nowiki>" ay hindi katanggap-tanggap.
+Tumukoy ng isang ibang puwang ng pangalan ng proyekto.',
+       'config-ns-conflict' => 'Ang tinukoy na puwang ng pangalan na "<nowiki>$1</nowiki>" ay sumasalungat sa isang likas na nakatakdang puwang ng pangalan ng MediaWiki.
+Tumukoy ng isang ibang puwang ng pangalan ng proyekto.',
        'config-admin-box' => 'Akawnt ng tagapangasiwa',
        'config-admin-name' => 'Pangalan mo:',
        'config-admin-password' => 'Hudyat:',
        'config-admin-password-confirm' => 'Hudyat uli:',
+       'config-admin-help' => 'Ipasok dito ang mas ninanais mong pangalan ng tagagamit, bilang halimbawa na ang "Joe Bloggs".
+Ito ang pangalang gagamitin mo upang lumagdang papasok sa wiki.',
        'config-admin-name-blank' => 'Magpasok ng isang pangalan ng tagagamit na tagapangasiwa.',
        'config-admin-name-invalid' => 'Ang tinukoy na pangalan ng tagagamit na "<nowiki>$1</nowiki>" ay hindi tanggap.
 Tumukoy ng ibang pangalan ng tagagamit.',
@@ -17282,10 +17728,13 @@ Tumukoy ng ibang pangalan ng tagagamit.',
        'config-admin-password-same' => 'Ang hudyat ay hindi dapat na katulad ng pangalan ng tagagamit.',
        'config-admin-password-mismatch' => 'Hindi magkatugma ang ipinasok mong dalawang mga hudyat.',
        'config-admin-email' => 'Tirahan ng e-liham:',
+       'config-admin-email-help' => 'Magpasok dito ng isang tirahan ng e-liham upang mapahintulutan kang makatanggap ng e-liham mula sa iba pang mga tagagamit sa ibabaw ng wiki, itakdang muli ang hudyat mo, at mapabatiran ng mga pagbabago sa mga pahinang nasa ibabaw ng iyong tala ng mga binabantayan. Maiiwanan mo na walang laman ang hanay na ito.',
        'config-admin-error-user' => 'Panloob na kamalian kapag nililikha ang isang tagapangasiwa na may pangalang "<nowiki>$1</nowiki>".',
        'config-admin-error-password' => 'Panloob na kamalian kapag nagtatakda ng isang hudyat na para sa tagapangasiwang "<nowiki>$1</nowiki>": <pre>$2</pre>',
        'config-admin-error-bademail' => 'Nagpasok ka ng isang hindi katanggap-tanggap na tirahan ng e-liham.',
        'config-subscribe' => 'Tumanggap mula sa [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce talaan ng mga pinadadalhan ng mga nilalabas na mga pabatid].',
+       'config-subscribe-help' => 'Isang itong tala ng pagliliham na mababa ang dami na ginagamit para sa pagpapakawala ng mga pahayag, kabilang na ang mahahalagang mga pahayag na pangkatiwasayan. Dapat kang magpasipi nito at isapanahon ang iyong nakaluklok na MediaWiki kapag lumalabas ang bagong mga bersiyon.',
+       'config-subscribe-noemail' => 'Sinubukan mong magpasipi sa tala ng nililihaman ng pagpapakawala ng mga pahayag na hindi nagbibigay ng isang tirahan ng -eliham. Paki magbigay ng isang tirahan ng e-liham kung nais mong magpasipi sa listahan ng pagliliham.',
        'config-almost-done' => 'Halos tapos ka na!
 Maaari mo ngayong laktawan ang natitira pang pag-aayos at iluklok na ang wiki ngayon.',
        'config-optional-continue' => 'Magtanong sa akin ng marami pang mga tanong.',
@@ -17295,14 +17744,41 @@ Maaari mo ngayong laktawan ang natitira pang pag-aayos at iluklok na ang wiki ng
        'config-profile-no-anon' => 'Kailangan ang paglikha ng akawnt',
        'config-profile-fishbowl' => 'Pinahintulutang mga patnugot lamang',
        'config-profile-private' => 'Pribadong wiki',
+       'config-profile-help' => "Pinaka mahusay ang pagtakbo ng mga Wiki kapag pinapahintulutan mo ang pinaka maraming mga tao na makapamatnugot ng mga ito hanggang sa maaari.
+Sa loob ng MediaWiki, maginhawang masusuring muli ang kamakailang mga pagbabago, at mapanauli sa dati ang anumang nasira na nagawa ng isang walang muwang o may masamang hangarin na mga tagagamit.
+
+Subalit, marami ang nakatagpo na nagagamit ang MediaWiki sa loob ng malawak na sari-saring mga gampanin, at kung minsan ay hindi madaling makumbinsi ang lahat ng mga tao hinggil sa kapakinabangan ng kaparaanan ng wiki.
+Kung kaya't nasa iyo ang pagpili.
+
+Ang isang '''{{int:config-profile-wiki}}''' ay nagpapahintulot sa sinuman upang makapagbago, na hindi kailangan ang paglagdang papasok.
+Ang isang wiki na mayroong '''{{int:config-profile-no-anon}}''' ay nagbibigay ng karagdagang pananagutan, subalit maaaring pumigil sa nagkataon lamang na mga tagapag-ambag.
+
+Ang tagpo na '''{{int:config-profile-fishbowl}}''' ay nagpapahintulot lamang sa pinayagang mga tagagamit na makatingin ng mga pahina, na kapiling ang pangkat na pinayagang  makapamatnugot.
+Ang isang '''{{int:config-profile-private}}''' ay nagpapahintulot lamang sa pinayagang mga tagagamit na makatingin ng mga pahina, na kapiling ang pangkat na pinayagang makapamatnugot.
+
+Ang mas masasalimuot na mga kaayusan ng mga karapatan ng tagagamit ay makukuha pagkaraan ng pagluluklok, tingnan ang [//www.mediawiki.org/wiki/Manual:User_rights may kaugnayang kinamay na lahok].",
        'config-license' => 'Karapatang-ari at lisensiya:',
        'config-license-none' => 'Walang talababa ng lisensiya',
        'config-license-cc-by-sa' => 'Malikhaing Pangkaraniwang Pagtukoy Pamamahaging Magkatulad',
+       'config-license-cc-by' => 'Atribusyon ng Creative Commons',
        'config-license-cc-by-nc-sa' => 'Malikhaing Pangkaraniwang Pagtukoy Hindi-Pangkalakal Pamamahaging Magkatulad',
+       'config-license-cc-0' => 'Sero na Creative Commons (Nasasakop ng Madla)',
+       'config-license-gfdl' => 'Lisensiyang 1.3 ng Malayang Dokumentasyon ng GNU o mas lalong huli',
        'config-license-pd' => 'Nasasakupan ng Madla',
        'config-license-cc-choose' => 'Pumili ng isang pasadyang Lisensiya ng Malikhaing mga Pangkaraniwan',
+       'config-license-help' => "Maraming mga pangmadlang wiki ang naglalagay ng lahat ng mga ambag sa ilalim ng [http://freedomdefined.org/Definition lisensiyang malaya]. 
+Nakakatulong ito sa paglikha ng isang diwa ng pagmamay-ari ng pamayanan at nakapanghihikayat ng ambag na pangmahabang panahon.
+Sa pangkalahatan, hindi kailangan ang isang wiking pribado o pangsamahan.
+
+Kung nais mong magamit ang teksto magmula sa Wikipedia, at nais mong makatanggap ang Wikipedia ng tekstong kinopya magmula sa wiki mo, dapat mong piliin ang '''Creative Commons Attribution Share Alike''' (Pagbanggit na Pinagsasaluhang Magkatulad ng Malikhaing Pangkaraniwan).
+
+Dating ginamit ng Wikipedia ang Lisensiya ng Kasulatang Malaya ng GNU (GNU Free Documentation License o GFDL).
+Isang katanggap-tanggap na lisensiya ang GFDL, subalit mahirap itong maunawaan.
+Mahirap din ang paggamit na muli ng nilalaman na nasa ilalim ng GFDL.",
        'config-email-settings' => 'Mga katakdaan ng e-liham',
        'config-enable-email' => 'Paganahin ang palabas na e-liham',
+       'config-enable-email-help' => 'Kung nais mong gumana ang e-liham, ang mga katakdaan ng liham ng [http://www.php.net/manual/en/mail.configuration.php PHP] ay kailangang maging wasto ang pagkakaayos.
+Kung ayaw mo nang anumang mga katampukan ng e-liham, maaari mong huwag paganahin ang mga ito rito.',
        'config-email-user' => 'Paganahin ang tagagamit-sa-tagagamit na e-liham',
        'config-email-user-help' => 'Payagan ang lahat ng mga tagagamit na magpadala ng e-liham sa bawat isa kapag pinagana nila ito sa kanilang mga nais.',
        'config-email-usertalk' => 'Paganahin ang pabatid na pampahina ng usapan ng tagagamit',
@@ -17310,31 +17786,67 @@ Maaari mo ngayong laktawan ang natitira pang pag-aayos at iluklok na ang wiki ng
        'config-email-watchlist' => 'Paganahin ang pabatid ng talaan ng bantayan',
        'config-email-watchlist-help' => 'Payagan ang mga tagagamit na tumanggap ng mga pabatid tungkol sa kanilang binabantayang mga pahina kapag pinagana nila ito sa kanilang mga nais.',
        'config-email-auth' => 'Paganahin ang pagpapatunay ng e-liham',
+       'config-email-auth-help' => "Kapag pinagagana ang mapipiling ito, dapat tiyakin ng mga tagagamit ang kanilang tirahan ng e-liham na ginagamit ang isang kawing na ipinadala sa kanila tuwing itinatakda o binabago nila ito.
+Tanging napatunayang mga tirahan ng e-liham lamang ang makakatanggap ng mga e-liham magmula sa ibang mga tagagamit o makakapagbago ng mga e-liham ng pagpapabatid.
+'''Iminumungkahi''' ang mapipiling katakdaan na ito para sa mga wiking pangmadla dahil sa maaaring mangyaring pagmamalabis ng mga katampukan ng e-liham.",
        'config-email-sender' => 'Pabalik na tirahan ng e-liham:',
+       'config-email-sender-help' => 'Ipasok ang tirahan ng e-liham na gagamitin bilang tirahang pagsasaulian ng e-liham na papalabas.
+Dito ang kung saan ipapadala ang mga pagtalbog.
+Maraming mga tagapaghain ng liham ang nangangailangan ng kahit na bahagi lamang ng pangalan ng nasasakupan upang maging katanggap-tanggap.',
        'config-upload-settings' => 'Mga pagkakarga ng mga larawan at talaksan',
        'config-upload-enable' => 'Paganahin ang pagkakarga ng talaksan',
+       'config-upload-help' => 'Ang paitaas na mga pagkakarga ng mga talaksan ay maaaring makapaglantad ng iyong tagapaghain sa mga panganib na pangkatiwasayan.
+Para sa mas marami pang kabatiran, basahin ang [//www.mediawiki.org/wiki/Manual:Security seksiyon ng katiwasayan] sa loob ng gabay.
+
+Upang mapagana ang paitaas na mga pagkakarga ng talaksan, baguhin ang gawi roon sa subdirektoryo ng <code>mga imahe</code> sa ilalim ng ugat na direktoryo ng MediaWiki upang ang tagapaghain ng kasaputan ay makapagsulat dito.
+Pagkaraan ay paganahin ang pipiliing ito.',
        'config-upload-deleted' => 'Direktoryo para sa binurang mga talaksan:',
        'config-upload-deleted-help' => 'Pumili ng isang direktoryong pagsusupnayan ng naburang mga talaksan.
 Ideyal na dapat itong  hindi mapupuntahan mula sa web.',
        'config-logo' => 'URL ng logo:',
+       'config-logo-help' => 'Ang likas na nakatakdang pabalat ng MediaWiki ay nagsasama ng puwang para sa isang logong 135x160 ang piksel na nasa itaas ng menu ng panggilid na bareta.
+Magkargang papaitaas ng isang imahe na mayroong naaangkop na sukat, at ipasok dito ang URL.
+
+Kung ayaw mo ng isang logo, iwanang walang laman ang kahong ito.',
        'config-instantcommons' => 'Paganahin ang Mga Pangkaraniwang Biglaan',
+       'config-instantcommons-help' => 'Ang [//www.mediawiki.org/wiki/InstantCommons Instant Commons] ay isang tampok na nagpapahintulot sa mga wiki upang gumamit ng mga imahe, mga tunog at iba pang mga midyang matatagpuan sa pook ng [//commons.wikimedia.org/ Wikimedia Commons].
+Upang magawa ito, nangangailangan ang MediaWiki ng pagka nakakapunta sa Internet.
+
+Para sa mas marami pang kabatiran hinggil sa tampok na ito, kabilang na ang mga tagubilin sa kung paano ito itakda para sa mga wiki na bukod pa kaysa sa Wikimedia Commons, sumangguni sa [//mediawiki.org/wiki/Manual:$wgForeignFileRepos gabay].',
        'config-cc-error' => 'Hindi nagbigay ng resulta ang pampili ng lisensiya ng Malikhaing Pangkaraniwan.
 Ipasok na kinakamay ang pangalan ng lisensiya.',
        'config-cc-again' => 'Pumili uli...',
        'config-cc-not-chosen' => 'Piliin kung anong lisensiya ng Malikhaing mga Pangkaraniwan ang nais mo at pindutin ang "magpatuloy".',
        'config-advanced-settings' => 'Mas masulong na pagkakaayos',
        'config-cache-options' => 'Mga katakdaan para sa pagtatago ng bagay:',
+       'config-cache-help' => 'Ang pagtatago ng bagay ay ginagamit upang mapainam ang tulin ng MediaWiki sa pamamagitan ng pagtatago ng madalas gamiting dato.
+Ang mga pook na bahagya hanggang malalaki ang sukat ay labis na hinihikayat na paganahin ito, at ang mga pook na maliliit ay makakakita rin ng mga kapakinabangan.',
+       'config-cache-none' => 'Walang pagtatago (tinanggal ang katungkulan, subalit maaaring maapektuhan ang tulin sa mas malalaking mga pook ng wiki)',
+       'config-cache-accel' => 'Pagtatago ng bagay ng PHP (APC, XCache o WinCache)',
+       'config-cache-memcached' => 'Gamitin ang Pagtatago sa Alaala (Memcached) (nangangailangan ng karagdagang kaayusan ng pagkakahanda at pagsasaayos)',
        'config-memcached-servers' => 'Mga tagapaghaing itinago sa alaala:',
+       'config-memcached-help' => 'Listahan ng mga tirahan ng IP na gagamitin para sa Memcached o Itinagong Alaala.
+Dapat na tukuyin na isa sa bawat guhit at tukuyin ang daungang gagamitin. Bilang halimbawa:
+ 127.0.0.1:11211
+ 192.168.1.25:1234',
        'config-memcache-needservers' => 'Pinili mo ang Memcached bilang uri mo ng taguan ngunit hindi tumukoy ng anumang mga tagapaghain.',
        'config-memcache-badip' => 'Nagpasok ka ng isang hindi tanggap na tirahan ng IP para sa Memcached: $1.',
        'config-memcache-noport' => 'Hindi ka tumukoy ng isang daungan na gagamitin para sa tagapaghain ng Memcached: $1.
 Kung hindi mo alam ang daungan, ang likas na nakatakda ay 11211.',
        'config-memcache-badport' => 'Ang bilang ng daungan ng Memcached ay dapat na nasa pagitan ng $1 at $2.',
        'config-extensions' => 'Mga dugtong',
+       'config-extensions-help' => 'Ang mga dugtong na nakalista sa ibabaw ay napansin sa loob ng iyong direktoryo ng <code>./extensions</code>.
+
+Maaaring mangailangan ang mga ito ng karagdagang kaayusan, subalit mapapagana mo ngayon ang mga ito',
+       'config-install-alreadydone' => "'''Babala:''' Tila nailuklok mo na ang MediaWiki at tinatangka mong iluklok ito ulit.
+Paki magpatuloy sa susunod na pahina.",
+       'config-install-begin' => 'Sa pamamagitan ng pagpindot sa "{{int:config-continue}}", sisimulan mo ang pagluluklok ng MediaWiki.
+Kung nais mo paring gumawa ng mga pagbabago, paki pindutin ang bumalik.',
        'config-install-step-done' => 'nagawa na',
        'config-install-step-failed' => 'nabigo',
        'config-install-extensions' => 'Isinasama ang mga karugtong',
        'config-install-database' => 'Inihahanda ang kalipunan ng dato',
+       'config-install-schema' => 'Nililikha ang panukala',
        'config-install-pg-schema-not-exist' => 'Hindi umiiral ang panukala ng PostgreSQL.',
        'config-install-pg-schema-failed' => 'Nabigo ang paglikha ng mga talahanayan.
 Tiyakin na ang tagagamit na "$1" ay maaaring makasulat sa balangkas na "$2".',
@@ -17342,11 +17854,17 @@ Tiyakin na ang tagagamit na "$1" ay maaaring makasulat sa balangkas na "$2".',
        'config-install-pg-plpgsql' => 'Sumusuri ng wikang PL/pgSQL',
        'config-pg-no-plpgsql' => 'Kailangan mong magtalaga ng wikang PL/pgSQL sa loob ng kalipunan ng datong $1',
        'config-pg-no-create-privs' => 'Ang tinukoy mong akawnt para sa pagtatalaga ay walang sapat na mga pribilehiyo upang makalikha ng isang akawnt.',
+       'config-pg-not-in-role' => 'Umiiral na ang akawnt na tinukoy mo para sa tagagamit ng sangkasaputan.
+Ang tinukoy mong akawnt para sa pagluluklok ay hindi isang tagagamit na super at hindi isang kasapi sa gampanin ng tagagamit ng sangkasaputan, kung kaya\'t hindi nito nagawang makalikha ng mga bagay na pag-aari ng tagagamit ng sangkasaputan.
+
+Sa kasalukuyan, nangangailangan ang MediaWiki na ang mga talahanayan ay maging pag-aari ng tagagamit ng sangkasaputan. Paki tumukoy ng isa pang pangalan ng akawnt na pangsangkasaputan, o pindutin ang "bumalik" at tumukoy ng isang tagagamit na may kaangkupang pribilehiyo ng pagluluklok.',
        'config-install-user' => 'Nililikha ang tagagamit ng kalipunan ng dato',
        'config-install-user-alreadyexists' => 'Umiiral na ang tagagamit na "$1"',
        'config-install-user-create-failed' => 'Nabigo ang paglikha ng tagagamit na "$1": $2',
        'config-install-user-grant-failed' => 'Nabigo ang pagbibigay ng pahintulot sa tagagamit na "$1": $2',
        'config-install-user-missing' => 'Hindi umiiral ang tinukoy na tagagamit na si "$1".',
+       'config-install-user-missing-create' => 'Hindi umiiral ang tinukoy na tagagamit na si "$1".
+Paki lagitikin ang nasa ibabang kahong natsetsekan na "likhain ang akawnt" kung nais mong likhain ito.',
        'config-install-tables' => 'Nililikha ang mga talahanayan',
        'config-install-tables-exist' => "'''Babala''': Tila umiiral na ang mga talahanayan ng MediaWiki.
 Nilalaktawan ang paglikha.",
@@ -17357,6 +17875,7 @@ Nilalaktawan ang paglikha.",
 Nilalaktawan ang likas na nakatakdang talaan.",
        'config-install-stats' => 'Sinisimulan ang estadistika',
        'config-install-keys' => 'Ginagawa ang lihim na mga susi',
+       'config-insecure-keys' => "'''Babala:''' Nalikha ang {{PLURAL:$2|A secure key|ligtas na mga susi}} ($1) habang ang pagluluklok {{PLURAL:$2|ay|ay}} hindi pa lubos na ligtas. Isaalang-alang ang kinakamay na pagbago {{PLURAL:$2|nito|ng mga ito}}.",
        'config-install-sysop' => 'Nililikha ang akawnt ng tagagamit na tagapangasiwa',
        'config-install-subscribe-fail' => 'Hindi nagawang magpasipi mula sa mediawiki-announce: $1',
        'config-install-subscribe-notpossible' => 'Hindi nakalagak ang cURL at hindi makukuha ang allow_url_fopen',
@@ -17380,6 +17899,7 @@ $3
 Kapag nagawa na iyan, maaari ka nang '''[$2 pumasok sa wiki mo]'''.",
        'config-download-localsettings' => 'Ikargang paibaba ang LocalSettings.php',
        'config-help' => 'saklolo',
+       'config-nofile' => 'Hindi matagpuan ang talaksang "$1". Binura na ba ito?',
        'mainpagetext' => "'''Matagumpay na ininstala ang MediaWiki.'''",
        'mainpagedocfooter' => "Silipin ang [//meta.wikimedia.org/wiki/Help:Contents Patnubay sa Tagagamit] (''\"User's Guide\"'') para sa kaalaman sa paggamit ng wiking ''software''.
 
@@ -17390,7 +17910,15 @@ Kapag nagawa na iyan, maaari ka nang '''[$2 pumasok sa wiki mo]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Tala ng mga pinadadalhan ng liham ng MediaWiki]",
 );
 
-/** Turkish (Türkçe) */
+/** толышә зывон (толышә зывон)
+ * @author Erdemaslancan
+ */
+$messages['tly'] = array(
+       'config-page-options' => 'Кукон',
+);
+
+/** Turkish (Türkçe)
+ */
 $messages['tr'] = array(
        'mainpagetext' => "'''MediaWiki başarı ile kuruldu.'''",
        'mainpagedocfooter' => 'Viki yazılımının kullanımı hakkında bilgi almak için [//meta.wikimedia.org/wiki/Help:Contents kullanıcı rehberine] bakınız.
@@ -17427,7 +17955,7 @@ $messages['tt-latn'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'nıñ yaña versiäläre turında xäbärlär yazdırıp alu].",
 );
 
-/** Udmurt (Удмурт)
+/** Udmurt (удмурт)
  * @author Andrewboltachev
  */
 $messages['udm'] = array(
@@ -17497,7 +18025,7 @@ $1',
        'config-sidebar' => '* [//www.mediawiki.org Сайт MediaWiki]
 * [//www.mediawiki.org/wiki/Help:Contents/uk Керівництво користувача]
 * [//www.mediawiki.org/wiki/Manual:Contents/uk Керівництво адміністратора]
-* [//www.mediawiki.org/wiki/Manual:FAQ/uk FAQ]',
+* [//www.mediawiki.org/wiki/Manual:FAQ/uk FAQ]', # Fuzzy
        'config-env-good' => 'Перевірку середовища успішно завершено.
 Ви можете встановити MediaWiki.',
        'config-env-bad' => 'Було проведено перевірку середовища. Ви не можете встановити MediaWiki.',
@@ -17587,7 +18115,8 @@ $messages['ur'] = array(
        'mainpagetext' => "'''میڈیاوکی کو کامیابی سے چالو کردیا گیا ہے۔.'''",
 );
 
-/** Uzbek (Oʻzbekcha) */
+/** Uzbek (oʻzbekcha)
+ */
 $messages['uz'] = array(
        'mainpagetext' => "'''MediaWiki muvaffaqiyatli o'rnatildi.'''",
        'mainpagedocfooter' => "Wiki dasturini ishlatish haqida ma'lumot olish uchun  [//meta.wikimedia.org/wiki/Help:Contents Foydalanuvchi qo'llanmasi] sahifasiga murojaat qiling.
@@ -17615,7 +18144,7 @@ I seguenti cołegamenti i xé en łengua inglese:
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list anunsi MediaWiki]",
 );
 
-/** Veps (Vepsän kel’)
+/** Veps (vepsän kel’)
  * @author Игорь Бродский
  */
 $messages['vep'] = array(
@@ -17650,7 +18179,8 @@ $messages['vi'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Danh sách gửi thư về việc phát hành MediaWiki]',
 );
 
-/** Volapük (Volapük) */
+/** Volapük (Volapük)
+ */
 $messages['vo'] = array(
        'mainpagetext' => "'''El MediaWiki pestiton benosekiko.'''",
        'mainpagedocfooter' => 'Konsultolös [//meta.wikimedia.org/wiki/Help:Contents Gebanageidian] ad tuvön nünis dö geb programema vükik.
@@ -17662,7 +18192,8 @@ $messages['vo'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Potalised tefü fomams nulik ela MediaWiki]',
 );
 
-/** Võro (Võro) */
+/** Võro (Võro)
+ */
 $messages['vro'] = array(
        'mainpagetext' => "'''MediaWiki tarkvara paika säet.'''",
        'mainpagedocfooter' => 'Vikitarkvara pruukmisõ kotsilõ loeq mano:
@@ -17692,7 +18223,8 @@ $messages['war'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Wolof (Wolof) */
+/** Wolof (Wolof)
+ */
 $messages['wo'] = array(
        'mainpagetext' => "'''Campug MediaWiki gi sotti na . '''",
        'mainpagedocfooter' => 'Saytul [//meta.wikimedia.org/wiki/Ndimbal:Ndefu Gindikaayu jëfandikukat bi] ngir yeneeni xibaar ci jëfandiku gu tëriin gi.
@@ -17717,7 +18249,7 @@ $messages['wuu'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 发布邮件列表]',
 );
 
-/** Kalmyk (Хальмг)
+/** Kalmyk (хальмг)
  * @author Huuchin
  */
 $messages['xal'] = array(
@@ -17765,7 +18297,8 @@ $messages['yo'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Cantonese (粵語) */
+/** Cantonese (粵語)
+ */
 $messages['yue'] = array(
        'mainpagetext' => "'''MediaWiki已經裝好。'''",
        'mainpagedocfooter' => '參閱[//meta.wikimedia.org/wiki/Help:Contents 用戶指引](英),裏面有資料講點用wiki軟件。
@@ -17776,7 +18309,8 @@ $messages['yue'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件名單](英)',
 );
 
-/** Zeeuws (Zeêuws) */
+/** Zeeuws (Zeêuws)
+ */
 $messages['zea'] = array(
        'mainpagetext' => "'''De installaotie van MediaWiki is geslaegd.'''",
        'mainpagedocfooter' => "Raedpleeg de [//meta.wikimedia.org/wiki/ZEA_Ulpe:Inhoudsopgaeve andleidieng] voe informatie over 't gebruuk van de wikisoftware.
@@ -17788,7 +18322,7 @@ $messages['zea'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailienglieste voe ankondigiengen van nieuwe versies]",
 );
 
-/** Simplified Chinese (‪中文(简体)‬)
+/** Simplified Chinese (中文(简体)‎)
  * @author Hydra
  * @author Hzy980512
  * @author Liangent
@@ -18230,7 +18764,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]',
 );
 
-/** Traditional Chinese (‪中文(繁體)‬)
+/** Traditional Chinese (中文(繁體)‎)
  * @author Hzy980512
  * @author Liangent
  * @author Mark85296341
@@ -18307,6 +18841,7 @@ $1',
        'config-no-db' => '找不到合適的數據庫驅動!您需要為PHP安裝數據庫驅動。目前支持以下數據庫:$1。
 
 如果您正在使用共享主機,請向您的主機提供商申請安裝合適的數據庫驅動。如果您通過自行編譯安裝的PHP,請對其進行重新配置以啟用數據庫客戶端,例如使用<code>./configure --with-mysql</code>。如果您通過Debian或Ubuntu包安裝的PHP,您還需要安裝php5-mysql模塊。',
+       'config-outdated-sqlite' => "'''警告''':您已安裝SQLite $1,但是它的版本低於最低要求版本$2。因此您無法選擇SQLite。",
        'config-no-fts3' => "'''警告''':已編譯的SQLite不包含[//sqlite.org/fts3.html FTS3模塊],後台搜索功能將不可用。",
        'config-register-globals' => "'''警告:PHP的<code>[http://php.net/register_globals register_globals]</code>選項被啟用。請盡量禁用該功能,'''雖然不會影響MediaWiki的運行,但您的服務器會被暴露給潛在的安全漏洞。",
        'config-magic-quotes-runtime' => "'''致命錯誤:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]被啟用!'''
@@ -18323,11 +18858,13 @@ $1',
        'config-pcre-no-utf8' => "'''致命錯誤''':PHP的PCRE模塊在編譯時可能沒有包含PCRE_UTF8支持。MediaWiki需要UTF-8支持才能正常工作。",
        'config-memory-raised' => 'PHP的內存使用上限<code>memory_limit</code>為$1,自動提升到$2。',
        'config-memory-bad' => "'''警告:'''PHP的內存使用上限<code>memory_limit</code>為$1。該設定可能過低,並導致安裝失敗!",
+       'config-ctype' => "'''毀滅性錯誤''':PHP必須有[http://www.php.net/manual/en/ctype.installation.php Ctype 擴展]來支持編譯。",
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache]已安裝',
        'config-apc' => '[http://www.php.net/apc APC]已安裝',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache]已安裝',
        'config-no-cache' => "'''警告:'''找不到[http://www.php.net/apc APC]、[http://xcache.lighttpd.net/ XCache]或[http://www.iis.net/download/WinCacheForPhp WinCache],無法啟用對象緩存。
 Object caching is not enabled.",
+       'config-mod-security' => "'''警告''':您的服務器已啟動[http://modsecurity.org/ mod_security]。若其配置錯誤, 會導致MediaWiki和其他軟件的錯誤並允許用戶任意發布內容。如果您遇到任何錯誤,請查閱[http://modsecurity.org/documentation/ mod_security文檔]或聯繫您的客服。",
        'config-diff3-bad' => '找不到GNU diff3。',
        'config-imagemagick' => '已找到ImageMagick:<code>$1</code>。如果你啟用了上傳功能,縮略圖功能也將被啟用。',
        'config-gd' => '已找到內建的GD圖形庫。如果你啟用了上傳功能,縮略圖功能也將被啟用。',
@@ -18343,6 +18880,13 @@ Object caching is not enabled.",
        'config-suhosin-max-value-length' => 'Suhosin已經安裝並將GET請求的參數長度限制在$1字節。MediaWiki的ResourceLoader部件可以在此限制下正常工作,但其性能會被降低。如果可能,請在php.ini中將suhosin.get.max_value_length設為1024或更高值,並在LocalSettings.php中將$wgResourceLoaderMaxQueryLength設為同一值。',
        'config-db-type' => '資料庫類型:',
        'config-db-host' => '資料庫主機:',
+       'config-db-host-help' => '如果您的數據庫在別的服務器上,請在這裡輸入它的域名或IP地址。
+
+如果您在使用共享網站套餐,您的網站商應該已在他們的控制面板中給您數據庫信息了。
+
+如果您在Windows中安裝並且使用MySQL,“localhost”可能無效。如果確實無效,請輸入“127.0.0.1”作為IP地址。
+
+如果您在使用PostgreSQL,並且要用Unix socket來連接,請留空。',
        'config-db-host-oracle' => '資料庫的 TNS:',
        'config-db-host-oracle-help' => '請輸入合法的[http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm 本地連接名],並確保tnsnames.ora文件對本安裝程序可見。<br />如果您使用的客戶端庫為10g或更新的版本,您還可以使用[http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm 簡單連接名方法](easy connect naming method)。',
        'config-db-wiki-settings' => '識別這個 Wiki',
index 82de913..3f1dad9 100644 (file)
@@ -209,7 +209,6 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase.sql' ),
 
                        // 1.20
-                       array( 'addTable', 'config',                            'patch-config.sql' ),
                        array( 'addIndex', 'revision', 'page_user_timestamp', 'patch-revision-user-page-index.sql' ),
                        array( 'addField', 'ipblocks',      'ipb_parent_block_id',           'patch-ipb-parent-block-id.sql' ),
                        array( 'addIndex', 'ipblocks',      'ipb_parent_block_id',           'patch-ipb-parent-block-id-index.sql' ),
index f946d59..5523470 100644 (file)
@@ -67,7 +67,6 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase.sql' ),
 
                        //1.20
-                       array( 'addTable', 'config', 'patch-config.sql' ),
                        array( 'addIndex', 'ipblocks', 'i05', 'patch-ipblocks_i05_index.sql' ),
                        array( 'addIndex', 'revision', 'i05', 'patch-revision_i05_index.sql' ),
                        array( 'dropField', 'category', 'cat_hidden', 'patch-cat_hidden.sql' ),
index 457268c..5a13d42 100644 (file)
@@ -89,7 +89,6 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'addTable', 'module_deps',       'patch-module_deps.sql' ),
                        array( 'addTable', 'uploadstash',       'patch-uploadstash.sql' ),
                        array( 'addTable', 'user_former_groups','patch-user_former_groups.sql' ),
-                       array( 'addTable', 'config',            'patch-config.sql' ),
                        array( 'addTable', 'external_user',     'patch-external_user.sql' ),
 
                        # Needed before new field
index c3f7a81..2fa3f31 100644 (file)
@@ -88,7 +88,6 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ug_group-length-increase.sql' ),
 
                        // 1.20
-                       array( 'addTable', 'config',                            'patch-config.sql' ),
                        array( 'addIndex', 'revision', 'page_user_timestamp', 'patch-revision-user-page-index.sql' ),
                        array( 'addField', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id.sql' ),
                        array( 'addIndex', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id-index.sql' ),
index 4d875e6..9a42c09 100644 (file)
@@ -139,7 +139,8 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                $this->mTargetObj = $ret;
 
                $form = new HTMLForm( $this->getFormFields(), $this->getContext() );
-               $form->addPreText( $this->msg( 'emailpagetext' )->parse() );
+               // By now we are supposed to be sure that $this->mTarget is a user name
+               $form->addPreText( $this->msg( 'emailpagetext', $this->mTarget )->parse() );
                $form->setSubmitTextMsg( 'emailsend' );
                $form->setTitle( $this->getTitle() );
                $form->setSubmitCallback( array( __CLASS__, 'uiSubmit' ) );
index 97f0037..d7cf693 100644 (file)
@@ -255,7 +255,7 @@ class SpecialPasswordReset extends FormSpecialPage {
 
                $title = $this->msg( 'passwordreset-emailtitle' );
 
-               $this->result = $firstUser->sendMail( $title->escaped(), $this->email->escaped() );
+               $this->result = $firstUser->sendMail( $title->escaped(), $this->email->text() );
 
                // Blank the email if the user is not supposed to see it
                if( !isset( $data['Capture'] ) || !$data['Capture'] ) {
index 0616d56..88f127e 100644 (file)
@@ -410,27 +410,41 @@ class UserrightsPage extends SpecialPage {
         */
        protected function showEditUserGroupsForm( $user, $groups ) {
                $list = array();
+               $membersList = array();
                foreach( $groups as $group ) {
                        $list[] = self::buildGroupLink( $group );
+                       $membersList[] = self::buildGroupMemberLink( $group );
                }
 
-               $autolist = array();
+               $autoList = array();
+               $autoMembersList = array();
                if ( $user instanceof User ) {
                        foreach( Autopromote::getAutopromoteGroups( $user ) as $group ) {
-                               $autolist[] = self::buildGroupLink( $group );
+                               $autoList[] = self::buildGroupLink( $group );
+                               $autoMembersList[] = self::buildGroupMemberLink( $group );
                        }
                }
 
+               $language = $this->getLanguage();
+               $displayedList = $this->msg( 'userrights-groupsmember-type',
+                       $language->listToText( $list ),
+                       $language->listToText( $membersList )
+               )->plain();
+               $displayedAutolist = $this->msg( 'userrights-groupsmember-type',
+                       $language->listToText( $autoList ),
+                       $language->listToText( $autoMembersList )
+               )->plain();
+
                $grouplist = '';
                $count = count( $list );
-               if( $count > 0 ) {
+               if ( $count > 0 ) {
                        $grouplist = $this->msg( 'userrights-groupsmember', $count, $user->getName() )->parse();
-                       $grouplist = '<p>' . $grouplist  . ' ' . $this->getLanguage()->listToText( $list ) . "</p>\n";
+                       $grouplist = '<p>' . $grouplist  . ' ' . $displayedList . "</p>\n";
                }
-               $count = count( $autolist );
-               if( $count > 0 ) {
+               $count = count( $autoList );
+               if ( $count > 0 ) {
                        $autogrouplistintro = $this->msg( 'userrights-groupsmember-auto', $count, $user->getName() )->parse();
-                       $grouplist .= '<p>' . $autogrouplistintro  . ' ' . $this->getLanguage()->listToText( $autolist ) . "</p>\n";
+                       $grouplist .= '<p>' . $autogrouplistintro  . ' ' . $displayedAutolist . "</p>\n";
                }
 
                $userToolLinks = Linker::userToolLinks(
@@ -480,10 +494,17 @@ class UserrightsPage extends SpecialPage {
         * @return string
         */
        private static function buildGroupLink( $group ) {
-               static $cache = array();
-               if( !isset( $cache[$group] ) )
-                       $cache[$group] = User::makeGroupLinkHtml( $group, htmlspecialchars( User::getGroupName( $group ) ) );
-               return $cache[$group];
+               return User::makeGroupLinkHtml( $group, User::getGroupName( $group ) );
+       }
+
+       /**
+        * Format a link to a group member description page
+        *
+        * @param $group string
+        * @return string
+        */
+       private static function buildGroupMemberLink( $group ) {
+               return User::makeGroupLinkHtml( $group, User::getGroupMember( $group ) );
        }
 
        /**
index 4e5b6bf..87ea943 100644 (file)
@@ -48,29 +48,43 @@ class SpecialVersion extends SpecialPage {
         * main()
         */
        public function execute( $par ) {
-               global $wgSpecialVersionShowHooks;
+               global $wgSpecialVersionShowHooks, $IP;
 
                $this->setHeaders();
                $this->outputHeader();
                $out = $this->getOutput();
                $out->allowClickjacking();
 
-               $text =
-                       $this->getMediaWikiCredits() .
-                       $this->softwareInformation() .
-                       $this->getEntryPointInfo() .
-                       $this->getExtensionCredits();
-               if ( $wgSpecialVersionShowHooks ) {
-                       $text .= $this->getWgHooks();
-               }
+               if( $par !== 'Credits' ) {
+                       $text =
+                               $this->getMediaWikiCredits() .
+                               $this->softwareInformation() .
+                               $this->getEntryPointInfo() .
+                               $this->getExtensionCredits();
+                       if ( $wgSpecialVersionShowHooks ) {
+                               $text .= $this->getWgHooks();
+                       }
 
-               $out->addWikiText( $text );
-               $out->addHTML( $this->IPInfo() );
+                       $out->addWikiText( $text );
+                       $out->addHTML( $this->IPInfo() );
 
-               if ( $this->getRequest()->getVal( 'easteregg' ) ) {
-                       if ( $this->showEasterEgg() ) {
-                               // TODO: put something interesting here
+                       if ( $this->getRequest()->getVal( 'easteregg' ) ) {
+                               if ( $this->showEasterEgg() ) {
+                                       // TODO: put something interesting here
+                               }
                        }
+               } else {
+                       // Credits sub page
+
+                       // Header
+                       $out->addHTML( wfMessage( 'version-credits-summary' )->parseAsBlock() );
+
+                       $wikiText = file_get_contents( $IP . '/CREDITS' );
+
+                       // Take everything from the first section onwards, to remove the (not localized) header
+                       $wikiText = substr( $wikiText, strpos( $wikiText, '==' ) );
+
+                       $out->addWikiText( $wikiText );
                }
        }
 
@@ -109,9 +123,9 @@ class SpecialVersion extends SpecialPage {
                        'Roan Kattouw', 'Trevor Parscal', 'Bryan Tong Minh', 'Sam Reed',
                        'Victor Vasiliev', 'Rotem Liss', 'Platonides', 'Antoine Musso',
                        'Timo Tijhof',
-                       '[{{SERVER}}{{SCRIPTPATH}}/CREDITS ' .
+                       '[[Special:Version/Credits|' .
                        wfMessage( 'version-poweredby-others' )->text() .
-                       ']'
+                       ']]'
                );
 
                return wfMessage( 'version-poweredby-credits', date( 'Y' ),
index fd603ce..1342066 100755 (executable)
@@ -30,10 +30,10 @@ def unichr3( *args ):
     return [unichr( int( i[2:7], 16 ) ) for i in args if i[2:7]]
 
 # DEFINE
-UNIHAN_VER = '5.2.0'
+UNIHAN_VER = '6.2.0'
 SF_MIRROR = 'dfn'
-SCIM_TABLES_VER = '0.5.10'
-SCIM_PINYIN_VER = '0.5.91'
+SCIM_TABLES_VER = '0.5.11'
+SCIM_PINYIN_VER = '0.5.92'
 LIBTABE_VER = '0.2.3'
 # END OF DEFINE
 
index a770906..58c285f 100644 (file)
@@ -301,7 +301,6 @@ $messages = array(
 'qbbrowse' => 'Lop',
 'qbedit' => 'Andam',
 'qbpageoptions' => 'Ôn nyoe',
-'qbpageinfo' => 'Asoe ôn',
 'qbmyoptions' => 'Ôn lôn',
 'qbspecialpages' => 'Ôn kusuih',
 'faq' => 'FAQ',
index a94eac8..e07da4f 100644 (file)
@@ -211,7 +211,6 @@ $messages = array(
 'qbbrowse' => 'Shfleto',
 'qbedit' => 'Redakto',
 'qbpageoptions' => 'Kjo faqe',
-'qbpageinfo' => 'Konteksti',
 'qbmyoptions' => 'Faqet e mija',
 'qbspecialpages' => 'Faqet speciale',
 'faq' => 'Pyetjet e shpeshta',
index 3b55cfb..c4272cc 100644 (file)
@@ -173,7 +173,6 @@ $messages = array(
 'qbbrowse' => 'Onbirȝe',
 'qbedit' => 'Ādihte',
 'qbpageoptions' => 'Þēos sīde',
-'qbpageinfo' => 'Ȝeƿef',
 'qbmyoptions' => 'Mīna sīdan',
 'qbspecialpages' => 'Syndriȝa sīdan',
 'faq' => 'Oftost ascoda ascunȝa',
index fe36fae..ab5b784 100644 (file)
@@ -110,7 +110,6 @@ $messages = array(
 'qbbrowse' => 'Kintun',
 'qbedit' => 'Pepikape',
 'qbpageoptions' => 'Tüfachi wülngiñ',
-'qbpageinfo' => 'Trokiñdungu',
 'qbmyoptions' => 'tañi nütramkawe',
 'qbspecialpages' => 'Kangelu',
 'faq' => 'Rumelfemkelu ramtun',
index d10ed89..f90ff3f 100644 (file)
@@ -163,7 +163,6 @@ $messages = array(
 'qbbrowse' => 'ṫsffeh',
 'qbedit' => 'Ĝedel',
 'qbpageoptions' => "Had 'ṣ-ṣefḫa",
-'qbpageinfo' => 'L-Meḍmon',
 'qbmyoptions' => "'Ṣ-Ṣefḫaṫ dyawli",
 'qbspecialpages' => 'Ṣefḫaṫ ĥaṣṣin',
 'faq' => 'asaila kaytaawdo bzaf',
index 7aff876..f11415c 100644 (file)
@@ -166,7 +166,6 @@ $messages = array(
 'qbbrowse' => 'Blaadeln',
 'qbedit' => 'werkeln',
 'qbpageoptions' => 'Seitenopzionen',
-'qbpageinfo' => 'Seitendaaten',
 'qbmyoptions' => 'Meine Seiten',
 'qbspecialpages' => 'Speziaalseiten',
 'faq' => 'Heiffige Frong',
index 4720033..bd16422 100644 (file)
@@ -91,7 +91,6 @@ $messages = array(
 'qbbrowse' => 'ब्राउज',
 'qbedit' => 'सम्पादन',
 'qbpageoptions' => 'ई पन्ना',
-'qbpageinfo' => 'प्रसंग',
 'qbmyoptions' => 'हमार पन्ना',
 'qbspecialpages' => 'विशेष पन्ना',
 'faq' => 'साधारण सवाल',
index 094e2ac..9c3612e 100644 (file)
@@ -126,7 +126,6 @@ $messages = array(
 'qbbrowse' => 'ब्राउज',
 'qbedit' => 'सम्पादन',
 'qbpageoptions' => 'ई पन्ना',
-'qbpageinfo' => 'प्रसंग',
 'qbmyoptions' => 'हमार पन्ना',
 'qbspecialpages' => 'विशेष पन्ना',
 'faq' => 'साधारण सवाल',
index af935e9..b9a145c 100644 (file)
@@ -143,7 +143,6 @@ $messages = array(
 'qbfind' => 'འཚོལ་བ།',
 'qbedit' => 'རྩོམ་སྒྲིག',
 'qbpageoptions' => 'ཤོག་ངོས་འདི།',
-'qbpageinfo' => 'འབྲེལ་ཆགས།',
 'qbmyoptions' => 'ངའི་ཤོག་ངོས།',
 'qbspecialpages' => 'དམིཊ་བསལ་གྱི་བཟོ་བཅོས།',
 'faq' => 'རྒྱུན་ལྡན་དྲི་བ།',
index 1cfff22..b8c35a7 100644 (file)
@@ -190,7 +190,6 @@ $messages = array(
 'qbbrowse' => 'বুলিয়া চা',
 'qbedit' => 'পতানি',
 'qbpageoptions' => 'পাতা এহানর সারুক',
-'qbpageinfo' => 'পাতা এহানর পৌ',
 'qbmyoptions' => 'মর পছন',
 'qbspecialpages' => 'বিশেষ পাতাহানি',
 'faq' => 'আঙলাক',
index 94a9203..31f0fe2 100644 (file)
@@ -355,7 +355,6 @@ $messages = array(
 'qbbrowse' => 'Хьажар',
 'qbedit' => 'Нисйé',
 'qbpageoptions' => 'Агlо нисйар',
-'qbpageinfo' => 'Агlонах болу бовзам',
 'qbmyoptions' => 'Хьан нисдарш',
 'qbspecialpages' => 'Леррина агlонаш',
 'faq' => 'СиХХ',
index 62aaf29..f545871 100644 (file)
@@ -208,7 +208,6 @@ $messages = array(
 'qbbrowse' => 'Browse',
 'qbedit' => 'Usba',
 'qbpageoptions' => 'Kini nga panid',
-'qbpageinfo' => 'Konteksto',
 'qbmyoptions' => 'Akong mga panid',
 'qbspecialpages' => 'Mga espesyal nga panid',
 'faq' => 'FAQ',
index f05a9e0..cfdfe0c 100644 (file)
@@ -146,7 +146,6 @@ $messages = array(
 'qbbrowse' => 'Atan',
 'qbedit' => 'Tulaika',
 'qbpageoptions' => 'Este na pahina',
-'qbpageinfo' => 'Kontekstu',
 'qbmyoptions' => 'Påhina-hu siha',
 'qbspecialpages' => 'Manespesiat na påhina',
 
index 8f063a5..8ccda6b 100644 (file)
@@ -158,7 +158,6 @@ $messages = array(
 'qbbrowse' => 'Pangita-on',
 'qbedit' => 'Ilisan',
 'qbpageoptions' => 'Mini nga pahina',
-'qbpageinfo' => 'Konteksto',
 'qbmyoptions' => 'Akon mga pahina',
 'qbspecialpages' => 'Pinasahi nga mga pahina',
 'faq' => 'Mga perme napamangkot ("FAQ")',
index 0c3f017..d407c4b 100644 (file)
@@ -252,7 +252,6 @@ $messages = array(
 'qbbrowse' => 'Бакъып чыкъ',
 'qbedit' => 'Денъиштир',
 'qbpageoptions' => 'Бу саифе',
-'qbpageinfo' => 'Саифе акъкъында малюмат',
 'qbmyoptions' => 'Саифелерим',
 'qbspecialpages' => 'Махсус саифелер',
 'faq' => 'Сыкъ берильген суаллер',
index 95bf434..ac6da44 100644 (file)
@@ -247,7 +247,6 @@ $messages = array(
 'qbbrowse' => 'Baqıp çıq',
 'qbedit' => 'Deñiştir',
 'qbpageoptions' => 'Bu saife',
-'qbpageinfo' => 'Saife aqqında malümat',
 'qbmyoptions' => 'Saifelerim',
 'qbspecialpages' => 'Mahsus saifeler',
 'faq' => 'Sıq berilgen sualler',
index fc7eb7e..ec61e0c 100644 (file)
@@ -177,7 +177,6 @@ $messages = array(
 'qbbrowse' => 'Przezeranié',
 'qbedit' => 'Edicëjô',
 'qbpageoptions' => 'Òptacëje starnë',
-'qbpageinfo' => 'Ò starnie',
 'qbmyoptions' => 'Mòje òptacëje',
 'qbspecialpages' => 'Specjalné starnë',
 'faq' => 'FAQ',
index 1efc850..a08779d 100644 (file)
@@ -172,7 +172,6 @@ $messages = array(
 'qbbrowse' => 'Курăм',
 'qbedit' => 'Тӳрлет',
 'qbpageoptions' => 'Страница ĕнерлевĕсем',
-'qbpageinfo' => 'Страница çинчен',
 'qbmyoptions' => 'Сирĕн ĕнĕрлевсем',
 'qbspecialpages' => 'Ятарлӑ страницӑсем',
 'faq' => 'ЫйХу',
index 97a09b6..d1cea4d 100644 (file)
@@ -761,7 +761,7 @@ Midlertidig adgangskode: $2',
 'extlink_sample' => 'http://www.example.com Titel på henvisning',
 'extlink_tip' => 'Ekstern henvisning (husk http:// præfiks)',
 'headline_sample' => 'Tekst til overskrift',
-'headline_tip' => 'Type 2 overskrift',
+'headline_tip' => 'Type 2-overskrift',
 'nowiki_sample' => 'Indsæt tekst her som ikke skal wikiformateres',
 'nowiki_tip' => 'Ignorer wikiformatering',
 'image_sample' => 'Eksempel.jpg',
index a007c89..3011f82 100644 (file)
@@ -328,17 +328,17 @@ $messages = array(
 'tog-minordefault' => "Vurnayışanê xo pêrune ''vurnayışo qıckek'' nışan bıde",
 'tog-previewontop' => 'Verqayti pela nuştışi ser de bımocne',
 'tog-previewonfirst' => 'Vurnayışo verên de verqayti tım bımocne',
-'tog-nocache' => 'Pelanê cıgeyrayoği bia xo viri',
+'tog-nocache' => 'Pelanê cıgeyrayoği mia xo viri',
 'tog-enotifwatchlistpages' => 'Jû pele ya zi dosyaya ke lista mına seyrkerdışi de vurnayê mı rê e-poste bırışe',
 'tog-enotifusertalkpages' => 'Pela mına werênayışi ke vurnayê mı rê e-poste bırışe',
 'tog-enotifminoredits' => 'Vurnayışanê qıckekanê pelan u dosyeyan de zi mı rê e-poste bırışe',
 'tog-enotifrevealaddr' => 'Adresa e-posteyê mı posteyê xeberan de bımocne',
 'tog-shownumberswatching' => 'Amarê karberanê seyrkerdoğan bımocne',
 'tog-oldsig' => 'İmzaya mewcude:',
-'tog-fancysig' => 'İmza rê muameleyê wikimetina bıke (bê gıreyo otomatik)',
+'tog-fancysig' => 'İmza rê mameleyê wikimeqaley bıke (bê gıreyo otomatik)',
 'tog-externaleditor' => 'Editorê teberi standard bıxebetne (tenya seba ekspertano, komputerê şıma de eyarê xısusiy lazımê. [//www.mediawiki.org/wiki/Manual:External_editors Melumato vêşêr.])',
 'tog-externaldiff' => 'Têverşanayışan pê programê teberi vıraze (tenya seba ekspertano, komputerê şıma de eyarê xısusiy lazımê. [//www.mediawiki.org/wiki/Manual:External_editors Melumato vêşêr.])',
-'tog-showjumplinks' => 'Gıreyê "şo"y aktiv ke',
+'tog-showjumplinks' => 'Gıreyê "şo"y aktif ke',
 'tog-uselivepreview' => 'Verqayto cınde bıxebetne (JavaScript lazımo) (hewna cerrebnayış dero)',
 'tog-forceeditsummary' => 'Mı ke xulasa kerde cı vira, hay be mı ser de',
 'tog-watchlisthideown' => 'Vurnayışanê mı lista mına seyrkerdışi de bınımne',
@@ -441,11 +441,11 @@ $messages = array(
 
 'about' => 'Heqa',
 'article' => 'Wesiqe',
-'newwindow' => '(teqa da newi de abeno)',
+'newwindow' => '(zerreyê pençereyê newey de beno a)',
 'cancel' => 'Bıtexelne',
 'moredotdotdot' => 'Vêşi...',
 'mypage' => 'Pela mı',
-'mytalk' => 'Behsê mı',
+'mytalk' => 'Werênayışê mı',
 'anontalk' => 'Pela werênayışê nê IPy',
 'navigation' => 'Geyrayış',
 'and' => '&#32;u',
@@ -456,7 +456,7 @@ $messages = array(
 'qbedit' => 'Bıvurne',
 'qbpageoptions' => 'Ena pele',
 'qbmyoptions' => 'Pelê mı',
-'qbspecialpages' => 'Peley xısusi',
+'qbspecialpages' => 'Pelê xısusiy',
 'faq' => 'PZP (Persê ke zehf persiyenê)',
 'faqpage' => 'Project: PZP',
 
@@ -556,8 +556,8 @@ $1',
 'mainpage' => 'Pera Seri',
 'mainpage-description' => 'Pela Seri',
 'policy-url' => 'Project:Terzê hereketi',
-'portal' => 'Portalê şêlıgi',
-'portal-url' => 'Project:Portalê şêlıgi',
+'portal' => 'Portalê cemaeti',
+'portal-url' => 'Project:Portalê cemaeti',
 'privacy' => 'Madeyê dızdiye',
 'privacypage' => 'Project:Xısusiyetê nımtışi',
 
@@ -703,7 +703,7 @@ $2',
 'namespaceprotected' => "No '''$1''' ca de icazetê şıma çino şıma pel rêz keri.",
 'customcssprotected' => 'Mısadeyê şıma çıniyo ke na pela CSSi bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.',
 'customjsprotected' => 'Mısadeyê şıma çıniyo ke na pela Java Scripti bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.',
-'ns-specialprotected' => 'Peley xısusi nênê vurnayış.',
+'ns-specialprotected' => 'Pelê xısusiy nênê vurnayış.',
 'titleprotected' => 'Eno [[User:$1|$1]] zerreyê ena peli nişeno vuriye.
 Sebeb: "\'\'$2\'\'".',
 'filereadonlyerror' => 'Dosyay vurnayışê "$1" nê abê no lakin depoy dosya da "$2" mod dê  salt wendi deyo.
@@ -736,7 +736,7 @@ Hesabê şıma biyo a.
 'yourdomainname' => 'Nameyê şıma yo meydani',
 'password-change-forbidden' => 'Şıma na wiki de nêşenê parola bıvurnê.',
 'externaldberror' => 'Ya database de xeta esta ya zi heqê şıma çino şıma no hesab bıvurni.',
-'login' => 'Ronıştış akerê',
+'login' => 'Cı kewe',
 'nav-login-createaccount' => 'Dekew de / hesab vıraze',
 'loginprompt' => "{{SITENAME}} dı ronıştış akerdışi rê ''çerezan'' aktiv kerdış icab keno.",
 'userlogin' => 'Cı kewe / hesab vıraze',
@@ -748,7 +748,7 @@ Hesabê şıma biyo a.
 'nologinlink' => 'Yew hesab ake',
 'createaccount' => 'Hesab vıraze',
 'gotaccount' => "Hesabê şıma esto? '''$1'''.",
-'gotaccountlink' => 'Ronıştış akerê',
+'gotaccountlink' => 'Cı kewe',
 'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
 'createaccountmail' => 'mı rê e-mail sera parola bırışe',
 'createaccountreason' => 'Sebeb:',
@@ -2045,7 +2045,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'unusedtemplateswlh' => 'linkanê binî',
 
 # Random page
-'randompage' => 'Peleya ke raştamê',
+'randompage' => 'Pela raştameyiye',
 'randompage-nopages' => 'Ena {{PLURAL:$2|cayêname|cayênameyî}} de enê pelan çin o: $1.',
 
 # Random redirect
@@ -2571,7 +2571,7 @@ $1',
 # Contributions
 'contributions' => 'İştiraqê karberi',
 'contributions-title' => 'Dekerdenê karber de $1',
-'mycontris' => 'Dekerdışê mı',
+'mycontris' => 'kerdışê mı',
 'contribsub2' => 'Qandê $1 ($2)',
 'nocontribs' => 'Ena kriteriya de vurnayîş çini yo.',
 'uctop' => '(top)',
@@ -3619,13 +3619,13 @@ mw.loader.using( 'jquery.cookie', function() {
 'pageinfo-magic-words' => '{{PLURAL:$1|Çekuya|Çekuyê}} ($1) sihırini',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Kategoriye|Kategoriyan}} ($1) bınımne',
 'pageinfo-templates' => '{{PLURAL:$1|Şablon|Şabloni}} ($1) açarneyayê',
-'pageinfo-toolboxlink' => 'Malumatê perer',
+'pageinfo-toolboxlink' => 'Melumatê pele',
 'pageinfo-redirectsto' => 'Beno hetê',
 'pageinfo-redirectsto-info' => 'melumat',
 'pageinfo-contentpage' => 'Zey jû pela zerreki hesebiyena',
-'pageinfo-contentpage-yes' => 'E',
+'pageinfo-contentpage-yes' => 'Heya',
 'pageinfo-protect-cascading' => 'Sıtarkerdey tiya cı ra yenê war',
-'pageinfo-protect-cascading-yes' => 'E',
+'pageinfo-protect-cascading-yes' => 'Heya',
 'pageinfo-protect-cascading-from' => 'Sıtarkerdey cı ra yenê war',
 
 # Skin names
@@ -4552,7 +4552,7 @@ Resımi be tam asayış mocniyayê, tipê dosyaê bini be programê cıyo elaqed
 'fileduplicatesearch-noresults' => 'Ebe namey "$1" ra dosya nêdiyayê.',
 
 # Special:SpecialPages
-'specialpages' => 'Peley xısusi',
+'specialpages' => 'Pelê xısusiy',
 'specialpages-note' => '----
 * Xısusi pelaya normal
 * <span class="mw-specialpagerestricted">Xısusi peleyê keı rê ray nê deyaya.</span>
index a61ab82..832f2c6 100644 (file)
@@ -1947,6 +1947,7 @@ Your e-mail address is not revealed when other users contact you.',
 'saveusergroups'                 => 'Save user groups',
 'userrights-groupsmember'        => 'Member of:',
 'userrights-groupsmember-auto'   => 'Implicit member of:',
+'userrights-groupsmember-type'   => '$1', # only translate this message to other languages if you have to change it
 'userrights-groups-help'         => 'You may alter the groups this user is in:
 * A checked box means the user is in that group.
 * An unchecked box means the user is not in that group.
@@ -2806,7 +2807,8 @@ There may be [[{{MediaWiki:Listgrouprights-helppage}}|additional information]] a
 'emailuser-title-notarget' => 'E-mail user',
 'emailuser-summary'        => '', # do not translate or duplicate this message to other languages
 'emailpage'                => 'E-mail user',
-'emailpagetext'            => 'You can use the form below to send an e-mail message to this user.
+// Dummy GENDER to prevent warnings at translatewiki
+'emailpagetext'            => 'You can use the form below to send an e-mail message to this {{GENDER:$1|user}}.
 The e-mail address you entered in [[Special:Preferences|your user preferences]] will appear as the "From" address of the e-mail, so the recipient will be able to reply directly to you.',
 'usermailererror'          => 'Mail object returned error:',
 'defemailsubject'          => '{{SITENAME}} e-mail from user "$1"',
@@ -3751,6 +3753,7 @@ This is probably caused by a link to a blacklisted external site.',
 'pageinfo-default-sort'        => 'Default sort key',
 'pageinfo-length'              => 'Page length (in bytes)',
 'pageinfo-article-id'          => 'Page ID',
+'pageinfo-language'            => 'Page content language',
 'pageinfo-robot-policy'        => 'Search engine status',
 'pageinfo-robot-index'         => 'Indexable',
 'pageinfo-robot-noindex'       => 'Not indexable',
@@ -4712,6 +4715,7 @@ You can also [[Special:EditWatchlist|use the standard editor]].',
 'version-license'                       => 'License',
 'version-poweredby-credits'             => "This wiki is powered by '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others'              => 'others',
+'version-credits-summary'               => 'We would like to recognize the following persons for their contribution to [[Special:Version|MediaWiki]].',
 'version-license-info'                  => 'MediaWiki is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
 
 MediaWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
index cc28a22..894f8d5 100644 (file)
@@ -1984,7 +1984,7 @@ Eble vi volas redakti la priskribon ĉe ties [$2 dosier-priskriba paĝo].',
 'uploadnewversion-linktext' => 'Alŝuti novan version de ĉi tiu dosiero',
 'shared-repo-from' => 'de $1',
 'shared-repo' => 'komuna dosierujo',
-'upload-disallowed-here' => 'Bedaŭrinde, vi ne povas superskribi ĉi tiun bildon.',
+'upload-disallowed-here' => 'Vi ne povas superskribi ĉi tiun bildon.',
 
 # File reversion
 'filerevert' => 'Restarigi $1',
@@ -2092,6 +2092,7 @@ Paĝo estas traktata kiel apartigilo se ĝi uzas ŝablonon kiu estas ligita de [
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|bitoko|bitokoj}}',
 'ncategories' => '{{PLURAL:$1|unu kategorio|$1 kategorioj}}',
+'ninterwikis' => '$1 {{PLURAL:$1|interlingva ligilo|interlingvaj ligiloj}}',
 'nlinks' => '$1 {{PLURAL:$1|ligilo|ligiloj}}',
 'nmembers' => '{{PLURAL:$1|unu membro|$1 membroj}}',
 'nrevisions' => '$1 {{PLURAL:$1|versio|versioj}}',
@@ -2120,6 +2121,7 @@ Paĝo estas traktata kiel apartigilo se ĝi uzas ŝablonon kiu estas ligita de [
 'mostlinkedtemplates' => 'Plej ligitaj ŝablonoj',
 'mostcategories' => 'Artikoloj kun la plej multaj kategorioj',
 'mostimages' => 'Plej ligitaj bildoj',
+'mostinterwikis' => 'Artikoloj kun la plej multaj interlingvaj ligiloj',
 'mostrevisions' => 'Artikoloj kun la plej multaj versioj',
 'prefixindex' => 'Ĉiuj paĝoj kun prefikso',
 'prefixindex-namespace' => 'Ĉiuj paĝoj kun prefikso ($1 nomspaco)',
@@ -2521,7 +2523,8 @@ Vi verŝajne havas malbonan ligilon, aŭ la revizio eble estis restarigita aŭ f
 'undeletedrevisions' => '{{PLURAL:$1|1 versio restarigita|$1 versioj restarigitaj}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 versio|$1 versioj}} kaj {{PLURAL:$2|1 dosiero|$2 dosieroj}} restarigitaj',
 'undeletedfiles' => '{{PLURAL:$1|1 dosiero restarigita|$1 dosieroj restarigitaj}}',
-'cannotundelete' => 'Restarigo malsukcesis; iu eble restarigis la paĝon antaŭe.',
+'cannotundelete' => 'Restarigo malsukcesis: 
+$1',
 'undeletedpage' => "'''$1 estis restarigita'''
 
 Konsultu la [[Special:Log/delete|deletion log]] por protokolo pri la lastatempaj forigoj kaj restarigoj.",
@@ -3093,16 +3096,39 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
 'pageinfo-title' => 'Informoj por "$1"',
 'pageinfo-header-basic' => 'Baza informo',
 'pageinfo-header-edits' => 'Historio de redaktoj',
+'pageinfo-header-restrictions' => 'Protektado de la paĝo',
+'pageinfo-header-properties' => 'Ecoj de la paĝo',
+'pageinfo-display-title' => 'Montrita titolo',
+'pageinfo-default-sort' => 'Pravaloro de ordiga ŝlosilo',
+'pageinfo-length' => 'Paĝgrandeco (en bajtoj)',
 'pageinfo-article-id' => 'Paĝa identigo',
+'pageinfo-robot-policy' => 'Statuso de la serĉilo',
 'pageinfo-robot-index' => 'Indeksebla',
 'pageinfo-robot-noindex' => 'Ne indeksebla',
 'pageinfo-views' => 'Nombro de rigardoj',
 'pageinfo-watchers' => 'Nombro de paĝatentantoj',
-'pageinfo-lastuser' => 'Lasta redaktoro',
+'pageinfo-redirects-name' => 'Alidirektoj al ĉi tiu paĝo',
+'pageinfo-subpages-name' => 'Subpaĝoj de ĉi tiu paĝo',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|alidirektilo|alidirektiloj}}; $3 {{PLURAL:$3|ne-alidirektilo|ne-alidirektiloj}})',
+'pageinfo-firstuser' => 'Kreinto de la paĝo',
+'pageinfo-firsttime' => 'Dato de paĝkreado',
+'pageinfo-lastuser' => 'Lasta redaktinto',
 'pageinfo-lasttime' => 'Dato de lasta redakto',
-'pageinfo-edits' => 'Tuta nombro de redaktoj',
-'pageinfo-authors' => 'Tuta nombro de malsamaj aŭtoroj',
+'pageinfo-edits' => 'Suma nombro de redaktoj',
+'pageinfo-authors' => 'Suma nombro de malsamaj aŭtoroj',
+'pageinfo-recent-edits' => 'Nombro da lastaj redaktoj (ene de lastaj $1)',
 'pageinfo-recent-authors' => 'Lasta nombro de malsamaj aŭtoroj',
+'pageinfo-magic-words' => '{{PLURAL:$1|Magia vorto|Magiaj vortoj}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Kaŝita kategorio|Kaŝitaj kategorioj}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Inkluzivita ŝablono|Inkluzivitaj ŝablonoj}} ($1)',
+'pageinfo-toolboxlink' => 'Informoj pri la paĝo',
+'pageinfo-redirectsto' => 'Alidirektas al',
+'pageinfo-redirectsto-info' => 'Informo',
+'pageinfo-contentpage' => 'Kalkulita kiel entenopaĝo',
+'pageinfo-contentpage-yes' => 'Jes',
+'pageinfo-protect-cascading' => 'Protektado kaskade fontas el ĉi tie',
+'pageinfo-protect-cascading-yes' => 'Jes',
+'pageinfo-protect-cascading-from' => 'Protektado kaskade fontas el',
 
 # Skin names
 'skinname-standard' => 'Klasiko',
@@ -3156,6 +3182,7 @@ $1',
 'file-info-size-pages' => '$1 × $2 rastrumeroj, dosiera grandeco: $3, MIME-tipo: $4, $5 {{PLURAL:$5|paĝo|paĝoj}}',
 'file-nohires' => 'Nenia pli granda distingivo havebla.',
 'svg-long-desc' => 'SVG-dosiero, $1 × $2 rastrumeroj, grandeco de dosiero: $3',
+'svg-long-desc-animated' => 'Animata SVG-dosiero, $1 × $2 rastrumeroj, grandeco de dosiero: $3',
 'show-big-image' => 'Plena distingivo',
 'show-big-image-preview' => 'Grandeco de ĉi antaŭvido: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Alia distingivo|Aliaj distingivoj}}: $1.',
@@ -3165,6 +3192,8 @@ $1',
 'file-info-png-looped' => 'ripetita',
 'file-info-png-repeat' => 'Ludis $1 fojo{{PLURAL:$1||j}}n',
 'file-info-png-frames' => '$1 kadro{{PLURAL:$1||j}}',
+'file-no-thumb-animation' => "'''Noto: Pro teĥnikaj limigoj antaŭvido de ĉi tiu dosiero ne estas animita.'''",
+'file-no-thumb-animation-gif' => "'''Noto: Pro teĥnikaj limigoj antaŭvido de altrezolucia GIF-dosiero kia ĉi tiu ne estas animita.'''",
 
 # Special:NewFiles
 'newimages' => 'Galerio de novaj dosieroj',
@@ -3197,7 +3226,7 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paĝoj kiel la b
 'metadata-help' => 'Ĉi tiu dosiero enhavas plian informon, verŝajne aldonitan de la cifereca fotilo aŭ skanilo uzita por krei aŭ skani ĝin. Se la dosiero estis modifita de sia originala stato, iuj detaloj eble ne konformos al efektiva stato de la modifita bildo.',
 'metadata-expand' => 'Montri etendajn detalojn',
 'metadata-collapse' => 'Kaŝi etendajn detalojn',
-'metadata-fields' => 'Metadatumaj kampoj de ĉi tiu mesaĝo estos inkluzivita en la paĝoj de bidloj kiam la metadatuma tabelo estas disfaldigita. 
+'metadata-fields' => 'Metadatumaj kampoj de ĉi tiu mesaĝo estos inkluzivitaj en la paĝoj de bildoj kiam la metadatuma tabelo estas disfaldita. 
 Aliaj estos kaŝitaj defaŭlte.
 * make
 * model
@@ -3679,6 +3708,7 @@ $5
 # Scary transclusion
 'scarytranscludedisabled' => '[Intervikia transinkluzivado estas malebligita.]',
 'scarytranscludefailed' => '[Akiro de ŝablono $1 malsukcesis.]',
+'scarytranscludefailed-httpstatus' => '[Malsukcesis akiri la ŝablonon $1 : HTTP  $2 ]',
 'scarytranscludetoolong' => '[URL-o estas tro longa]',
 
 # Delete conflict
index e2d265d..7ec8e18 100644 (file)
@@ -983,7 +983,7 @@ Alla on viimeisin estolokin tapahtuma:',
 'note' => "'''Huomautus:'''",
 'previewnote' => "'''Tämä on vasta sivun esikatselu.'''
 Tekemiäsi muutoksia ei ole vielä tallennettu.",
-'continue-editing' => 'Jatka muokkaamista',
+'continue-editing' => 'Siirry muokkauskenttään',
 'previewconflict' => 'Tämä esikatselu näyttää miltä muokkausalueella oleva teksti näyttää tallennettuna.',
 'session_fail_preview' => "'''Muokkaustasi ei voitu tallentaa, koska istuntosi tiedot ovat kadonneet.''' Yritä uudelleen. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ulos]] ja takaisin sisään.",
 'session_fail_preview_html' => "'''Muokkaustasi ei voitu tallentaa, koska istuntosi tiedot ovat kadonneet.'''
@@ -1050,9 +1050,12 @@ Se on ilmeisesti poistettu.',
 'edit-already-exists' => 'Uuden sivun luominen ei onnistunut.
 Se on jo olemassa.',
 'defaultmessagetext' => 'Viestin oletusteksti',
-'content-not-allowed-here' => '$1 ei ole sallittua sisältöä sivulla [[$2]]',
+'invalid-content-data' => 'Virheellinen sisältö',
+'content-not-allowed-here' => 'Sivun [[$2]] sisältö ei voi olla tyyppiä $1.',
 
 # Content models
+'content-model-wikitext' => 'wikiteksti',
+'content-model-text' => 'teksti',
 'content-model-javascript' => 'JavaScript',
 'content-model-css' => 'CSS',
 
@@ -2759,6 +2762,7 @@ $1 {{PLURAL:$1|sivu|sivua}} siirrettiin.',
 'immobile-target-namespace-iw' => 'Kielilinkki ei ole kelvollinen kohde sivun siirrolle.',
 'immobile-source-page' => 'Tämä sivu ei ole siirrettävissä.',
 'immobile-target-page' => 'Kyseiselle kohdenimelle ei voi siirtää.',
+'bad-target-model' => 'Kohde käyttää eri sisältömallia. Sisällön muuttaminen muodosta $1 muotoon $2 ei ole mahdollista.',
 'imagenocrossnamespace' => 'Tiedostoja ei voi siirtää pois tiedostonimiavaruudesta.',
 'nonfile-cannot-move-to-file' => 'Sivuja ei voi siirtää tiedostonimiavaruuteen.',
 'imagetypemismatch' => 'Uusi tiedostopääte ei vastaa tiedoston tyyppiä',
@@ -2837,6 +2841,7 @@ Jos haluat muokata MediaWikin yleistä kotoistusta, käy [//www.mediawiki.org/wi
 'import-interwiki-templates' => 'Liitä kaikki mallineet',
 'import-interwiki-submit' => 'Tuo',
 'import-interwiki-namespace' => 'Kohdenimiavaruus:',
+'import-interwiki-rootpage' => 'Tuo annetun sivun alasivuiksi (valinnainen):',
 'import-upload-filename' => 'Tiedostonimi:',
 'import-comment' => 'Syy',
 'importtext' => 'Vie sivuja lähdewikistä käyttäen [[Special:Export|vientityökalua]].
@@ -2870,6 +2875,8 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 'import-error-special' => 'Sivua $1 ei tuoda, koska se kuuluu nimitilaan, joka ei salli sivuja.',
 'import-error-invalid' => 'Sivua $1 ei tuoda, koska sen nimi ei kelpaa.',
 'import-options-wrong' => '{{PLURAL:$2|Väärä asetus|Väärät asetukset}}: <nowiki>$1</nowiki>',
+'import-rootpage-invalid' => 'Annettu sivun nimi ei kelpaa.',
+'import-rootpage-nosubpage' => 'Annetun sivun nimiavaruus $1 ei salli alasivuja.',
 
 # Import log
 'importlogpage' => 'Tuontiloki',
@@ -3018,6 +3025,7 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 
 # Info page
 'pageinfo-title' => 'Tietoja sivusta $1',
+'pageinfo-not-current' => 'Tiedot voidaan näyttää vain sivun viimeisimmälle versiolle.',
 'pageinfo-header-basic' => 'Perustiedot',
 'pageinfo-header-edits' => 'Muutoshistoria',
 'pageinfo-header-restrictions' => 'Sivun suojaus',
@@ -3026,23 +3034,29 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
 'pageinfo-default-sort' => 'Oletuslajitteluavain',
 'pageinfo-length' => 'Sivun pituus (tavuina)',
 'pageinfo-article-id' => 'Sivun tunniste',
+'pageinfo-robot-policy' => 'Hakukonemerkinnät',
 'pageinfo-robot-index' => 'Indeksoitava',
 'pageinfo-robot-noindex' => 'Ei indeksoitava',
 'pageinfo-views' => 'Katselukertojen määrä',
 'pageinfo-watchers' => 'Sivun tarkkailijoiden lukumäärä',
 'pageinfo-redirects-name' => 'Sivulle johtavat ohjaukset',
 'pageinfo-subpages-name' => 'Sivun alasivut',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|ohjaus|ohjausta}}; $3 {{PLURAL:$3|ei-ohjausta}})',
 'pageinfo-firstuser' => 'Sivun luonut',
 'pageinfo-firsttime' => 'Sivun luontipäivämäärä',
 'pageinfo-lastuser' => 'Viimeisin muokkaaja',
 'pageinfo-lasttime' => 'Viimeisimmän muokkausksen päivämäärä',
 'pageinfo-edits' => 'Muokkausten kokonaismäärä',
 'pageinfo-authors' => 'Sivun eri muokkaajien kokonaismäärä',
+'pageinfo-recent-edits' => 'Tuoreita muutoksia ($1)',
+'pageinfo-recent-authors' => 'Tuoreita muokkaajia',
 'pageinfo-magic-words' => '{{PLURAL:$1|Taikasana|Taikasanat}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Piilotettu luokka|Piilotetut luokat}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Sisällytetty malline|Sisällytetyt mallineet}} ($1)',
 'pageinfo-toolboxlink' => 'Sivun tiedot',
+'pageinfo-redirectsto' => 'Ohjaus sivulle',
 'pageinfo-redirectsto-info' => 'tiedot',
+'pageinfo-contentpage' => 'Lasketaan sisältösivuksi',
 'pageinfo-contentpage-yes' => 'Kyllä',
 'pageinfo-protect-cascading-yes' => 'Kyllä',
 
@@ -3098,6 +3112,7 @@ Suorittamalla sen järjestelmäsi voi muuttua epäluotettavaksi.",
 'file-info-size-pages' => '$1 × $2 kuvapistettä, tiedoston koko $3, MIME-tyyppi $4, $5 {{PLURAL:$5|sivu|sivua}}',
 'file-nohires' => 'Tarkempaa kuvaa ei ole saatavilla.',
 'svg-long-desc' => 'SVG-tiedosto; oletustarkkuus $1 × $2 kuvapistettä; tiedostokoko $3',
+'svg-long-desc-animated' => 'Animoitu SVG-tiedosto; oletustarkkuus $1 × $2 kuvapistettä; tiedostokoko $3',
 'show-big-image' => 'Korkeatarkkuuksinen versio',
 'show-big-image-preview' => 'Tämän esikatselun koko: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Muu resoluutio|Muut resoluutiot}}: $1.',
index 5841167..7890a9f 100644 (file)
@@ -239,7 +239,6 @@ $messages = array(
 'qbbrowse' => 'Sgarfe',
 'qbedit' => 'Cambie',
 'qbpageoptions' => 'Cheste pagjine',
-'qbpageinfo' => 'Contest',
 'qbmyoptions' => 'Mês pagjinis',
 'qbspecialpages' => 'Pagjinis speciâls',
 'faq' => 'Domandis plui frecuentis',
index 71b79b4..142a056 100644 (file)
@@ -281,7 +281,6 @@ $messages = array(
 'qbbrowse' => 'Blêdzje',
 'qbedit' => 'Bewurkje',
 'qbpageoptions' => 'Side-opsjes',
-'qbpageinfo' => 'Side-ynfo',
 'qbmyoptions' => 'Myn Opsjes',
 'qbspecialpages' => 'Bysûndere siden',
 'faq' => 'FAQ (faak stelde fragen)',
index cee9a1e..bd2c902 100644 (file)
@@ -237,7 +237,6 @@ $messages = array(
 'qbbrowse' => 'Brabhsáil',
 'qbedit' => 'Cuir in eagar',
 'qbpageoptions' => 'An leathanach seo',
-'qbpageinfo' => 'Comhthéacs',
 'qbmyoptions' => 'Mo chuid leathanaigh',
 'qbspecialpages' => 'Leathanaigh speisialta',
 'faq' => 'Ceisteanna Coiteanta',
index 5502087..6b053c6 100644 (file)
@@ -218,7 +218,6 @@ $messages = array(
 'qbbrowse' => 'Taramaa',
 'qbedit' => 'Diiştir',
 'qbpageoptions' => 'Bu sayfa',
-'qbpageinfo' => 'Kontekst',
 'qbmyoptions' => 'Sayfalarım',
 'qbspecialpages' => 'Maasus sayfalar',
 'faq' => 'SSS',
index 4be696f..62d11e8 100644 (file)
@@ -179,7 +179,6 @@ $messages = array(
 'qbbrowse' => 'Brabhsaich',
 'qbedit' => 'Deasaich',
 'qbpageoptions' => 'An duilleag seo',
-'qbpageinfo' => 'Co-theacs',
 'qbmyoptions' => 'Na duilleagan agam',
 'qbspecialpages' => 'Duilleagan sònraichte',
 'faq' => 'CÀBHA',
index bbdab38..ab4d580 100644 (file)
@@ -164,7 +164,6 @@ $messages = array(
 'qbbrowse' => 'Ronsee',
 'qbedit' => 'Reagh',
 'qbpageoptions' => 'Yn duillag shoh',
-'qbpageinfo' => 'Co-hecks',
 'qbmyoptions' => 'My ghuillagyn',
 'qbspecialpages' => 'Duillagyn er lheh',
 'faq' => 'FC',
index d086a2d..c86e2ba 100644 (file)
@@ -192,7 +192,6 @@ $messages = array(
 'qbfind' => 'Loa‘a',
 'qbedit' => 'E ho‘ololi',
 'qbpageoptions' => 'Kēia ‘ao‘ao',
-'qbpageinfo' => 'Pō‘aiapili',
 'qbmyoptions' => 'Ka‘u mau ‘ao‘ao',
 'qbspecialpages' => 'Nā ‘ao‘ao kūikawā',
 
index 65845fe..b7f2e3d 100644 (file)
@@ -285,7 +285,6 @@ $messages = array(
 'qbbrowse' => 'Bouske',
 'qbedit' => 'Modifye',
 'qbpageoptions' => 'Paj sa a',
-'qbpageinfo' => 'Kontèks',
 'qbmyoptions' => 'Paj mwen yo',
 'qbspecialpages' => 'Paj espesyal',
 'faq' => 'FAQ',
index 91bc84a..0a19d2a 100644 (file)
@@ -263,7 +263,6 @@ $messages = array(
 'qbfind' => 'Constatar',
 'qbedit' => 'Redacter',
 'qbpageoptions' => 'Págine de optiones',
-'qbpageinfo' => 'Págine de information',
 'qbmyoptions' => 'Mi optiones',
 'qbspecialpages' => 'Págines special',
 'faq' => 'FAQ',
index b1a8e09..e223ec9 100644 (file)
@@ -218,7 +218,6 @@ $messages = array(
 'qbbrowse' => 'Garia',
 'qbedit' => 'Mèzi',
 'qbpageoptions' => 'Ihü nka',
-'qbpageinfo' => 'Abwátà nka',
 'qbmyoptions' => 'Ihüm',
 'qbspecialpages' => 'Ihü mkpà',
 'faq' => 'FAQ',
index 395b33c..f7ce2a7 100644 (file)
@@ -155,7 +155,6 @@ $messages = array(
 'qbbrowse' => 'БӀаргтасса',
 'qbedit' => 'Хувца',
 'qbpageoptions' => 'ОагӀува оттамаш',
-'qbpageinfo' => 'ОагӀува тохкам',
 'qbmyoptions' => 'Са оттамаш',
 'qbspecialpages' => 'ГӀулакхий оагӀувнаш',
 'faq' => 'Каст-каста хаттараш',
index ca0f058..7bb15f3 100644 (file)
@@ -234,7 +234,6 @@ $messages = array(
 'qbfind' => 'Trovez',
 'qbedit' => 'Redaktar',
 'qbpageoptions' => 'Ica pagino',
-'qbpageinfo' => 'Kuntexto',
 'qbmyoptions' => 'Mea pagini',
 'qbspecialpages' => 'Specala pagini',
 
index 5494817..1d68f6e 100644 (file)
@@ -156,7 +156,6 @@ Lef aaf dif afta pofaamin ruolbak',
 'qbbrowse' => 'Brouz',
 'qbedit' => 'Edit',
 'qbpageoptions' => 'Dis piej',
-'qbpageinfo' => 'Kantex',
 'qbmyoptions' => 'Mi piejdem',
 'qbspecialpages' => 'Peshal piejdem',
 'faq' => 'FAK',
index 017297f..575d864 100644 (file)
@@ -136,7 +136,6 @@ $messages = array(
 'qbbrowse' => 'Gennemse',
 'qbedit' => 'Redigær',
 'qbpageoptions' => 'Endstellenger før side',
-'qbpageinfo' => "Informåsje side'm",
 'qbmyoptions' => 'Miine endstellenger',
 'qbspecialpages' => 'Sonst sider',
 'faq' => 'VSF',
index 6e8a6d4..8b12cf6 100644 (file)
@@ -285,7 +285,6 @@ $messages = array(
 'qbbrowse' => "Ko'riw",
 'qbedit' => "O'zgertiw",
 'qbpageoptions' => 'Usı bet',
-'qbpageinfo' => 'Kontekst',
 'qbmyoptions' => "Menin' betlerim",
 'qbspecialpages' => 'Arnawlı betler',
 'faq' => 'KBS',
index 2a4f304..45a2262 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author ILVI
  * @author Jewbask
+ * @author Maor X
  * @author Remember the dot
  * @author Runningfridgesrule
  * @author Taichi
@@ -325,7 +326,6 @@ $messages = array(
 'qbbrowse' => 'Navigar',
 'qbedit' => 'Trocar',
 'qbpageoptions' => 'Esta hoja',
-'qbpageinfo' => 'Enformasyón de hoja',
 'qbmyoptions' => 'Mis hojas',
 'qbspecialpages' => 'Hojas especiales',
 'faq' => 'DAD',
index c5cb833..783d0f8 100644 (file)
@@ -303,6 +303,7 @@ $messages = array(
 'missingarticle-rev' => '(жуьре#: $1)',
 'internalerror' => 'КЪенепатан гъалатI',
 'internalerror_info' => 'КЪенепатан гъалатI $1',
+'filecopyerror' => 'Kopi aqudiz jezach fail "$1"  "$2" - diz.',
 'filerenameerror' => '«$1» файл  «$2» -з тIвар эхцигиз жезвач..',
 'badarticleerror' => 'И ччина и кар кьилиз акъудиз мумкин ттуш.',
 'cannotdelete-title' => ' "$1" ччин алудиз жезвач',
@@ -419,9 +420,9 @@ $messages = array(
 Квевай [[Special:Search/{{PAGENAME}}| и тlвар алай ччин]] муькуь ччинра жугъуриз,
 <span class="plainlinks"> [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналрин талукь тир кхьей затIар жугъуриз],
 ва я [{{fullurl:{{FULLPAGENAME}}|action=edit}} и тlвар алай ччин туькIуьриз жеда] </span>.',
-'noarticletext-nopermission' => 'Исятда и  ччина са текстни авач.
-Квевай [[Special:Search/{{PAGENAME}}| и тlвар алай ччин]] муькуь ччинра жугъуриз ва я
-<span class="plainlinks"> [{{fullurl: {{# Special:Log}} | page = {{FULLPAGENAMEE}}}} журналрин талукь тир кхьей затIар жугъуриз] жеда.',
+'noarticletext-nopermission' => 'Iseatda china kxhin avach.
+Kwevay [[Special:Search/{{PAGENAME}}| i twar alay chin алай]] mukiu chinra jaghuriz ak\'ni
+<span class="plainlinks"> [{{fullurl: {{# Special:Log}} | page = {{FULLPAGENAMEE}}}} jurnalrin taluq\' tir kxhey zathar jaghuriz] jeda.',
 'blocked-notice-logextract' => 'И уртах алайчIава блокарнава.
 Агъадихъ блокарунин журналдикай эхиримжи кхьинар къалурнава:',
 'previewnote' => "'''Рикlел хуьх хьи, им анжах сифтедин килигун я.'''  
index 2ff608d..03dae9f 100644 (file)
@@ -152,7 +152,6 @@ $messages = array(
 'qbbrowse' => 'Surfa',
 'qbedit' => 'Edita',
 'qbpageoptions' => 'Esta paje',
-'qbpageinfo' => 'Situa',
 'qbmyoptions' => 'Me pajes',
 'qbspecialpages' => 'Pajes spesial',
 
index adaa3c1..bd0421f 100644 (file)
@@ -235,7 +235,6 @@ süi titul dai sezziún (JavaScript)',
 'qbbrowse' => 'Sföja',
 'qbedit' => 'Mudifega',
 'qbpageoptions' => 'Opzión de la pagina',
-'qbpageinfo' => 'Infurmazión revard a la pagina',
 'qbmyoptions' => 'I mè paginn',
 'qbspecialpages' => 'Paginn special',
 'faq' => 'FAQ',
index 333e04f..15e1ead 100644 (file)
@@ -124,7 +124,6 @@ $messages = array(
 'qbbrowse' => 'Nepile',
 'qbedit' => "Hloli ye ng'i",
 'qbpageoptions' => 'Bye petulo',
-'qbpageinfo' => 'Petulo tuto',
 'qbmyoptions' => 'Zwa petulona',
 'qbspecialpages' => 'Petulo zwenti',
 'faq' => 'Alabile',
index 7b6732d..0bb810c 100644 (file)
@@ -159,7 +159,6 @@ $messages = array(
 'qbbrowse' => 'Jelajahi',
 'qbedit' => 'Sunting',
 'qbpageoptions' => 'Kaca kiye',
-'qbpageinfo' => 'Konteks kaca',
 'qbmyoptions' => 'Kaca-ne inyong',
 'qbspecialpages' => 'Kaca-kaca astamiwa',
 'faq' => 'FAQ (Pitakonan sing sering ditakokna)',
index b5f7718..79a8da4 100644 (file)
@@ -161,7 +161,6 @@ $messages = array(
 'qbbrowse' => 'Browse',
 'qbedit' => 'Suntiang',
 'qbpageoptions' => 'Laman ko',
-'qbpageinfo' => 'Konteks',
 'qbmyoptions' => 'Laman denai',
 'qbspecialpages' => 'Halaman istimewa',
 'faq' => 'FAQ',
index 5aaf7e2..df7e6c1 100644 (file)
@@ -211,7 +211,6 @@ $messages = array(
 'qbbrowse' => 'Nabegar',
 'qbedit' => 'Eiditar',
 'qbpageoptions' => 'Esta páigina',
-'qbpageinfo' => 'Cuntesto',
 'qbmyoptions' => 'Mies páiginas',
 'qbspecialpages' => 'Páiginas speciales',
 'faq' => 'FAQ',
index 56298d6..310099f 100644 (file)
@@ -191,7 +191,6 @@ $messages = array(
 'qbbrowse' => 'ရှာဖွေလှန်လှောရန်',
 'qbedit' => 'ပြင်​ဆင်​ရန်​',
 'qbpageoptions' => 'ဤစာမျက်နှာ',
-'qbpageinfo' => 'မာတိကာ',
 'qbmyoptions' => 'ကျွန်ုပ် စာမျက်နှာများ',
 'qbspecialpages' => 'အ​ထူး​စာ​မျက်​နှာ​',
 'faq' => 'မေးလေ့ရှိကြသည်များ',
index 2223760..76d388b 100644 (file)
@@ -329,7 +329,6 @@ $messages = array(
 'qbbrowse' => 'Ваномо-тееме',
 'qbedit' => 'Витнеме-петнеме',
 'qbpageoptions' => 'Те лопась',
-'qbpageinfo' => 'Косо-зярдо',
 'qbmyoptions' => 'Монь лопан',
 'qbspecialpages' => 'Башка тевень лопат',
 'faq' => 'Сеедьстэ кепедень кевкстемат',
index e0b58f5..0c32e0a 100644 (file)
@@ -271,7 +271,6 @@ $messages = array(
 'qbbrowse' => 'چأرخه‌سه‌ن',
 'qbedit' => 'دچی‌ین',
 'qbpageoptions' => 'این صفحه',
-'qbpageinfo' => 'بافت',
 'qbmyoptions' => 'مه صفحه‌ئون',
 'qbspecialpages' => 'شا صفحه‌ئون',
 'faq' => 'معمولی سوالا',
index b4b07a7..c65f0b8 100644 (file)
@@ -167,7 +167,6 @@ $messages = array(
 'qbbrowse' => 'Liū-lám',
 'qbedit' => 'Siu-kái',
 'qbpageoptions' => 'Chit ia̍h',
-'qbpageinfo' => 'Bo̍k-lo̍k',
 'qbmyoptions' => 'Goá ê ia̍h',
 'qbspecialpages' => 'Te̍k-sû-ia̍h',
 'faq' => 'Būn-tah',
index e5f674e..238bb33 100644 (file)
@@ -962,7 +962,6 @@ Det siste elementet i blokkeringsloggen er oppgjeve nedanfor:',
 * '''Firefox og Safari:''' Haldt nede ''Shift'' medan du klikkar på ''Oppdater'', eller trykk anten ''Ctrl-F5'' eller ''Ctrl-R'' (''⌘-R'' på Mac)
 * '''Google Chrome:''' Trykk ''Ctrl-Shift-R'' (''⌘-Shift-R'' på Mac)
 * '''Internet Explorer:''' Haldt nede ''Ctrl'' medan du klikkar ''Oppdater'', eller trykk ''Ctrl-F5.''
-* '''Konqueror:''' Klikk ''Oppdater'' eller trykk ''F5''. 
 * '''Opera:''' Tøm mellomlageret i ''Verktøy → Innstillingar''.",
 'usercssyoucanpreview' => "'''Tips:''' Bruk «{{int:showpreview}}»-knappen for å teste den nye CSS- eller JavaScript-koden din før du lagrar.",
 'userjsyoucanpreview' => "''Tips:''' Bruk «{{int:showpreview}}»-knappen for å teste den nye CSS- eller JavaScript-koden din før du lagrar.",
@@ -977,7 +976,7 @@ Det siste elementet i blokkeringsloggen er oppgjeve nedanfor:',
 'note' => "'''Merk:'''",
 'previewnote' => "'''Hugsa at dette berre er ei førehandsvising.'''
 Endringane dine er ikkje lagra enno!",
-'continue-editing' => 'Endra vidare',
+'continue-editing' => 'Gå til endringsområdet',
 'previewconflict' => 'Dette er ei førehandsvising av teksten i endringsboksen over, slik han vil sjå ut om du lagrar han',
 'session_fail_preview' => "'''Orsak! Endringa di kunne ikkje lagrast. Ver venleg og prøv ein gong til. Dersom det framleis ikkje går, prøv å logge deg ut og inn att.'''",
 'session_fail_preview_html' => "'''Beklagar! Endringa di kunne ikkje lagrast.'''
@@ -1822,6 +1821,7 @@ $1',
 'backend-fail-synced' => 'Fila «$1» er i ei inkonsistent stode i dei interne lagringsbaksystema',
 'backend-fail-connect' => 'Kunne ikkje kopla til filbaksystemet «$1».',
 'backend-fail-internal' => 'Ein ukjend feil oppstod i lagringsbaksystemet «$1».',
+'backend-fail-contenttype' => 'Kunne ikkje avgjera innhaldstypen til fila som skulle lagrast på «$1».',
 'backend-fail-batchsize' => 'Baksystemet vart gjeve ei gruppe med $1 {{PLURAL:$1|filoperasjon|filoperasjonar}}; grensa er $2 {{PLURAL:$2|operasjon|operasjonar}}.',
 
 # File journal errors
@@ -1853,12 +1853,13 @@ Ho kan ikkje tryggingskontrollerast.',
 'uploadstash-badtoken' => 'Utføringa av handlinga lukkast ikkje; kan henda av di endringsrettane dine har gått ut. Freista om att.',
 'uploadstash-errclear' => 'Fjerning av filene var mislykka.',
 'uploadstash-refresh' => 'Oppdater fillista',
+'invalid-chunk-offset' => 'Ugild delforskuving',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Tilgjenge avslått',
-'img-auth-nopathinfo' => 'PATH_INFO manglar.
-Filtenaren din er ikkje sett opp for å gje denne informasjonen.
-Han kan vera CGI-basert og stør ikkje img_auth.
+'img-auth-nopathinfo' => 'PATH_INFO saknar.
+Filtenaren din er ikkje sett opp for å gjeva denne informasjonen.
+Han kan vera CGI-basert og ikkje stø img_auth.
 Sjå https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'img-auth-notindir' => 'Den ynskte filstien er ikkje i den oppsette opplastingskatalogen',
 'img-auth-badtitle' => 'Kan ikkje laga ein gyldig ttitel ut frå "$1".',
@@ -2181,7 +2182,9 @@ Sjå òg [[Special:WantedCategories|ønska kategoriar]].',
 'linksearch-pat' => 'Søkemønster:',
 'linksearch-ns' => 'Namnerom:',
 'linksearch-ok' => 'Søk',
-'linksearch-text' => 'Jokerteikn som «*.wikipedia.org» kan nyttast.<br />Støtta protokollar: <code>$1</code>',
+'linksearch-text' => 'Jokerteikn som «*.wikipedia.org» kan nyttast.
+Det er påkravt med eit toppnivådomene, til dømes «*.org».<br />
+Støtta protokollar: <code>$1</code> (ikkje legg til nokon av desse i søket ditt)',
 'linksearch-line' => '$2 lenkjer til $1',
 'linksearch-error' => 'Jokerteikn kan berre nyttast føre tenarnamnet.',
 
@@ -2313,25 +2316,28 @@ Om du seinare vil fjerne sida frå overvakingslista, klikk på «Fjern overvakin
 
 $NEWPAGE
 
-Bidragsytaren sitt endringssamandrag: $PAGESUMMARY $PAGEMINOREDIT
+Endringssamandraget var: $PAGESUMMARY $PAGEMINOREDIT
 
-Du kan kontakte bidragsytaren gjennom:
-e-post: $PAGEEDITOR_EMAIL , eller
+Kontakta brukaren:
+e-post: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Du får ikkje fleire endringsmeldingar om denne sida før du har vitja henne på nytt.
-Du kan også tilbakestille endringsmeldingsstatus for alle sidene på overvakingslista di.
+Du får ikkje fleire endringsvarsel minder du vitjar sida på nytt.
+Du kan dessutan nullstilla varselflagga for alle sidene på overvakingslista di.
 
-             Helsing det venlege {{SITENAME}}-meldingssystemet ditt
+Helsing det venlege meldingssystemet ditt for {{SITENAME}}
 
 --
-For å endre innstillingane for overvakingslista di, gå til
+For å endra innstillingane dine for e-postvarsling, vitja
+{{canonicalurl:{{#special:Preferences}}}}
+
+For å endra innstillingane for overvakingslista di, vitja
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-For hjelp og meir informasjon:
+For å fjerna sita frå overvakingslista di, vitja
 $UNWATCHURL
 
-Tilbakemeldingar og anna hjelp:
+Attendemelding og hjelp:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
@@ -2759,6 +2765,7 @@ Målsida «[[:$1]]» finst alt. Vil du sletta henne for å gjeva rom for flyttin
 'immobile-target-namespace-iw' => 'Interwikilenkja er ikkje eit gyldig mål for flytting av sider.',
 'immobile-source-page' => 'Denne sida kan ikkje flyttast.',
 'immobile-target-page' => 'Kan ikkje flytte til det målnamnet.',
+'bad-target-model' => 'Det ynskte målet nyttar ein annan innhaldsmodell. Kan ikkje konvertera frå $1 til $2.',
 'imagenocrossnamespace' => 'Kan ikkje flytte bilete til andre namnerom enn biletnamnerommet',
 'nonfile-cannot-move-to-file' => 'Kan ikkje flytta ikkje-filer til filnamnerommet.',
 'imagetypemismatch' => 'Den nye filendinga høver ikkje til filtypen',
@@ -2888,6 +2895,7 @@ Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//trans
 'javascripttest-pagetext-frameworks' => 'Vel eitt av dei fylgjande utrøyningsrammeverka: $1',
 'javascripttest-pagetext-skins' => 'Vel ei drakt som utrøyningane skal køyrast med:',
 'javascripttest-qunit-intro' => 'Sjå [$1 utrøyningsdokumentasjon] på mediawiki.org.',
+'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit testsuite',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Brukarsida di',
@@ -3291,14 +3299,19 @@ Andre er gøymde som standard.
 'exif-source' => 'Kjelde',
 'exif-editstatus' => 'Den redaksjonelle stoda til biletet',
 'exif-urgency' => 'Prioritet',
+'exif-locationdest' => 'Avbilda stad',
+'exif-locationdestcode' => 'Koden til staden som er avbilda',
 'exif-objectcycle' => 'Tid på dagen mediet er meint for',
 'exif-contact' => 'Kontaktinformasjon',
 'exif-writer' => 'Forfattar',
 'exif-languagecode' => 'Språk',
 'exif-iimversion' => 'IIM-versjon',
 'exif-iimcategory' => 'Kategori',
+'exif-iimsupplementalcategory' => 'Tilleggskategoriar',
 'exif-datetimeexpires' => 'Skal ikkje nyttast etter',
 'exif-datetimereleased' => 'Frigjeve',
+'exif-originaltransmissionref' => 'Opphavleg stadkode for overføring',
+'exif-identifier' => 'Kjennemerke',
 'exif-lens' => 'Objektiv',
 'exif-serialnumber' => 'Serienummeret på kameraet',
 'exif-cameraownername' => 'Eigar av kameraet',
@@ -3731,9 +3744,8 @@ Du kan òg [[Special:EditWatchlist|nytte standardverktøyet]].',
 'filepath' => 'Filsti',
 'filepath-page' => 'Fil:',
 'filepath-submit' => 'Gå',
-'filepath-summary' => 'Denne spesialsida gjev den fullstendige stien for ei fil. Bilete vert vist i oppløysing; andre filtypar vert starta direkte i dei tilknytte programma sine.
-
-Skriv inn filnamnet utan «{{ns:file}}:»-prefikset.',
+'filepath-summary' => 'Denne spesialsida svarar med den fullstendige stigen til ei fil.
+Bilete vert viste i full oppløysing, andre filtypar vert starta direkte i dei tilknytte programma sine.',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Søk etter duplikatfiler',
@@ -3832,10 +3844,14 @@ Skriv inn filnamnet utan «{{ns:file}}:»-prefikset.',
 'logentry-delete-delete' => '$1 sletta sida $3',
 'logentry-delete-restore' => '$1 attoppretta sida $3',
 'logentry-delete-event' => '$1 endra synlegdomen av {{PLURAL:$5|éi loggoppføring|$5 loggoppføringar}} på $3: $4',
-'logentry-delete-revision' => '$1 endra synlegdomen av {{PLURAL:$5|éin versjon|$5 versjonar}} på sida $3: $4',
-'logentry-delete-event-legacy' => '$1 endra synlegdomen av loggoppføringar på $3',
-'logentry-delete-revision-legacy' => '$1 endra synlegdomen av versjonar på sida $3',
+'logentry-delete-revision' => '$1 endra synlegdomen til {{PLURAL:$5|éin versjon|$5 versjonar}} på sida $3: $4',
+'logentry-delete-event-legacy' => '$1 endra synlegdomen til loggoppføringar på $3',
+'logentry-delete-revision-legacy' => '$1 endra synlegdomen til versjonar på sida $3',
 'logentry-suppress-delete' => '$1 gøymde sida $3',
+'logentry-suppress-event' => '$1 endra i løyndom synlegdomen til {{PLURAL:$5|éi logghending|$5 logghendingar}} på $3: $4',
+'logentry-suppress-revision' => '$1 endra i løyndom synlegdomen til {{PLURAL:$5|éin versjon|$5 versjonar}} på sida $3: $4',
+'logentry-suppress-event-legacy' => '$1 endra i løyndom synlegdomen til logghendingar på $3',
+'logentry-suppress-revision-legacy' => '$1 endra i løyndom synlegdomen til versjonar på sida $3',
 'revdelete-content-hid' => 'innhald gøymt',
 'revdelete-summary-hid' => 'endringsamandrag gøymt',
 'revdelete-uname-hid' => 'brukarnamn gøymt',
index 7943edb..5d5adb7 100644 (file)
@@ -147,7 +147,6 @@ $messages = array(
 'qbfind' => 'Finne',
 'qbedit' => 'Ennere',
 'qbpageoptions' => 'Des Blatt',
-'qbpageinfo' => 'Daade vun dem Blatt',
 'qbmyoptions' => 'Mei Bledder',
 'qbspecialpages' => 'Besunnere Bledder',
 'faq' => 'FAQ',
index 8fd0351..77d4823 100644 (file)
@@ -129,7 +129,7 @@ $messages = array(
 'otherlanguages' => 'In annere Sproche',
 'redirectedfrom' => '(Wairrerglaidet vun $1)',
 'redirectpagesub' => 'Wairerlaidungssaid',
-'lastmodifiedat' => 'Die Said isch zum ledschde Mol gänneret woore am $1, am $2.',
+'lastmodifiedat' => 'Die Said isch zum ledschde Mol gänneret worre am $1, am $2.',
 'viewcount' => 'Die Seid isch bis jetzerd {{PLURAL:$1|$1|$1}} mol uffgerufe worre.',
 'jumpto' => 'Spring zu:',
 'jumptonavigation' => 'Navigation',
@@ -187,7 +187,7 @@ $messages = array(
 # General errors
 'missing-article' => 'De Text fer „$1“ $2 isch in de Datebank nit gfunne worre.
 
-Normalerwais hääßt des, dass die Said glescht woore isch.
+Normalerwais hääßt des, dass die Said gleschd worre isch.
 
 Wenn s des nit isch, hoscht villaicht en Fehler in de Datebank gfunne.
 Bitte meld des an e [[Special:ListUsers/sysop|Adminischtrator]], un gebb d URL dezu aa.',
@@ -260,7 +260,7 @@ du gebbscht do au zu, dass Du des selwerscht gschriwwe hoscht orrer vun ere effe
 'template-semiprotected' => '(halb-gschitzt)',
 'hiddencategories' => 'Die Said ghert zu {{PLURAL:$1|1 versteckelte Kategorie|$1 versteckelte Kategorie}}:',
 'permissionserrorstext-withaction' => 'Du därfscht nid $2, aus {{PLURAL:$1|dem Grund|denne Grind}}:',
-'moveddeleted-notice' => 'Die Said isch glescht worre.
+'moveddeleted-notice' => 'Die Said isch gleschd worre.
 De Leschaidrach fa die Said isch do unne als Kwell aagewwe.',
 
 # History pages
@@ -357,7 +357,7 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|Ännerung|Ännerunge}}',
-'recentchanges' => 'Was zuletschd gemacht worre isch',
+'recentchanges' => 'Was zuletschd gemachd worre isch',
 'recentchanges-legend' => 'Optione vun de Aazaich',
 'recentchanges-feed-description' => 'Di letschte Ännerunge vun {{SITENAME}} in des Feed aigewwe.',
 'rcnote' => "Aagezaicht {{PLURAL:$1|werd '''1''' Ännerung|werre die letschte '''$1''' Ännerunge}} {{PLURAL:$2|vum letschte Dach|in de letschte '''$2''' Dache}} (Stand: $4, $5)",
@@ -681,7 +681,7 @@ Du kannscht awwer de Quelltext aagucke',
 'tooltip-n-randompage' => 'E zufälliche Said lade',
 'tooltip-n-help' => 'De Ort zum rausfinne',
 'tooltip-t-whatlinkshere' => 'Lischt vun alle Wikisaide, wu do her verlinkt sinn',
-'tooltip-t-recentchangeslinked' => 'Letschte Ännerunge in Saide, wu vun do verlinkt sin',
+'tooltip-t-recentchangeslinked' => 'Letschde Ännerunge in Saide, wu vun do verlinkt sin',
 'tooltip-feed-rss' => 'RSS feed fer die Said',
 'tooltip-feed-atom' => 'Atom feed fer die Said',
 'tooltip-t-contributions' => 'Die letschte Baidräch vun däm Benutzer aagucke',
index bb5be88..8359a57 100644 (file)
@@ -725,7 +725,7 @@ Sòn a l'é normalment causà da l'andèje dapress a na vej liura stòrica a na
 'note' => "'''NÒTA:'''",
 'previewnote' => "'''Che a ten-a present che costa-sì a l'é mach na preuva.'''
 Ij sò cambi a son anco' pa stàit salvà!",
-'continue-editing' => "Và a l'area ëd modìfica",
+'continue-editing' => 'Andé a la zòna ëd modìfica',
 'previewconflict' => "Costa preuva a-j mostra ël test dl'artìcol ambelessì dzora. Se a sërn dë salvelo, a l'é parèj che a lo s-ciairëran ëdcò tuti j'àutri Utent.",
 'session_fail_preview' => "'''Darmagi! I l'oma pa podù processé soa modìfica per via che a son përdusse për la stra ij dat ëd session.
 Për piasì che a preuva n'àutra vira. Se a dovèissa mai torna riveje sossì, che a preuva a seurte dal sistema e peuj torna a rintré.'''",
@@ -3219,7 +3219,7 @@ J'àutri a saran stërmà coma stàndard.
 'exif-flash-return-0' => "gnun ëstroboscòpi a dà andaré na fonsion d'artrovament",
 'exif-flash-return-2' => "lë stoboscòpi a arleva gnun-a lus d'artorn",
 'exif-flash-return-3' => "lë stroboscòpi a l'ha arlevà n'artorn ëd lus",
-'exif-flash-mode-1' => 'scat dël flash sforsà',
+'exif-flash-mode-1' => 'lus dla lòsna obligatòria',
 'exif-flash-mode-2' => 'eliminassion dël flash sforsà',
 'exif-flash-mode-3' => 'manera automàtica',
 'exif-flash-function-1' => 'Gnente fonsion flash',
index d7331b9..6c2088e 100644 (file)
@@ -160,7 +160,6 @@ $messages = array(
 'qbbrowse' => 'Πλοήγησην',
 'qbedit' => 'Άλλαξον',
 'qbpageoptions' => 'Ατή η σελίδαν',
-'qbpageinfo' => 'Συμφραζόμενα',
 'qbmyoptions' => "Τ' εμά τα σελίδας",
 'qbspecialpages' => 'Ειδικά σελίδας',
 'faq' => 'Πολλά ερωτήσεις (FAQ)',
index 82cf299..3fea1f1 100644 (file)
@@ -1650,6 +1650,10 @@ Parameters:
 Parameters
 * $1 - the number of items in the list following the message, for PLURAL.
 * $2 - the user name, for GENDER.',
+'userrights-groupsmember-type' => '{{optional}}
+Parameters:
+* $1 is list of group names.
+* $2 is list of group member names. Used with labels {{msg-mw|userrights-groupsmember}} and {{msg-mw|userrights-groupsmember-auto}}',
 'userrights-groups-help' => 'Instructions displayed on [[Special:UserRights]]. Parameters:
 * $1 is a username - optional, can be used for GENDER',
 'userrights-reason' => 'Text beside log field when editing user groups
@@ -2650,7 +2654,8 @@ See also {{msg-mw|listgrouprights-addgroup-all}}.',
 'emailpage' => "Title of special page [[Special:EmailUser]], when it is the destination of the sidebar link {{msg-mw|Emailuser}} on a user's page.",
 'emailpagetext' => 'This is the text that is displayed above the e-mail form on [[Special:EmailUser]].
 
-Special:EmailUser appears when you click on the link "E-mail this user" in the sidebar, but only if there is an e-mail address in the recipient\'s user preferences. If there isn\'t then the message [[Mediawiki:Noemailtext]] will appear instead of Special:EmailUser.',
+Special:EmailUser appears when you click on the link "E-mail this user" in the sidebar, but only if there is an e-mail address in the recipient\'s user preferences. If there isn\'t then the message [[Mediawiki:Noemailtext]] will appear instead of Special:EmailUser. Parameters:
+* $1 can be used for GENDER.',
 'defemailsubject' => 'The default subject of EmailUser emails. Parameters:
 * $1 is the username of the user sending the email and can be used for GENDER.',
 'usermaildisabled' => 'Caption for an error message ({{msg-mw|Usermaildisabledtext}}) shown when the user-to-user e-mail feature is disabled on the wiki (see [[mw:Manual:$wgEnableEmail]], [[mw:Manual:$wgEnableUserEmail]]).',
@@ -3540,6 +3545,7 @@ See also {{msg-mw|Anonuser}} and {{msg-mw|Siteusers}}.',
 'pageinfo-default-sort' => 'The key by which the page is sorted in categories by default.',
 'pageinfo-length' => 'પૃષ્ઠની લંબાઇ બાઇટમાં',
 'pageinfo-article-id' => 'The numeric identifier of the page.',
+'pageinfo-language' => 'Language in which the page content is written.',
 'pageinfo-robot-policy' => 'The search engine status of the page, e.g. "marked as index".',
 'pageinfo-robot-index' => 'An indication that the page is indexable.',
 'pageinfo-robot-noindex' => 'An indication that the page is not indexable.',
@@ -4695,6 +4701,7 @@ This is being used in [[Special:Version]], preceeding the subversion revision nu
 *$1: the current year
 *$2: a list of selected MediaWiki authors',
 'version-poweredby-others' => 'Used at the very end of {{msg-mw|version-poweredby-credits}} on [[Special:Version]]. First, there\'s a long list of selected MediaWiki authors, then the word "and" (from {{msg-mw|and}}) follows and then this translation, which is supposed to credit the many other people than developer helping with MediaWiki.',
+'version-credits-summary'               => 'Summary of the [[Special:Version/Credits]] sub page, which lists all developers etc. who contributed to MediaWiki. Shown at the top.',
 'version-license-info' => '[[wikipedia:GNU GPL|GNU GPL]] notice shown at [[Special:Version]]. See //www.gnu.org/licenses/old-licenses/gpl-2.0-translations.html for available translations.',
 'version-software-product' => 'Shown in [[Special:Version]]',
 'version-software-version' => '{{Identical|Version}}',
index ae3564f..38deb96 100644 (file)
@@ -163,7 +163,6 @@ $messages = array(
 'qbbrowse' => 'Maskana',
 'qbedit' => 'Killkana',
 'qbpageoptions' => 'Pankapak akllanakuna',
-'qbpageinfo' => 'Pankamanta willaykuna',
 'qbmyoptions' => 'Ñukapak pankakuna',
 'qbspecialpages' => 'mans shukkunashina pankakuna',
 'faq' => 'Ashtawan tapushkaka tapunakuna',
index 16f54fa..9cc078e 100644 (file)
@@ -157,7 +157,6 @@ $messages = array(
 'qbbrowse' => 'Sföja',
 'qbedit' => 'Mudèfica',
 'qbpageoptions' => 'Upziòn dla pàgina',
-'qbpageinfo' => 'Infurmaziòn sora la pàgina',
 'qbmyoptions' => 'Al mi pàgin',
 'qbspecialpages' => 'Pàgin particulèri',
 'faq' => 'Question frequenti',
index 54d865e..35e36ed 100644 (file)
@@ -935,13 +935,36 @@ Ti pos vesair quest diff; detagls pon vegnir chattads en il [{{fullurl:{{#Specia
 'logdelete-selected' => "'''{{PLURAL:$1|Elements dal log tschernì|Elements dal log tschernids}}:'''",
 'revdelete-text' => "'''Versiuns ed ocurrenzas stizzadas cumparan era vinavant en la cronologia ed en ils protocols, dentant èn parts dal cuntegn betg accessibels al public.'''
 Auters administraturs sin {{SITENAME}} vegnan tuttina ad avair access al cuntegn zuppentà e pon restaurar puspè la pagina, sch'i na vegnan betg definidas restricziuns supplementaras.",
+'revdelete-confirm' => 'Confermescha che ti vuls far quai, che ti chapeschas las consequenzas e che ti fas quai en accordanza cun [[{{MediaWiki:Policy-url}}|las directivas]].',
+'revdelete-suppress-text' => "Ti duessas '''be''' supprimer en quests cas: 
+* Infurmaziuns offendentas
+* Infurmaziuns persunalas deplazzadas
+*: ''Adressas e numers da telefon, numers d'AVS, etc.''",
+'revdelete-legend' => 'Definir restricziuns da la visibilitad',
+'revdelete-hide-text' => 'Zuppetar il text da la versiun',
+'revdelete-hide-image' => 'Zuppentar il cuntegn da la datoteca',
+'revdelete-hide-name' => "Zuppentar l'acziun ed la destinaziun",
+'revdelete-hide-comment' => 'Zuppentar la resumaziun da la midada',
+'revdelete-hide-user' => "Zuppentar il num d'utilisader/l'adressa IP da l'autur",
+'revdelete-hide-restricted' => 'Supprimer las datas per administraturs sco per auters',
+'revdelete-radio-same' => '(na betg midar)',
 'revdelete-radio-set' => 'Gea',
 'revdelete-radio-unset' => 'Na',
+'revdelete-suppress' => 'Supprimer il motiv per administraturs sco per auters',
+'revdelete-unsuppress' => 'Allontanar las restricziuns per versiuns restauradas',
 'revdelete-log' => 'Motiv:',
+'revdelete-submit' => 'Applitar a {{PLURAL:$1|la versiun tschernida|las versiuns tschernidas}}',
+'revdelete-success' => "'''Actualià cun success la visibilitad da la versiun.'''",
+'revdelete-failure' => "'''Betg pussaivel da midar la visibilitad da la versiun:'''
+$1",
+'logdelete-success' => "'''Definì cun success la visibilitad dal protocol.'''",
+'logdelete-failure' => "'''Betg pussaivel da midar la visibilitad dal protocol:'''
+$1",
 'revdel-restore' => 'midar la visibilitad',
 'revdel-restore-deleted' => 'versiuns stizzadas',
 'revdel-restore-visible' => 'versiuns visiblas',
 'pagehist' => 'Istorgia da las versiuns',
+'deletedhist' => 'Cronologia da stizzar',
 'revdelete-otherreason' => 'Auter/ulteriur motiv:',
 'revdelete-reasonotherlist' => 'Auter motiv',
 'revdelete-edit-reasonlist' => 'Modifitgar ils motivs per stizzar',
@@ -2548,9 +2571,10 @@ Probablamien è quai capità pervia dad in link ad ina pagina externa ch'è sin
 
 # Info page
 'pageinfo-title' => 'Infurmaziuns per "$1"',
-'pageinfo-header-edits' => 'Midadas',
+'pageinfo-header-basic' => 'Infurmaziuns da basa',
+'pageinfo-header-edits' => 'Cronologia da las midadas',
 'pageinfo-views' => 'Dumber da visitas',
-'pageinfo-watchers' => 'Dumber dad observaturs',
+'pageinfo-watchers' => 'Dumber dad observaturs da la pagina',
 'pageinfo-firstuser' => 'Creatur da la pagina',
 'pageinfo-firsttime' => 'Data da la creaziun da la pagina',
 'pageinfo-lastuser' => 'Ultima midada da',
index 5e034bc..bc645bd 100644 (file)
@@ -195,7 +195,6 @@ $messages = array(
 'qbbrowse' => 'Nàviga',
 'qbedit' => 'Acontza',
 'qbpageoptions' => 'Possibilidades de sa pàgina',
-'qbpageinfo' => 'Cuntestu de sa pàgina',
 'qbmyoptions' => 'Is preferèntzias meas',
 'qbspecialpages' => 'Pàginas spetziales',
 'faq' => 'Pregontas/Respostas (FAQ)',
index 6abfc5a..3b89821 100644 (file)
@@ -133,7 +133,6 @@ $messages = array(
 'qbbrowse' => 'Quetzexal',
 'qbedit' => 'Ticpatlöx',
 'qbpageoptions' => 'Jan páhina',
-'qbpageinfo' => 'Contextua',
 'qbmyoptions' => 'Hepáhinám',
 'qbspecialpages' => 'Páhinám extravám',
 'faq' => 'Cocmíiit cmaa',
index 7cb6512..602a15e 100644 (file)
@@ -157,7 +157,6 @@ $messages = array(
 'qbbrowse' => 'Cabba',
 'qbedit' => 'Sbadl',
 'qbpageoptions' => 'Tasnat ad',
-'qbpageinfo' => 'Context',
 'qbmyoptions' => 'Tisnatin inu',
 'qbspecialpages' => 'Tisnatin timzlay',
 'faq' => 'Isqsitn li bdda tsutulnin',
index 9918087..e419c7a 100644 (file)
@@ -279,7 +279,6 @@ $messages = array(
 'qbbrowse' => 'Browse',
 'qbedit' => 'Kenki',
 'qbpageoptions' => 'A papira disi',
-'qbpageinfo' => 'Abra a papira',
 'qbmyoptions' => 'Mi papira',
 'qbspecialpages' => 'Spesrutu papira',
 'faq' => 'FAQ (Sani di ben aksi furu)',
index ecb1d83..4912779 100644 (file)
@@ -154,7 +154,6 @@ $messages = array(
 'qbbrowse' => 'ಬ್ರೌಸ್',
 'qbedit' => 'ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
 'qbpageoptions' => 'ಈ ಪುಟ',
-'qbpageinfo' => 'ಸನ್ನಿವೇಶ',
 'qbmyoptions' => 'ಎನ್ನ ಪುಟೊಲು',
 'qbspecialpages' => 'ವಿಶೇಷ ಪುಟೊಲು',
 'faq' => 'ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು',
index 48da335..89c3827 100644 (file)
@@ -264,7 +264,6 @@ $messages = array(
 'qbbrowse' => 'Дијә кардеј',
 'qbedit' => 'Сәрост кардеј',
 'qbpageoptions' => 'Ым сәһифә',
-'qbpageinfo' => 'Мәзмун.',
 'qbmyoptions' => 'Чымы сәһифон',
 'qbspecialpages' => 'Хысусијә сәһифон',
 'faq' => 'РАП',
index f585128..df0a50b 100644 (file)
@@ -588,9 +588,9 @@ $1',
 'youhavenewmessages' => 'Yeni $1 var ($2).',
 'newmessageslink' => 'mesajınız',
 'newmessagesdifflink' => 'son değişiklik',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başka bir kullanıcıdan|$3 kullanıcıdan}} yeni $1 var. ($2)',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başka bir kullanıcıdan|$3 kullanıcılardan}} $1 var. ($2)',
 'youhavenewmessagesmanyusers' => 'Birçok kullanıcıdan $1 var. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|yeni mesaj|yeni mesaj}}',
+'newmessageslinkplural' => '{{PLURAL:$1|yeni mesajınız|yeni mesajlarınız}}',
 'newmessagesdifflinkplural' => 'son {{PLURAL:$1|değişiklik|değişiklikler}}',
 'youhavenewmessagesmulti' => "$1'de yeni mesajınız var.",
 'editsection' => 'düzenle',
@@ -1837,7 +1837,10 @@ Eğer sorun tekrarlanırsa, bir [[Special:ListUsers/sysop|hizmetli]] ile temasa
 'backend-fail-invalidpath' => '"$1" geçerli bir depolama yolu değil.',
 'backend-fail-delete' => '"$1" dosyası silinemedi.',
 'backend-fail-alreadyexists' => '"$1" dosyası zaten mevcut.',
+'backend-fail-copy' => '"$1" dosyası, "$2" dosyasına kopyalanamadı.',
+'backend-fail-move' => '"$1" dosyası, "$2" dosyasına taşınamadı.',
 'backend-fail-opentemp' => 'Geçici dosya açılamadı.',
+'backend-fail-writetemp' => 'Geçici dosya oluşturulamadı.',
 'backend-fail-closetemp' => 'Geçici dosya kapanamadı.',
 'backend-fail-read' => '$1 dosyası okunamadı.',
 'backend-fail-create' => '$1 dosyası yazılamadı.',
@@ -3021,10 +3024,13 @@ Geçici dosya kayıp.',
 'pageinfo-firsttime' => 'Sayfa oluşturulma tarihi',
 'pageinfo-lastuser' => 'En son düzenleyici',
 'pageinfo-lasttime' => 'Son düzenleme tarihi',
-'pageinfo-edits' => 'Değişiklik sayısı',
+'pageinfo-edits' => 'Düzenleme sayısı',
 'pageinfo-authors' => 'Farklı yazar sayısı',
+'pageinfo-recent-edits' => 'Son zamanlardaki düzenlemeler (son $1)',
 'pageinfo-recent-authors' => 'Farklı yazarların son sayısı',
 'pageinfo-magic-words' => 'Sihirli {{PLURAL:$1|kelimeler|kelimeler}} ($1)',
+'pageinfo-hidden-categories' => 'Gizli {{PLURAL:$1|kategori|kategoriler}} ($1)',
+'pageinfo-templates' => 'Görüntülenen {{PLURAL:$1|şablon|şablonlar}} ($1)',
 'pageinfo-toolboxlink' => 'Sayfa bilgisi',
 'pageinfo-redirectsto' => 'Yönlendirilen',
 'pageinfo-redirectsto-info' => 'bilgi',
index 45cecda..2ff42ce 100644 (file)
@@ -138,7 +138,6 @@ $messages = array(
 'qbfind' => 'Kuma',
 'qbedit' => 'Lulamisa',
 'qbpageoptions' => 'Tluka leri',
-'qbpageinfo' => 'mongo',
 'qbmyoptions' => 'Matluka ya mina',
 'qbspecialpages' => 'Matluka yohlawuleka',
 'faq' => 'FAQ',
index ea2fc37..8c36d23 100644 (file)
@@ -355,7 +355,6 @@ $messages = array(
 'qbbrowse' => 'Карау',
 'qbedit' => 'Үзгәртү',
 'qbpageoptions' => 'Бу бит',
-'qbpageinfo' => 'Бит турында мәгълүматлар',
 'qbmyoptions' => 'Битләрем',
 'qbspecialpages' => 'Махсус битләр',
 'faq' => 'ЕБС',
index 57755f7..5967e94 100644 (file)
@@ -237,7 +237,6 @@ $messages = array(
 'qbbrowse' => 'Qaraw',
 'qbedit' => 'Üzgärtü',
 'qbpageoptions' => 'Bu bit',
-'qbpageinfo' => 'Bit turında mäğlümatlar',
 'qbmyoptions' => 'Bitlärem',
 'qbspecialpages' => 'Maxsus bitlär',
 'faq' => 'YBS',
index 0dbd2cd..cc189ae 100644 (file)
@@ -184,7 +184,6 @@ $messages = array(
 'qbbrowse' => 'تصفّح',
 'qbedit' => 'ترمیم',
 'qbpageoptions' => 'صفحۂ ہٰذا',
-'qbpageinfo' => 'مفہوم',
 'qbmyoptions' => 'میرے صفحات',
 'qbspecialpages' => 'خاص صفحات',
 'faq' => 'معلوماتِ عامہ',
@@ -233,7 +232,7 @@ $messages = array(
 'unprotectthispage' => 'اِسے صفحے کی تحفظ تبدیل کریں',
 'newpage' => 'نیا صفحہ',
 'talkpage' => 'اس صفحہ پر تبادلۂ خیال کریں',
-'talkpagelinktext' => 'گفتگو',
+'talkpagelinktext' => 'تبادلۂ خیال',
 'specialpage' => 'خصوصی صفحہ',
 'personaltools' => 'ذاتی اوزار',
 'postcomment' => 'اگلا حصّہ',
@@ -320,7 +319,7 @@ $1',
 'site-rss-feed' => '$1 آر.ایس.ایس فیڈ',
 'site-atom-feed' => '$1 اٹوم فیڈ',
 'page-rss-feed' => '"$1" آر.ایس.ایس فیڈ',
-'page-atom-feed' => '"$1" اٹوم فیڈ',
+'page-atom-feed' => '"$1" اٹوم خورد',
 'feed-atom' => 'اٹوم',
 'feed-rss' => 'آر ایس ایس',
 'red-link-title' => '$1 (صفحہ موجود نہیں)',
@@ -977,7 +976,7 @@ HTML tags جانچئے.',
 'minoreditletter' => 'م',
 'newpageletter' => 'نیا ..',
 'boteditletter' => ' خودکار',
-'rc-enhanced-expand' => 'تÙ\81صÛ\8cÙ\84ات Ø¯Ù\90کھاؤ (JavaScript Ú\86اÛ\81ئÛ\92)',
+'rc-enhanced-expand' => 'تÙ\81صÛ\8cÙ\84ات Ø¯Ù\90کھائÛ\8cÚº (JavaScript Ø¯Ø±Ú©Ø§Ø±)',
 'rc-enhanced-hide' => 'تفصیلات چھپائیے',
 
 # Recent changes linked
@@ -1084,6 +1083,7 @@ HTML tags جانچئے.',
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|لکمہ|لکمہ جات}}',
 'ncategories' => '{{PLURAL:$1|زمرہ|زمرہ جات}} $1',
+'nmembers' => '{{PLURAL:$1|رکن|اراکین}}',
 'lonelypages' => 'يتيم صفحات',
 'lonelypagestext' => 'مندرجہ ذیل صفحات وہ صفحات ہیں جنھیں اس وکی میں موجود صفحوں سے کوئی ربط حاصل نہیں ہوپارہا۔',
 'uncategorizedpages' => 'بے زمرہ صفحات',
@@ -1260,9 +1260,11 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'linkshere' => "'''[[:$1]]''' سے درج ذیل صفحات مربوط ہیں:",
 'nolinkshere' => "'''[[:$1]]''' سے کوئی روابط نہیں۔",
 'isredirect' => 'لوٹایا گیا صفحہ',
+'istemplate' => 'شامل شدہ',
 'isimage' => 'ربطِ ملف',
 'whatlinkshere-links' => 'روابط',
 'whatlinkshere-hideredirs' => 'رجوع مکررات $1',
+'whatlinkshere-hidetrans' => 'تضمینات',
 'whatlinkshere-hidelinks' => 'روابط $1',
 'whatlinkshere-hideimages' => 'روابطِ تصویر $1',
 'whatlinkshere-filters' => 'فلٹرذ',
@@ -1342,7 +1344,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'tooltip-pt-mytalk' => 'آپ کا صفحۂ گفتگو',
 'tooltip-pt-preferences' => 'آپ کی ترجیحات',
 'tooltip-pt-watchlist' => 'اُن صفحات کی فہرست جن کی تبدیلیاں آپ کی زیرِنظر ہیں',
-'tooltip-pt-mycontris' => 'آپ Ú©Û\92 Ù\85ساÛ\81Ù\85ات کی فہرست',
+'tooltip-pt-mycontris' => 'آپ Ú©Û\8c Ø´Ø±Ø§Ú©ت کی فہرست',
 'tooltip-pt-login' => 'آپ کیلئے داخلِ نوشتہ ہونا اچھا ہے؛ تاہم، یہ ضروری نہیں',
 'tooltip-pt-logout' => 'خارجِ نوشتہ ہوجائیں',
 'tooltip-ca-talk' => 'مضمون بارے تبادلۂ خیال',
@@ -1409,6 +1411,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'nextdiff' => 'صفحہ کا نام:',
 
 # Media information
+'file-info-size' => '
+$1 × $2 عکصر (پکسلز)، حجم ملف: $3، MIME قسم: $4',
 'file-nohires' => 'اس سے بڑی تصمیم دستیاب نہیں۔',
 'show-big-image' => 'مکمل تصمیم',
 
index 0b31e31..24212b3 100644 (file)
@@ -159,7 +159,6 @@ $messages = array(
 'qbbrowse' => '浏览',
 'qbedit' => '编辑',
 'qbpageoptions' => '迭只页面',
-'qbpageinfo' => '上下文',
 'qbmyoptions' => '我个选项',
 'qbspecialpages' => '特殊页面',
 'faq' => 'FAQs',
index c5ef036..1af4da6 100644 (file)
@@ -199,7 +199,6 @@ $messages = array(
 'qbbrowse' => 'Гүүһәд хәләх',
 'qbedit' => 'Чиклх',
 'qbpageoptions' => 'Тер халх',
-'qbpageinfo' => 'Халхин туск',
 'qbmyoptions' => 'Тана халхс',
 'qbspecialpages' => 'Көдлхнә халхс',
 'faq' => 'Юм би',
index ae6ff8e..d15992a 100644 (file)
@@ -126,7 +126,6 @@ $messages = array(
 'qbfind' => 'დოგორი',
 'qbedit' => 'რედაქტირება',
 'qbpageoptions' => 'თე ხასჷლა',
-'qbpageinfo' => 'კონტექსტი',
 'qbmyoptions' => 'ჩქიმი ხასჷლეფი',
 'qbspecialpages' => 'გჷშაკერძაფილი ხასჷლეფი',
 'faq' => 'ბხშირი კითხვეფი',
index 15a3e41..cedfb0b 100644 (file)
@@ -888,7 +888,7 @@ $2
 'note' => "'''באמערקונג:'''",
 'previewnote' => "'''געדענקט אז דאס איז נאָר אין אַ פֿאָרויסיקע ווייזונג.'''
 אייערע ענדערונגען זענען נאָך נישט געהיט!",
-'continue-editing' => 'רע×\93×\90ק×\98×\99ר×\9f ×\95×\95ײַ×\98ער',
+'continue-editing' => '×\90ר×\99×\91ער ×¦×\95×\9d ×¨×¢×\93×\90ק×\98×\99ר×\9f ×¤Ö¿×¢×\9c×\93',
 'previewconflict' => 'די פֿאראויסיגע ווייזונג רעפלעקטירט דעם טעקסט און דער אויבערשטע טעקסט ענדערונג אָפטיילונג וויאזוי דאס וועט אויסזען אויב וועט איר דאס אָפהיטן.',
 'session_fail_preview' => "'''אנטשולדיגט! מען האט נישט געקענט פראצעסירן אייער ענדערונג צוליב א פארלוסט פון סעסיע דאטע. ביטע פרובירט נאכאמאל. אויב ס'ארבעט נאך אלס ניט, פרובירט [[Special:UserLogout|ארויסלאגירן]] און זיך צוריק אריינלאגירן.",
 'session_fail_preview_html' => "''''''אַנטשולדיקט! מיר קענען נישט פּראָצעסירן אײַער ענדערונג צוליב א פֿאַרלוסט פֿון סעסיע דאַטע.''''''
index 558778d..ae6d64e 100644 (file)
@@ -595,12 +595,12 @@ $1',
 # General errors
 'error' => '错误',
 'databaseerror' => '数据库错误',
-'dberrortext' => '发生资料库查询语法错误。
\8f¯è\83½æ\98¯ç\94±äº\8e软ä½\93自身的错误所引起。
-最后一次资料库查询指令是:
+'dberrortext' => '发生数据库查询语法错误。
\8f¯è\83½æ\98¯ç\94±äº\8e软件自身的错误所引起。
+最后一次数据库查询指令是:
 <blockquote><code>$1</code></blockquote>
-来自于函数 "<code>$2</code>"
-数据库返回错误 "<samp>$3: $4</samp>"。',
+来自于函数“<code>$2</code>”
+数据库返回错误“<samp>$3: $4</samp>”。',
 'dberrortextcl' => '发生了数据库查询语法错误。最后一次数据库查询指令是:
 “$1”
 来自函数“$2”内。数据库返回错误“$3: $4”。',
index 244798e..24aa325 100644 (file)
@@ -531,10 +531,10 @@ $1',
 'databaseerror' => '資料庫錯誤',
 'dberrortext' => '發生資料庫查詢語法錯誤。
 可能是由於軟體自身的錯誤所引起。
-最後一次資料庫查詢指令是:
+最後一次資料庫查詢指令是
 <blockquote><code>$1</code></blockquote>
-來自於函數 "<code>$2</code>"
-數據庫返回錯誤 "<samp>$3: $4</samp>"。',
+來自於函數“<code>$2</code>”
+資料庫返回錯誤“<samp>$3: $4</samp>”。',
 'dberrortextcl' => '發生資料庫查詢語法錯誤。
 最後一次的資料庫查詢是:
 「$1」
diff --git a/maintenance/archives/patch-config.sql b/maintenance/archives/patch-config.sql
deleted file mode 100644 (file)
index 791015e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
--- Table for holding configuration changes
-CREATE TABLE /*_*/config (
-  -- Config var name
-  cf_name varbinary(255) NOT NULL PRIMARY KEY,
-  -- Config var value
-  cf_value blob NOT NULL
-) /*$wgDBTableOptions*/;
--- Should cover *most* configuration - strings, ints, bools, etc.
-CREATE INDEX /*i*/cf_name_value ON /*_*/config (cf_name,cf_value(255));
index 6fd7a83..2edb7f0 100644 (file)
@@ -927,13 +927,3 @@ CREATE TABLE user_former_groups (
 );
 CREATE UNIQUE INDEX ufg_user_group
   ON user_former_groups (ufg_user, ufg_group);
-
-
-
--- Table for holding configuration changes
-CREATE TABLE config (
-  cf_name   VARCHAR(255) NOT NULL
-    PRIMARY KEY,
-  cf_value  CLOB(64K) INLINE LENGTH 4096 NOT NULL
-);
-
index ce1dbb9..d22070f 100644 (file)
@@ -467,6 +467,7 @@ $wgOptionalMessages = array(
        'backlinksubtitle',
        'prefs-registration-date-time',
        'prefs-memberingroups-type',
+       'userrights-groupsmember-type',
        'shared-repo-name-wikimediacommons',
        'usermessage-template',
        'filepage.css',
index 60e0f30..56cff94 100644 (file)
@@ -1087,6 +1087,7 @@ $wgMessageStructure = array(
                'saveusergroups',
                'userrights-groupsmember',
                'userrights-groupsmember-auto',
+               'userrights-groupsmember-type',
                'userrights-groups-help',
                'userrights-reason',
                'userrights-no-interwiki',
@@ -2681,6 +2682,7 @@ $wgMessageStructure = array(
                'pageinfo-default-sort',
                'pageinfo-length',
                'pageinfo-article-id',
+               'pageinfo-language',
                'pageinfo-robot-policy',
                'pageinfo-robot-index',
                'pageinfo-robot-noindex',
@@ -3569,6 +3571,7 @@ $wgMessageStructure = array(
                'version-license',
                'version-poweredby-credits',
                'version-poweredby-others',
+               'version-credits-summary',
                'version-license-info',
                'version-software',
                'version-software-product',
diff --git a/maintenance/oracle/archives/patch-config.sql b/maintenance/oracle/archives/patch-config.sql
deleted file mode 100644 (file)
index 66714a7..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-define mw_prefix='{$wgDBprefix}';
-
-CREATE TABLE &mw_prefix.config (
-  cf_name VARCHAR2(255) NOT NULL,
-  cf_value blob NOT NULL
-);
-ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY (cf_name);
-
index d0712e3..f28c61f 100644 (file)
@@ -670,13 +670,6 @@ CREATE TABLE &mw_prefix.module_deps (
 );
 CREATE UNIQUE INDEX &mw_prefix.module_deps_u01 ON &mw_prefix.module_deps (md_module, md_skin);
 
-CREATE TABLE &mw_prefix.config (
-  cf_name VARCHAR2(255) NOT NULL,
-  cf_value blob NOT NULL
-);
-ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY (cf_name);
--- leaving index out for now ...
-
 -- do not prefix this table as it breaks parserTests
 CREATE TABLE wiki_field_info_full (
 table_name VARCHAR2(35) NOT NULL,
diff --git a/maintenance/postgres/archives/patch-config.sql b/maintenance/postgres/archives/patch-config.sql
deleted file mode 100644 (file)
index 2f39ff0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CREATE TABLE config (
-  cf_name   TEXT  NOT NULL  PRIMARY KEY,
-  cf_value  TEXT  NOT NULL
-);
-CREATE INDEX cf_name_value ON config (cf_name, cf_value);
\ No newline at end of file
index 27759d5..845193d 100644 (file)
@@ -697,9 +697,3 @@ CREATE TABLE module_deps (
   md_deps    TEXT  NOT NULL
 );
 CREATE UNIQUE INDEX md_module_skin ON module_deps (md_module, md_skin);
-
-CREATE TABLE config (
-  cf_name   TEXT  NOT NULL  PRIMARY KEY,
-  cf_value  TEXT  NOT NULL
-);
-CREATE INDEX cf_name_value ON config (cf_name, cf_value);
index a4cdefd..bdcd66e 100644 (file)
@@ -1508,16 +1508,6 @@ CREATE TABLE /*_*/module_deps (
 ) /*$wgDBTableOptions*/;
 CREATE UNIQUE INDEX /*i*/md_module_skin ON /*_*/module_deps (md_module, md_skin);
 
--- Table for holding configuration changes
-CREATE TABLE /*_*/config (
-  -- Config var name
-  cf_name varbinary(255) NOT NULL PRIMARY KEY,
-  -- Config var value
-  cf_value blob NOT NULL
-) /*$wgDBTableOptions*/;
--- Should cover *most* configuration - strings, ints, bools, etc.
-CREATE INDEX /*i*/cf_name_value ON /*_*/config (cf_name,cf_value(255));
-
 -- Holds all the sites known to the wiki.
 CREATE TABLE /*_*/sites (
 -- Numeric id of the site
index 2fc8907..8ed24bb 100644 (file)
@@ -50,6 +50,9 @@ $wgAutoloadClasses += array(
        'DumpTestCase' => "$testFolder/phpunit/maintenance/DumpTestCase.php",
        'BackupDumper' => "$testFolder/../maintenance/backup.inc",
 
+       //language
+       'LanguageClassesTestCase' => "$testFolder/phpunit/languages/LanguageClassesTestCase.php",
+
        //Generic providers
        'MediaWikiProvide' => "$testFolder/phpunit/includes/Providers.php",
 );
index 258dfec..db41a4d 100644 (file)
@@ -220,15 +220,22 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         *  if an array is given as first argument).
         */
        protected function setMwGlobals( $pairs, $value = null ) {
-               if ( !is_array( $pairs ) ) {
-                       $key = $pairs;
-                       $this->mwGlobals[$key] = $GLOBALS[$key];
-                       $GLOBALS[$key] = $value;
-               } else {
-                       foreach ( $pairs as $key => $value ) {
+
+               // Normalize (string, value) to an array
+               if( is_string( $pairs ) ) {
+                       $pairs = array( $pairs => $value );
+               }
+
+               foreach ( $pairs as $key => $value ) {
+                       // NOTE: make sure we only save the global once or a second call to
+                       // setMwGlobals() on the same global would override the original
+                       // value.
+                       if ( !array_key_exists( $key, $this->mwGlobals ) ) {
                                $this->mwGlobals[$key] = $GLOBALS[$key];
-                               $GLOBALS[$key] = $value;
                        }
+
+                       // Override the global
+                       $GLOBALS[$key] = $value;
                }
        }
 
index c593d2f..dc672ba 100644 (file)
@@ -194,6 +194,9 @@ class SanitizerTest extends MediaWikiTestCase {
                        array( '/* insecure input */', 'background-image: image(asdf.png);'),
                        array( '/* insecure input */', 'background-image: -webkit-image(asdf.png);'),
                        array( '/* insecure input */', 'background-image: -moz-image(asdf.png);'),
+                       array( '/* insecure input */', 'background-image: image-set("asdf.png" 1x, "asdf.png" 2x);'),
+                       array( '/* insecure input */', 'background-image: -webkit-image-set("asdf.png" 1x, "asdf.png" 2x);'),
+                       array( '/* insecure input */', 'background-image: -moz-image-set("asdf.png" 1x, "asdf.png" 2x);'),
                );
        }
 }
index 2679088..16215c5 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/LanguageAm.php */
-class LanguageAmTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Am' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageAmTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 84507c5..17f7352 100644 (file)
@@ -5,19 +5,11 @@
  */
 
 /** Tests for MediaWiki languages/LanguageAr.php */
-class LanguageArTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Ar' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageArTest extends LanguageClassesTestCase {
 
        function testFormatNum() {
-               $this->assertEquals( '١٬٢٣٤٬٥٦٧', $this->lang->formatNum( '1234567' ) );
-               $this->assertEquals( '-١٢٫٨٩', $this->lang->formatNum( -12.89 ) );
+               $this->assertEquals( '١٬٢٣٤٬٥٦٧', $this->getLang()->formatNum( '1234567' ) );
+               $this->assertEquals( '-١٢٫٨٩', $this->getLang()->formatNum( -12.89 ) );
        }
 
        /**
@@ -25,7 +17,7 @@ class LanguageArTest extends MediaWikiTestCase {
         * @dataProvider providerSprintfDate
         */
        function testSprintfDate( $format, $date, $expected ) {
-               $this->assertEquals( $expected, $this->lang->sprintfDate( $format, $date ) );
+               $this->assertEquals( $expected, $this->getLang()->sprintfDate( $format, $date ) );
        }
 
        function providerSprintfDate() {
@@ -55,7 +47,7 @@ class LanguageArTest extends MediaWikiTestCase {
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'zero', 'one', 'two', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
        function providePlural() {
                return array (
index 3135ca8..06ee240 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/LanguageBe.php */
-class LanguageBeTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Be' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageBeTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 11aacb6..ad0ef43 100644 (file)
@@ -1,36 +1,39 @@
 <?php
 
-class LanguageBeTaraskTest extends MediaWikiTestCase {
-       private $lang;
+class LanguageBe_taraskTest extends LanguageClassesTestCase {
 
-       protected function setUp() {
-               $this->lang = Language::factory( 'Be-tarask' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
+       /**
+        * Make sure the language code we are given is indeed
+        * be-tarask. This is to ensure LanguageClassesTestCase
+        * does not give us the wrong language.
+        */
+       function testBeTaraskTestsUsesBeTaraskCode() {
+               $this->assertEquals( 'be-tarask',
+                       $this->getLang()->getCode()
+               );
        }
 
        /** see bug 23156 & r64981 */
        function testSearchRightSingleQuotationMarkAsApostroph() {
                $this->assertEquals(
                        "'",
-                       $this->lang->normalizeForSearch( '’' ),
+                       $this->getLang()->normalizeForSearch( '’' ),
                        'bug 23156: U+2019 conversion to U+0027'
                );
        }
        /** see bug 23156 & r64981 */
        function testCommafy() {
-               $this->assertEquals( '1,234,567', $this->lang->commafy( '1234567' ) );
-               $this->assertEquals(    '12,345', $this->lang->commafy(   '12345' ) );
+               $this->assertEquals( '1,234,567', $this->getLang()->commafy( '1234567' ) );
+               $this->assertEquals(    '12,345', $this->getLang()->commafy(   '12345' ) );
        }
        /** see bug 23156 & r64981 */
        function testDoesNotCommafyFourDigitsNumber() {
-               $this->assertEquals(      '1234', $this->lang->commafy(    '1234' ) );
+               $this->assertEquals(      '1234', $this->getLang()->commafy(    '1234' ) );
        }
        /** @dataProvider providePluralFourForms */
        function testPluralFourForms( $result, $value ) {
                $forms =  array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePluralFourForms() {
@@ -51,7 +54,7 @@ class LanguageBeTaraskTest extends MediaWikiTestCase {
        /** @dataProvider providePluralTwoForms */
        function testPluralTwoForms( $result, $value ) {
                $forms =  array( 'one', 'several' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
        function providePluralTwoForms() {
                return array (
index 00f4e13..5af7adb 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/LanguageBh.php */
-class LanguageBhTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Bh' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageBhTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 39391af..dd00428 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/LanguageBs.php */
-class LanguageBsTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Bs' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageBsTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
diff --git a/tests/phpunit/languages/LanguageClassesTestCase.php b/tests/phpunit/languages/LanguageClassesTestCase.php
new file mode 100644 (file)
index 0000000..4f0a37f
--- /dev/null
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Helping class to run tests using a clean language instance.
+ *
+ * This is intended for the MediaWiki language class tests under
+ * tests/phpunit/languages. You simply need to extends this test
+ * and set it up with a language code using setUpBeforeClass:
+ *
+ * @par Setting up a language:
+ * @code
+ * class LanguageFooTest extends LanguageClassesTestCase {
+ *   public static function setUpBeforeClass() {
+ *     self::setLang( 'Foo' );
+ *   }
+ * @endcode
+ *
+ * Before each tests, a new language object is build which you
+ * can retrieve in your test using the $this->getLang() method:
+ *
+ * @par Using the crafted language object:
+ * @code
+ * function testHasLanguageObject() {
+ *   $langObject = $this->getLang();
+ *   $this->assertInstanceOf( 'LanguageFoo',
+ *     $langObject
+ *   );
+ * }
+ * @endcode
+ */
+abstract class LanguageClassesTestCase extends MediaWikiTestCase {
+
+       /**
+        * Regex used to find out the language code out of the class name
+        * used by setUpBeforeClass
+       */
+       private static $reExtractLangFromClass = '/Language(.*)Test/';
+
+       /**
+        * Hold the language code we are going to use. This is extracted
+        * directly from the extending class.
+        */
+       private static $LanguageClassCode;
+
+       /**
+        * Internal language object
+        *
+        * A new object is created before each tests thanks to PHPUnit
+        * setUp() method, it is deleted after each test too. To get
+        * this object you simply use the getLang method.
+        *
+        * You must have setup a language code first. See $LanguageClassCode
+        * @code
+        *  function testWeAreTheChampions() {
+        *    $this->getLang();  # language object
+        *  }
+        * @endcode
+        */
+       private $languageObject;
+
+       public static function setUpBeforeClass() {
+               $found = preg_match( self::$reExtractLangFromClass,
+                       get_called_class(), $m );
+               if ( $found ) {
+                       # Normalize language code since classes uses underscores
+                       $m[1] = str_replace( '_', '-', $m[1] );
+               } else {
+                       # Fallback to english language
+                       $m[1] = 'en';
+                       wfDebug(
+                               __METHOD__ . " could not extract a language name "
+                               . "out of " . get_called_class() . " failling back to 'en'\n"
+                       );
+               }
+               // TODO: validate $m[1] which should be a valid language code
+               self::$LanguageClassCode = $m[1];
+       }
+
+       protected function getLang() {
+               return $this->languageObject;
+       }
+
+       /**
+        * Create a new language object before each test.
+        */
+       protected function setUp() {
+               parent::setUp();
+               $this->languageObject = Language::factory(
+                       self::$LanguageClassCode );
+       }
+
+       /**
+        * Delete the internal language object so each test start
+        * out with a fresh language instance.
+        */
+       protected function tearDown() {
+               unset( $this->languageObject );
+               parent::tearDown();
+       }
+
+}
index 862de52..72c9e79 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/Languagecs.php */
-class LanguageCsTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'cs' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageCsTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'few', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 5d5d60c..95f8da7 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/LanguageCu.php */
-class LanguageCuTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'cu' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageCuTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 406a943..de6ba5c 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageCy.php */
-class LanguageCyTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'cy' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageCyTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'zero', 'one', 'two', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 516b9ee..8fb6024 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageDsb.php */
-class LanguageDsbTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'dsb' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageDsbTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'two', 'few', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 0a29028..05de960 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageFr.php */
-class LanguageFrTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'fr' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageFrTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 9535cb1..0a54592 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageGa.php */
-class LanguageGaTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'ga' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageGaTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'two', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index e6bfdd7..7831cd2 100644 (file)
@@ -6,21 +6,13 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageGd.php */
-class LanguageGdTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'gd' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageGdTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                // The CLDR ticket for this plural forms is not same as mw plural forms. See http://unicode.org/cldr/trac/ticket/2883
                $forms =  array( 'Form 1', 'Form 2', 'Form 3', 'Form 4', 'Form 5', 'Form 6' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
        function providerPlural() {
                return array (
index 18cf225..0edff59 100644 (file)
@@ -6,21 +6,13 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageGv.php */
-class LanguageGvTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'gv' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageGvTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                // This is not compatible with CLDR plural rules http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#gv
                $forms =  array( 'Form 1', 'Form 2', 'Form 3', 'Form 4' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
        function providerPlural() {
                return array (
index 6205320..5ca2bc9 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageHe.php */
-class LanguageHeTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'he' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageHeTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPluralDual */
        function testPluralDual( $result, $value ) {
                $forms = array( 'one', 'two', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPluralDual() {
@@ -34,7 +26,7 @@ class LanguageHeTest extends MediaWikiTestCase {
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index bb3b5fa..5a780a2 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/LanguageHi.php */
-class LanguageHiTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Hi' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageHiTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 6f0ca1b..748aaf4 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageHr.php */
-class LanguageHrTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'hr' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageHrTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index d336e81..2d90ef0 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageHsb.php */
-class LanguageHsbTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'hsb' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageHsbTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'two', 'few', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 3181868..e01278b 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/LanguageHu.php */
-class LanguageHuTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Hu' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageHuTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 2885707..ea6e255 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/LanguageHy.php */
-class LanguageHyTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'hy' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageHyTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 78ff445..e92d264 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageKsh.php */
-class LanguageKshTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'ksh' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageKshTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array(  'one', 'other', 'zero' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 60b4945..8853caa 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageLn.php */
-class LanguageLnTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'ln' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageLnTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 821e028..485a090 100644 (file)
@@ -6,26 +6,18 @@
  */
 
 /** Tests for MediaWiki languages/LanguageLt.php */
-class LanguageLtTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Lt' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageLtTest extends LanguageClassesTestCase {
 
        /** @dataProvider provideOneFewOtherCases */
        function testOneFewOtherPlural( $result, $value ) {
                $forms =  array( 'one', 'few', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
        
        /** @dataProvider provideOneFewCases */
        function testOneFewPlural( $result, $value ) {
                $forms =  array( 'one', 'few' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function provideOneFewOtherCases() {
index bb0dc6c..bf4f793 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageLv.php */
-class LanguageLvTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'lv' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageLvTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index d6ac643..d6d3de9 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageMg.php */
-class LanguageMgTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'mg' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageMgTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePlural() {
index 21a9e41..8cd84b8 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageMk.php */
-class LanguageMkTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'mk' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageMkTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
 
index 9af2389..b7f6182 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/LanguageMl.php */
-class LanguageMlTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Ml' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageMlTest extends LanguageClassesTestCase {
 
        /** see bug 29495 */
        /** @dataProvider providerFormatNum*/
        function testFormatNum( $result, $value ) {
-               $this->assertEquals( $result,  $this->lang->formatNum( $value ) );
+               $this->assertEquals( $result,  $this->getLang()->formatNum( $value ) );
        }
 
        function providerFormatNum() {
index 4f208d9..491d8ac 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageMo.php */
-class LanguageMoTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'mo' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageMoTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'few', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 4d25347..70cd93a 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageMt.php */
-class LanguageMtTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'mt' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageMtTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPluralAllForms */
        function testPluralAllForms( $result, $value ) {
                $forms = array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPluralAllForms() {
@@ -46,7 +38,7 @@ class LanguageMtTest extends MediaWikiTestCase {
        /** @dataProvider providerPluralTwoForms */
        function testPluralTwoForms( $result, $value ) {
                $forms = array( 'one', 'many' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPluralTwoForms() {
index c8cfbb6..f783f2c 100644 (file)
@@ -6,23 +6,15 @@
  */
 
 /** Tests for MediaWiki languages/LanguageNl.php */
-class LanguageNlTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Nl' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageNlTest extends LanguageClassesTestCase {
 
        function testFormatNum() {
-               $this->assertEquals( '1.234.567', $this->lang->formatNum( '1234567' ) );
-               $this->assertEquals( '12.345', $this->lang->formatNum( '12345' ) );
-               $this->assertEquals( '1', $this->lang->formatNum( '1' ) );
-               $this->assertEquals( '123', $this->lang->formatNum( '123' ) );
-               $this->assertEquals( '1.234', $this->lang->formatNum( '1234' ) );
-               $this->assertEquals( '12.345,56', $this->lang->formatNum( '12345.56' ) );
-               $this->assertEquals( ',1234556', $this->lang->formatNum( '.1234556' ) );
+               $this->assertEquals( '1.234.567', $this->getLang()->formatNum( '1234567' ) );
+               $this->assertEquals( '12.345', $this->getLang()->formatNum( '12345' ) );
+               $this->assertEquals( '1', $this->getLang()->formatNum( '1' ) );
+               $this->assertEquals( '123', $this->getLang()->formatNum( '123' ) );
+               $this->assertEquals( '1.234', $this->getLang()->formatNum( '1234' ) );
+               $this->assertEquals( '12.345,56', $this->getLang()->formatNum( '12345.56' ) );
+               $this->assertEquals( ',1234556', $this->getLang()->formatNum( '.1234556' ) );
        }
 }
index 1e70997..97146d3 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageNso.php */
-class LanguageNsoTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'nso' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageNsoTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'many' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index a543640..00b7e9e 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguagePl.php */
-class LanguagePlTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'pl' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguagePlTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPluralFourForms */
        function testPluralFourForms( $result, $value ) {
                $forms = array( 'one', 'few', 'many' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPluralFourForms() {
@@ -46,7 +38,7 @@ class LanguagePlTest extends MediaWikiTestCase {
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'many' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 9bf01a4..61726bc 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageRo.php */
-class LanguageRoTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'ro' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageRoTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms =  array( 'one', 'few', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 189a96c..f545a13 100644 (file)
@@ -7,20 +7,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageRu.php */
-class LanguageRuTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'ru' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageRuTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePluralFourForms */
        function testPluralFourForms( $result, $value ) {
                $forms = array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePluralFourForms() {
@@ -41,7 +33,7 @@ class LanguageRuTest extends MediaWikiTestCase {
        /** @dataProvider providePluralTwoForms */
        function testPluralTwoForms( $result, $value ) {
                $forms =  array( 'one', 'several' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
        function providePluralTwoForms() {
                return array (
index 51cfd2f..cf76353 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageSe.php */
-class LanguageSeTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'se' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageSeTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPluralThreeForms */
        function testPluralThreeForms( $result, $value ) {
                $forms = array( 'one', 'two', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPluralThreeForms() {
@@ -34,7 +26,7 @@ class LanguageSeTest extends MediaWikiTestCase {
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 62f2775..e2a56ca 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageSgs.php */
-class LanguageSgsTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Sgs' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageSgsTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePluralAllForms */
        function testPluralAllForms( $result, $value ) {
                $forms = array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePluralAllForms() {
@@ -43,7 +35,7 @@ class LanguageSgsTest extends MediaWikiTestCase {
        /** @dataProvider providePluralTwoForms */
        function testPluralTwoForms( $result, $value ) {
                $forms =  array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePluralTwoForms() {
index 1d8ae7c..25618c4 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageSh.php */
-class LanguageShTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'sh' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageShTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'many' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 25823cf..b50f7df 100644 (file)
@@ -7,20 +7,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageSk.php */
-class LanguageSkTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'sk' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageSkTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'few', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 76de0fc..bfb7c7e 100644 (file)
@@ -7,20 +7,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageSl.php */
-class LanguageSlTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'sl' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageSlTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'two', 'few', 'other', 'zero' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index cf14477..85fa9fb 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageSma.php */
-class LanguageSmaTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'sma' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageSmaTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPluralThreeForms */
        function testPluralThreeForms( $result, $value ) {
                $forms = array( 'one', 'two', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPluralThreeForms() {
@@ -34,7 +26,7 @@ class LanguageSmaTest extends MediaWikiTestCase {
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index 7be4589..c88115d 100644 (file)
 require_once dirname( __DIR__ ) . '/bootstrap.php';
 
 /** Tests for MediaWiki languages/LanguageSr.php */
-class LanguageSrTest extends MediaWikiTestCase {
-       /* Language object. Initialized before each test */
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'sr' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageSrTest extends LanguageClassesTestCase {
 
        ##### TESTS #######################################################
 
@@ -125,7 +116,7 @@ class LanguageSrTest extends MediaWikiTestCase {
        /** @dataProvider providePluralFourForms */
        function testPluralFourForms( $result, $value ) {
                $forms = array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePluralFourForms() {
@@ -146,7 +137,7 @@ class LanguageSrTest extends MediaWikiTestCase {
        /** @dataProvider providePluralTwoForms */
        function testPluralTwoForms( $result, $value ) {
                $forms = array( 'one', 'several' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
        function providePluralTwoForms() {
                return array (
@@ -207,8 +198,7 @@ class LanguageSrTest extends MediaWikiTestCase {
 
        /** Wrapper for converter::convertTo() method*/
        function convertTo( $text, $variant ) {
-               return $this
-                       ->lang
+               return $this->getLang()
                        ->mConverter
                        ->convertTo(
                                $text, $variant
index d8ec2e9..c66df69 100644 (file)
@@ -1,23 +1,11 @@
 <?php
 
-class LanguageTest extends MediaWikiTestCase {
-
-       /**
-        * @var Language
-        */
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'en' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageTest extends LanguageClassesTestCase {
 
        function testLanguageConvertDoubleWidthToSingleWidth() {
                $this->assertEquals(
                        "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
-                       $this->lang->normalizeForSearch(
+                       $this->getLang()->normalizeForSearch(
                                "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
                        ),
                        'convertDoubleWidth() with the full alphabet and digits'
@@ -28,7 +16,7 @@ class LanguageTest extends MediaWikiTestCase {
         * @dataProvider provideFormattableTimes
         */
        function testFormatTimePeriod( $seconds, $format, $expected, $desc ) {
-               $this->assertEquals( $expected, $this->lang->formatTimePeriod( $seconds, $format ), $desc );
+               $this->assertEquals( $expected, $this->getLang()->formatTimePeriod( $seconds, $format ), $desc );
        }
 
        function provideFormattableTimes() {
@@ -220,31 +208,31 @@ class LanguageTest extends MediaWikiTestCase {
        function testTruncate() {
                $this->assertEquals(
                        "XXX",
-                       $this->lang->truncate( "1234567890", 0, 'XXX' ),
+                       $this->getLang()->truncate( "1234567890", 0, 'XXX' ),
                        'truncate prefix, len 0, small ellipsis'
                );
 
                $this->assertEquals(
                        "12345XXX",
-                       $this->lang->truncate( "1234567890", 8, 'XXX' ),
+                       $this->getLang()->truncate( "1234567890", 8, 'XXX' ),
                        'truncate prefix, small ellipsis'
                );
 
                $this->assertEquals(
                        "123456789",
-                       $this->lang->truncate( "123456789", 5, 'XXXXXXXXXXXXXXX' ),
+                       $this->getLang()->truncate( "123456789", 5, 'XXXXXXXXXXXXXXX' ),
                        'truncate prefix, large ellipsis'
                );
 
                $this->assertEquals(
                        "XXX67890",
-                       $this->lang->truncate( "1234567890", -8, 'XXX' ),
+                       $this->getLang()->truncate( "1234567890", -8, 'XXX' ),
                        'truncate suffix, small ellipsis'
                );
 
                $this->assertEquals(
                        "123456789",
-                       $this->lang->truncate( "123456789", -5, 'XXXXXXXXXXXXXXX' ),
+                       $this->getLang()->truncate( "123456789", -5, 'XXXXXXXXXXXXXXX' ),
                        'truncate suffix, large ellipsis'
                );
        }
@@ -256,7 +244,7 @@ class LanguageTest extends MediaWikiTestCase {
                // Actual HTML...
                $this->assertEquals(
                        $expected,
-                       $this->lang->truncateHTML( $input, $len, $ellipsis )
+                       $this->getLang()->truncateHTML( $input, $len, $ellipsis )
                );
        }
 
@@ -355,7 +343,7 @@ class LanguageTest extends MediaWikiTestCase {
        function testSprintfDate( $format, $ts, $expected, $msg ) {
                $this->assertEquals(
                        $expected,
-                       $this->lang->sprintfDate( $format, $ts ),
+                       $this->getLang()->sprintfDate( $format, $ts ),
                        "sprintfDate('$format', '$ts'): $msg"
                );
        }
@@ -372,7 +360,7 @@ class LanguageTest extends MediaWikiTestCase {
 
                $this->assertEquals(
                        $expected,
-                       $this->lang->sprintfDate( $format, $ts ),
+                       $this->getLang()->sprintfDate( $format, $ts ),
                        "sprintfDate('$format', '$ts'): $msg"
                );
 
@@ -680,7 +668,7 @@ class LanguageTest extends MediaWikiTestCase {
        function testFormatSize( $size, $expected, $msg ) {
                $this->assertEquals(
                        $expected,
-                       $this->lang->formatSize( $size ),
+                       $this->getLang()->formatSize( $size ),
                        "formatSize('$size'): $msg"
                );
        }
@@ -742,7 +730,7 @@ class LanguageTest extends MediaWikiTestCase {
        function testFormatBitrate( $bps, $expected, $msg ) {
                $this->assertEquals(
                        $expected,
-                       $this->lang->formatBitrate( $bps ),
+                       $this->getLang()->formatBitrate( $bps ),
                        "formatBitrate('$bps'): $msg"
                );
        }
@@ -815,7 +803,7 @@ class LanguageTest extends MediaWikiTestCase {
        function testFormatDuration( $duration, $expected, $intervals = array() ) {
                $this->assertEquals(
                        $expected,
-                       $this->lang->formatDuration( $duration, $intervals ),
+                       $this->getLang()->formatDuration( $duration, $intervals ),
                        "formatDuration('$duration'): $expected"
                );
        }
@@ -950,7 +938,7 @@ class LanguageTest extends MediaWikiTestCase {
        function testCheckTitleEncoding( $s ) {
                $this->assertEquals(
                        $s,
-                       $this->lang->checkTitleEncoding($s),
+                       $this->getLang()->checkTitleEncoding($s),
                        "checkTitleEncoding('$s')"
                );
        }
@@ -1070,7 +1058,7 @@ class LanguageTest extends MediaWikiTestCase {
         * @dataProvider providePluralData
         */
        function testConvertPlural( $expected, $number, $forms ) {
-               $chosen = $this->lang->convertPlural( $number, $forms );
+               $chosen = $this->getLang()->convertPlural( $number, $forms );
                $this->assertEquals( $expected, $chosen );
        }
 
index 175cdb9..259e007 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageTi.php */
-class LanguageTiTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Ti' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageTiTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'many' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index e03531f..bf3dafc 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageTl.php */
-class LanguageTlTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Tl' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageTlTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'many' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {
index a3cacc2..e4859df 100644 (file)
@@ -6,15 +6,7 @@
  */
 
 /** Tests for MediaWiki languages/LanguageTr.php */
-class LanguageTrTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Tr' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageTrTest extends LanguageClassesTestCase {
 
        /**
         * See @bug 28040
@@ -27,9 +19,9 @@ class LanguageTrTest extends MediaWikiTestCase {
         */
        function testDottedAndDotlessI( $func, $input, $inputCase, $expected ) {
                if( $func == 'ucfirst' ) {
-                       $res = $this->lang->ucfirst( $input );
+                       $res = $this->getLang()->ucfirst( $input );
                } elseif( $func == 'lcfirst' ) {
-                       $res = $this->lang->lcfirst( $input );
+                       $res = $this->getLang()->lcfirst( $input );
                } else {
                        throw new MWException( __METHOD__ . " given an invalid function name '$func'" );
                }
index 2b6f707..f29b90b 100644 (file)
@@ -7,20 +7,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageUk.php */
-class LanguageUkTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Uk' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageUkTest extends LanguageClassesTestCase {
 
        /** @dataProvider providePluralFourForms */
        function testPluralFourForms( $result, $value ) {
                $forms = array( 'one', 'few', 'many', 'other' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providePluralFourForms() {
@@ -41,7 +33,7 @@ class LanguageUkTest extends MediaWikiTestCase {
        /** @dataProvider providePluralTwoForms */
        function testPluralTwoForms( $result, $value ) {
                $forms = array( 'one', 'several' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
        function providePluralTwoForms() {
                return array (
index 0314649..99607d1 100644 (file)
 require_once dirname( __DIR__ ) . '/bootstrap.php';
 
 /** Tests for MediaWiki languages/LanguageUz.php */
-class LanguageUzTest extends MediaWikiTestCase {
-       /* Language object. Initialized before each test */
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'uz' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageUzTest extends LanguageClassesTestCase {
 
        /**
         * @author Nikola Smolenski
@@ -109,7 +100,7 @@ class LanguageUzTest extends MediaWikiTestCase {
 
        /** Wrapper for converter::convertTo() method*/
        function convertTo( $text, $variant ) {
-               return $this->lang->mConverter->convertTo( $text, $variant );
+               return $this->getLang()->mConverter->convertTo( $text, $variant );
        }
        function convertToCyrillic( $text ) {
                return $this->convertTo( $text, 'uz-cyrl' );
index 08312ce..4a1c0e7 100644 (file)
@@ -6,20 +6,12 @@
  */
 
 /** Tests for MediaWiki languages/classes/LanguageWa.php */
-class LanguageWaTest extends MediaWikiTestCase {
-       private $lang;
-
-       protected function setUp() {
-               $this->lang = Language::factory( 'Wa' );
-       }
-       protected function tearDown() {
-               unset( $this->lang );
-       }
+class LanguageWaTest extends LanguageClassesTestCase {
 
        /** @dataProvider providerPlural */
        function testPlural( $result, $value ) {
                $forms = array( 'one', 'many' );
-               $this->assertEquals( $result, $this->lang->convertPlural( $value, $forms ) );
+               $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        function providerPlural() {