Merge "Wrap auto-numbering for section heading in a classed span (bug 33450)"
authorGWicke <gwicke@wikimedia.org>
Sun, 17 Jun 2012 16:39:27 +0000 (16:39 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sun, 17 Jun 2012 16:39:28 +0000 (16:39 +0000)
433 files changed:
RELEASE-NOTES-1.20
docs/distributors.txt
docs/export-0.7.xsd
docs/export-demo.xml
docs/hooks.txt
extensions/README
includes/Article.php
includes/AutoLoader.php
includes/CategoryViewer.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Export.php
includes/GlobalFunctions.php
includes/HTMLForm.php
includes/ImagePage.php
includes/Linker.php
includes/Pager.php
includes/Preferences.php
includes/Revision.php
includes/RevisionList.php
includes/Setup.php
includes/SiteConfiguration.php
includes/SiteStats.php
includes/Skin.php
includes/SkinTemplate.php
includes/Title.php
includes/Wiki.php
includes/WikiPage.php
includes/actions/CachedAction.php
includes/actions/HistoryAction.php
includes/actions/RawAction.php
includes/actions/ViewAction.php
includes/api/ApiBase.php
includes/api/ApiBlock.php
includes/api/ApiComparePages.php
includes/api/ApiDelete.php
includes/api/ApiEditPage.php
includes/api/ApiEmailUser.php
includes/api/ApiExpandTemplates.php
includes/api/ApiFileRevert.php
includes/api/ApiImport.php
includes/api/ApiLogin.php
includes/api/ApiLogout.php
includes/api/ApiMove.php
includes/api/ApiOptions.php
includes/api/ApiPageSet.php
includes/api/ApiParamInfo.php
includes/api/ApiPatrol.php
includes/api/ApiProtect.php
includes/api/ApiPurge.php
includes/api/ApiQueryAllCategories.php
includes/api/ApiQueryAllImages.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryAllMessages.php
includes/api/ApiQueryAllPages.php
includes/api/ApiQueryAllUsers.php
includes/api/ApiQueryBacklinks.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryCategories.php
includes/api/ApiQueryCategoryInfo.php
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryDuplicateFiles.php
includes/api/ApiQueryExtLinksUsage.php
includes/api/ApiQueryExternalLinks.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryIWBacklinks.php
includes/api/ApiQueryIWLinks.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryImages.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryLangBacklinks.php
includes/api/ApiQueryLangLinks.php
includes/api/ApiQueryLinks.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryProtectedTitles.php
includes/api/ApiQueryQueryPage.php
includes/api/ApiQueryRandom.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQuerySearch.php
includes/api/ApiQueryStashImageInfo.php
includes/api/ApiQueryTags.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryUserInfo.php
includes/api/ApiQueryUsers.php
includes/api/ApiQueryWatchlist.php
includes/api/ApiQueryWatchlistRaw.php
includes/api/ApiRollback.php
includes/api/ApiTokens.php
includes/api/ApiUnblock.php
includes/api/ApiUndelete.php
includes/api/ApiUpload.php
includes/api/ApiWatch.php
includes/db/Database.php
includes/db/DatabaseError.php
includes/db/DatabaseMysql.php
includes/db/DatabasePostgres.php
includes/db/IORMTable.php
includes/db/ORMIterator.php [new file with mode: 0644]
includes/db/ORMResult.php
includes/diff/DifferenceEngine.php
includes/filerepo/backend/FileBackend.php
includes/filerepo/backend/FileBackendStore.php
includes/filerepo/backend/FileOp.php
includes/filerepo/backend/SwiftFileBackend.php
includes/filerepo/backend/TempFSFile.php
includes/filerepo/backend/lockmanager/FSLockManager.php
includes/filerepo/file/File.php
includes/filerepo/file/ForeignAPIFile.php
includes/filerepo/file/LocalFile.php
includes/installer/CliInstaller.php
includes/installer/Installer.i18n.php
includes/installer/LocalSettingsGenerator.php
includes/installer/WebInstaller.php
includes/interwiki/Interwiki.php
includes/logging/LogEventsList.php
includes/normal/UtfNormalDefines.php
includes/normal/UtfNormalTest2.php
includes/objectcache/BagOStuff.php
includes/objectcache/DBABagOStuff.php
includes/objectcache/MemcachedPeclBagOStuff.php
includes/objectcache/SqlBagOStuff.php
includes/parser/Parser.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderLanguageDataModule.php
includes/revisiondelete/RevisionDelete.php
includes/specials/SpecialCachedPage.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialListfiles.php
includes/specials/SpecialLog.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPopularpages.php
includes/specials/SpecialPrefixindex.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialVersion.php
languages/Language.php
languages/Names.php
languages/classes/LanguageAm.php
languages/classes/LanguageAr.php
languages/classes/LanguageAz.php
languages/classes/LanguageBe.php
languages/classes/LanguageBe_tarask.php
languages/classes/LanguageBg.php
languages/classes/LanguageBh.php
languages/classes/LanguageBs.php
languages/classes/LanguageCs.php
languages/classes/LanguageCu.php
languages/classes/LanguageCy.php
languages/classes/LanguageDsb.php
languages/classes/LanguageEo.php
languages/classes/LanguageEt.php
languages/classes/LanguageFi.php
languages/classes/LanguageFr.php
languages/classes/LanguageGa.php
languages/classes/LanguageGan.php
languages/classes/LanguageGd.php
languages/classes/LanguageGv.php
languages/classes/LanguageHe.php
languages/classes/LanguageHi.php
languages/classes/LanguageHr.php
languages/classes/LanguageHsb.php
languages/classes/LanguageHu.php
languages/classes/LanguageHy.php
languages/classes/LanguageIu.php
languages/classes/LanguageJa.php
languages/classes/LanguageKaa.php
languages/classes/LanguageKk.php
languages/classes/LanguageKk_cyrl.php
languages/classes/LanguageKm.php
languages/classes/LanguageKsh.php
languages/classes/LanguageKu.php
languages/classes/LanguageKu_ku.php
languages/classes/LanguageLa.php
languages/classes/LanguageLn.php
languages/classes/LanguageLt.php
languages/classes/LanguageLv.php
languages/classes/LanguageMg.php
languages/classes/LanguageMk.php
languages/classes/LanguageMl.php
languages/classes/LanguageMo.php
languages/classes/LanguageMt.php
languages/classes/LanguageMy.php
languages/classes/LanguageNso.php
languages/classes/LanguageOs.php
languages/classes/LanguagePl.php
languages/classes/LanguageQqx.php
languages/classes/LanguageRo.php
languages/classes/LanguageRu.php
languages/classes/LanguageSe.php
languages/classes/LanguageSgs.php
languages/classes/LanguageSh.php
languages/classes/LanguageShi.php
languages/classes/LanguageSk.php
languages/classes/LanguageSl.php
languages/classes/LanguageSma.php
languages/classes/LanguageSr.php
languages/classes/LanguageSr_ec.php
languages/classes/LanguageSr_el.php
languages/classes/LanguageTg.php
languages/classes/LanguageTi.php
languages/classes/LanguageTl.php
languages/classes/LanguageTr.php
languages/classes/LanguageTyv.php
languages/classes/LanguageUk.php
languages/classes/LanguageWa.php
languages/classes/LanguageYue.php
languages/classes/LanguageZh.php
languages/classes/LanguageZh_hans.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAn.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArn.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesBa.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCs.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEn.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrr.php
languages/messages/MessagesGl.php
languages/messages/MessagesGn.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesHe.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHu.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIlo.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_latn.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLi.php
languages/messages/MessagesLt.php
languages/messages/MessagesLus.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNah.php
languages/messages/MessagesNds.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesNo.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesQug.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSah.php
languages/messages/MessagesSat.php
languages/messages/MessagesSe.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSv.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTl.php
languages/messages/MessagesTly.php
languages/messages/MessagesTr.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUk.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesWa.php
languages/messages/MessagesWar.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/cleanupSpam.php
maintenance/formatInstallDoc.php
maintenance/importSiteScripts.php
maintenance/install.php
maintenance/language/generateCollationData.php
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/locking/LockServerDaemon.php
maintenance/mwdocgen.php
maintenance/proxy_check.php
maintenance/purgeParserCache.php
maintenance/purgeStaleMemcachedText.php
maintenance/refreshLinks.php
maintenance/runJobs.php
maintenance/storage/checkStorage.php
maintenance/term/MWTerm.php
mw-config/index.php
mw-config/overrides.php [new file with mode: 0644]
resources/Resources.php
resources/jquery.effects/jquery.effects.blind.js
resources/jquery.effects/jquery.effects.bounce.js
resources/jquery.effects/jquery.effects.clip.js
resources/jquery.effects/jquery.effects.core.js
resources/jquery.effects/jquery.effects.drop.js
resources/jquery.effects/jquery.effects.explode.js
resources/jquery.effects/jquery.effects.fade.js
resources/jquery.effects/jquery.effects.fold.js
resources/jquery.effects/jquery.effects.highlight.js
resources/jquery.effects/jquery.effects.pulsate.js
resources/jquery.effects/jquery.effects.scale.js
resources/jquery.effects/jquery.effects.shake.js
resources/jquery.effects/jquery.effects.slide.js
resources/jquery.effects/jquery.effects.transfer.js
resources/jquery.ui/i18n/jquery.ui.datepicker-ar.js
resources/jquery.ui/i18n/jquery.ui.datepicker-eu.js
resources/jquery.ui/i18n/jquery.ui.datepicker-ka.js [new file with mode: 0644]
resources/jquery.ui/jquery.ui.accordion.js
resources/jquery.ui/jquery.ui.autocomplete.js
resources/jquery.ui/jquery.ui.button.js
resources/jquery.ui/jquery.ui.core.js
resources/jquery.ui/jquery.ui.datepicker.js
resources/jquery.ui/jquery.ui.dialog.js
resources/jquery.ui/jquery.ui.draggable.js
resources/jquery.ui/jquery.ui.droppable.js
resources/jquery.ui/jquery.ui.mouse.js
resources/jquery.ui/jquery.ui.position.js
resources/jquery.ui/jquery.ui.progressbar.js
resources/jquery.ui/jquery.ui.resizable.js
resources/jquery.ui/jquery.ui.selectable.js
resources/jquery.ui/jquery.ui.slider.js
resources/jquery.ui/jquery.ui.sortable.js
resources/jquery.ui/jquery.ui.tabs.js
resources/jquery.ui/jquery.ui.widget.js
resources/jquery.ui/themes/default/jquery.ui.accordion.css
resources/jquery.ui/themes/default/jquery.ui.autocomplete.css
resources/jquery.ui/themes/default/jquery.ui.button.css
resources/jquery.ui/themes/default/jquery.ui.core.css
resources/jquery.ui/themes/default/jquery.ui.datepicker.css
resources/jquery.ui/themes/default/jquery.ui.dialog.css
resources/jquery.ui/themes/default/jquery.ui.progressbar.css
resources/jquery.ui/themes/default/jquery.ui.resizable.css
resources/jquery.ui/themes/default/jquery.ui.selectable.css
resources/jquery.ui/themes/default/jquery.ui.slider.css
resources/jquery.ui/themes/default/jquery.ui.tabs.css
resources/jquery.ui/themes/default/jquery.ui.theme.css
resources/jquery/jquery.qunit.completenessTest.js
resources/jquery/jquery.qunit.css
resources/jquery/jquery.qunit.js
resources/mediawiki.language/languages/bs.js
resources/mediawiki.language/languages/dsb.js
resources/mediawiki.language/languages/fi.js [new file with mode: 0644]
resources/mediawiki.language/languages/ga.js
resources/mediawiki.language/languages/he.js
resources/mediawiki.language/languages/hsb.js
resources/mediawiki.language/languages/hu.js [new file with mode: 0644]
resources/mediawiki.language/languages/hy.js
resources/mediawiki.language/languages/la.js [new file with mode: 0644]
resources/mediawiki.language/languages/os.js [new file with mode: 0644]
resources/mediawiki.language/languages/ru.js
resources/mediawiki.language/languages/sl.js
resources/mediawiki.language/languages/uk.js
resources/mediawiki.language/mediawiki.language.init.js [new file with mode: 0644]
resources/mediawiki.language/mediawiki.language.js
resources/mediawiki.special/mediawiki.special.search.js
resources/mediawiki/mediawiki.Uri.js
resources/mediawiki/mediawiki.util.js
skins/Chick.php
skins/CologneBlue.php
skins/Modern.php
skins/MonoBook.php
skins/MySkin.php
skins/Nostalgia.php
skins/Simple.php
skins/Vector.php
tests/parser/parserTests.txt
tests/phpunit/includes/db/ORMRowTest.php
tests/phpunit/includes/db/TestORMRowTest.php
tests/phpunit/includes/filerepo/FileBackendTest.php
tests/phpunit/maintenance/DumpTestCase.php
tests/phpunit/maintenance/backupPrefetchTest.php
tests/phpunit/maintenance/backupTextPassTest.php
tests/phpunit/maintenance/backup_PageTest.php
tests/phpunit/maintenance/fetchTextTest.php
tests/phpunit/maintenance/getSlaveServerTest.php

index f034999..7b53839 100644 (file)
@@ -53,6 +53,8 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * (bug 35685) api.php URL and other entry point URLs are now listed on
   Special:Version
 * Edit notices can now be translated.
+* (bug 35680) jQuery upgraded to 1.7.2.
+* jQuery UI upgraded to 1.8.19.
 * (bug 22887) Add warning and tracking category for preprocessor errors
 * (bug 31704) Allow selection of associated namespace on the watchlist
 * (bug 5445) Now remove autoblocks when a user is unblocked.
@@ -65,6 +67,10 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * New getCreator and getOldestRevision methods added to WikiPage class
 * (bug 4220) the XML dump format schema now have unique identity constraints
   for page and revision identifiers. Patch by Elvis Stansvik.
+* (bug 35705) QUnit upgraded from 1.2.0 to 1.7.0
+* cleanupSpam.php now can delete spam pages if --delete was specified instead of blanking
+  them.
+* Added new hook ChangePasswordForm to allow adding of additional fields in Special:ChangePassword
 
 === Bug fixes in 1.20 ===
 * (bug 30245) Use the correct way to construct a log page title.
@@ -98,9 +104,6 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * Removed white border around thumbnails in galleries.
 * (bug 31236) "Next" and "Previous" buttons are shown incorrectly in
   an RTL environment.
-* (bug 35680) jQuery upgraded to 1.7.2.
-* jQuery UI upgraded to 1.8.19.
-* (bug 35705) QUnit upgraded from 1.2.0 to 1.5.0
 * (bug 35749) Updated maintenance/checkSyntax.php to use Git instead of
   Subversion when invoked with the --modified option.
 * (bug 35069) On history pages, the " . . " separator after the number of
@@ -115,6 +118,9 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * (bug 25946) The message on the top of Special:RecentChanges is now displayed
   in user language instead of content language
 * (bug 35264) Wrong type used for <ns> in export.xsd
+* (bug 24985) Use $wgTmpDirectory as the default temp directory so that people
+  who don't have access to /tmp can specify an alternative.
+* (bug 27283) SqlBagOStuff breaks PostgreSQL transactions
 
 === API changes in 1.20 ===
 * (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
@@ -131,6 +137,8 @@ upgrade PHP if you have not done so prior to upgrading MediaWiki.
 * (bug 28814) add properties to output of action=parse
 * (bug 33224) add variants of content language to meta=siteinfo
 * (bug 36761) "Mark pages as visited" now submits previously established filter options
+* (bug 32643) action=purge with forcelinkupdate no longer crashes when ratelimit is reached
+* The paraminfo module now also contains result properties for most modules
 
 === Languages updated in 1.20 ===
 
index d298229..4a65431 100644 (file)
@@ -87,9 +87,9 @@ which the user can edit by hand thereafter.  It's just a plain old PHP file,
 and can contain any PHP statements.  It usually sets global variables that are
 used for configuration, and includes files used by any extensions.
 
-Distributors cannot easily add extra statements to the autogenerated
-LocalSettings.php at the present time -- although hacking mw-config/index.php
-would work.  It would be nice if this situation could be improved.
+Distributors can easily add extra statements to the autogenerated
+LocalSettings.php by changing mw-config/overrides.php (see that file for details
+and examples).
 
 There's a new maintenance/install.php script which could be used for performing
 an install through the command line.
index 2d64036..6d02328 100644 (file)
@@ -22,6 +22,7 @@
        revision identifiers. See also bug 4220.
        Fix type for <ns> from "positiveInteger" to "nonNegativeInteger" to allow 0
        Moves <logitem> to its right location.
+       Add parentid to revision.
 
        The canonical URL to the schema document is:
        http://www.mediawiki.org/xml/export-0.7.xsd
 
        <!-- Need this to reference xml:lang -->
        <import namespace="http://www.w3.org/XML/1998/namespace"
-                       schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+                       schemaLocation="http://www.w3.org/2001/xml.xsd" />
 
        <!-- Our root element -->
        <element name="mediawiki" type="mw:MediaWikiType">
                <!-- Page ID contraint, see bug 4220 -->
                <unique name="PageIDConstraint">
-                       <selector xpath="mw:page"/>
-                       <field xpath="mw:id"/>
+                       <selector xpath="mw:page" />
+                       <field xpath="mw:id" />
                </unique>
                <!-- Revision ID contraint, see bug 4220 -->
                <unique name="RevIDConstraint">
-                       <selector xpath="mw:page/mw:revision"/>
-                       <field xpath="mw:id"/>
+                       <selector xpath="mw:page/mw:revision" />
+                       <field xpath="mw:id" />
                </unique>
        </element>
 
        <complexType name="MediaWikiType">
                <sequence>
                        <element name="siteinfo" type="mw:SiteInfoType"
-                                        minOccurs="0" maxOccurs="1"/>
+                                        minOccurs="0" maxOccurs="1" />
                        <element name="page" type="mw:PageType"
-                                        minOccurs="0" maxOccurs="unbounded"/>
+                                        minOccurs="0" maxOccurs="unbounded" />
                        <element name="logitem" type="mw:LogItemType"
-                                        minOccurs="0" maxOccurs="unbounded"/>
+                                        minOccurs="0" maxOccurs="unbounded" />
                </sequence>
-               <attribute name="version" type="string" use="required"/>
-               <attribute ref="xml:lang" use="required"/>
+               <attribute name="version" type="string" use="required" />
+               <attribute ref="xml:lang" use="required" />
        </complexType>
 
        <complexType name="SiteInfoType">
 
        <simpleType name="DeletedFlagType">
                <restriction base="NMTOKEN">
-                       <enumeration value="deleted"/>
+                       <enumeration value="deleted" />
                </restriction>
        </simpleType>
 
                </simpleContent>
        </complexType>
 
+       <complexType name="RedirectType">
+               <simpleContent>
+                       <extension base="string">
+                               <attribute name="title" type="string" />
+                       </extension>
+               </simpleContent>
+       </complexType>
+
        <complexType name="PageType">
                <sequence>
                        <!-- Title in text form. (Using spaces, not underscores; with namespace ) -->
-                       <element name="title" type="string"/>
+                       <element name="title" type="string" />
 
                        <!-- Namespace in canonical form -->
-                       <element name="ns" type="nonNegativeInteger"/>
+                       <element name="ns" type="nonNegativeInteger" />
 
                        <!-- optional page ID number -->
-                       <element name="id" type="positiveInteger" minOccurs="0"/>
+                       <element name="id" type="positiveInteger" />
 
                        <!-- flag if the current revision is a redirect -->
-                       <element name="redirect" type="string" minOccurs="0"/>
+                       <element name="redirect" type="mw:RedirectType" minOccurs="0" maxOccurs="1" />
 
                        <!-- comma-separated list of string tokens, if present -->
-                       <element name="restrictions" type="string" minOccurs="0"/>
+                       <element name="restrictions" type="string" minOccurs="0" />
 
                        <!-- Zero or more sets of revision or upload data -->
                        <choice minOccurs="0" maxOccurs="unbounded">
 
        <complexType name="RevisionType">
                <sequence>
-                       <element name="id" type="positiveInteger" minOccurs="0"/>
-                       <element name="timestamp" type="dateTime"/>
-                       <element name="contributor" type="mw:ContributorType"/>
-                       <element name="minor" minOccurs="0" />
-                       <element name="comment" type="mw:CommentType" minOccurs="0"/>
+                       <element name="id" type="positiveInteger" />
+                       <element name="parentid" type="positiveInteger" minOccurs="0" />
+                       <element name="timestamp" type="dateTime" />
+                       <element name="contributor" type="mw:ContributorType" />
+                       <element name="minor" minOccurs="0" maxOccurs="1" />
+                       <element name="comment" type="mw:CommentType" minOccurs="0" maxOccurs="1" />
                        <element name="sha1" type="string" />
                        <element name="text" type="mw:TextType" />
                </sequence>
 
        <complexType name="LogItemType">
                <sequence>
-                       <element name="id" type="positiveInteger" minOccurs="0"/>
-                       <element name="timestamp" type="dateTime"/>
-                       <element name="contributor" type="mw:ContributorType"/>
-                       <element name="comment" type="mw:CommentType" minOccurs="0"/>
+                       <element name="id" type="positiveInteger" />
+                       <element name="timestamp" type="dateTime" />
+                       <element name="contributor" type="mw:ContributorType" />
+                       <element name="comment" type="mw:CommentType" minOccurs="0" />
                        <element name="type" type="string" />
                        <element name="action" type="string" />
                        <element name="text" type="mw:LogTextType" minOccurs="0" maxOccurs="1" />
                <simpleContent>
                        <extension base="string">
                                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
-                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
+                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType" />
                        </extension>
                </simpleContent>
        </complexType>
                        <extension base="string">
                                <attribute ref="xml:space" use="optional" default="preserve" />
                                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
-                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
+                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType" />
                                <!-- This isn't a good idea; we should be using "ID" instead of "NMTOKEN" -->
                                <!-- However, "NMTOKEN" is strictest definition that is both compatible with existing -->
                                <!-- usage ([0-9]+) and with the "ID" type. -->
-                               <attribute name="id" type="NMTOKEN"/>
-                               <attribute name="bytes" use="optional" type="nonNegativeInteger"/>
+                               <attribute name="id" type="NMTOKEN" />
+                               <attribute name="bytes" use="optional" type="nonNegativeInteger" />
                        </extension>
                </simpleContent>
        </complexType>
                <simpleContent>
                        <extension base="string">
                                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
-                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
+                               <attribute name="deleted" use="optional" type="mw:DeletedFlagType" />
                        </extension>
                </simpleContent>
        </complexType>
 
        <complexType name="ContributorType">
                <sequence>
-                       <element name="username" type="string" minOccurs="0"/>
+                       <element name="username" type="string" minOccurs="0" />
                        <element name="id" type="positiveInteger" minOccurs="0" />
 
-                       <element name="ip" type="string" minOccurs="0"/>
+                       <element name="ip" type="string" minOccurs="0" />
                </sequence>
                <!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
-               <attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
+               <attribute name="deleted" use="optional" type="mw:DeletedFlagType" />
        </complexType>
 
        <complexType name="UploadType">
                <sequence>
                        <!-- Revision-style data... -->
-                       <element name="timestamp" type="dateTime"/>
-                       <element name="contributor" type="mw:ContributorType"/>
-                       <element name="comment" type="string" minOccurs="0"/>
+                       <element name="timestamp" type="dateTime" />
+                       <element name="contributor" type="mw:ContributorType" />
+                       <element name="comment" type="string" minOccurs="0" />
 
                        <!-- Filename. (Using underscores, not spaces. No 'File:' namespace marker.) -->
-                       <element name="filename" type="string"/>
+                       <element name="filename" type="string" />
 
                        <!-- URI at which this resource can be obtained -->
-                       <element name="src" type="anyURI"/>
+                       <element name="src" type="anyURI" />
 
                        <element name="size" type="positiveInteger" />
 
index 9d79e5c..d198b93 100644 (file)
@@ -70,6 +70,8 @@
       <!-- Unique revision ID number (rev_id) in the source database.  -->
       <!-- This number uniquely identifies the revision on that wiki.  -->
       <id>100</id>
+      <!-- revision id of the parent revision -->
+      <parentid>99</parentid>
       <timestamp>2001-01-15T13:15:00Z</timestamp>
       <contributor>
         <username>Foobar</username>
@@ -82,6 +84,7 @@
     </revision>
     
     <revision>
+      <id>99</id>
       <timestamp>2001-01-15T13:10:27Z</timestamp>
       <contributor>
         <ip>10.0.0.2</ip>
index 8d4bdea..147e524 100644 (file)
@@ -331,6 +331,11 @@ descriptions.
 &$module: ApiBase Module object
 &$desc: Array of parameter descriptions
 
+'APIGetResultProperties': use this hook to mofify the properties
+in a module's result.
+&$module: ApiBase Module object
+&$properties: Array of properties
+
 'APIQueryAfterExecute': after calling the execute() method of an
 action=query submodule. Use this to extend core API modules.
 &$module: Module object
@@ -672,6 +677,10 @@ $output: OutputPage object in use
 'CategoryPageView': before viewing a categorypage in CategoryPage::view
 $catpage: CategoryPage instance
 
+'ChangePasswordForm': For extensions that need to add a field to the ChangePassword form
+via the Preferences form
+&$extraFields: An array of arrays that hold fields like would be passed to the pretty function.
+
 'ChangesListInsertArticleLink': Override or augment link to article in RC list.
 &$changesList: ChangesList instance.
 &$articlelink: HTML of link to article (already filled-in).
@@ -921,6 +930,14 @@ $fileVersions: array of undeleted versions. Empty if all versions were restored
 $user: user who performed the undeletion
 $reason: reason
 
+'FormatAutocomments': When an autocomment is formatted by the Linker
+ &$comment: Reference to the accumulated comment. Initially null, when set the default code will be skipped.
+ $pre: Initial part of the parsed comment before the call to the hook.
+ $auto: The extracted part of the parsed comment before the call to the hook.
+ $post: The final part of the parsed comment before the call to the hook.
+ $title: An optional title object used to links to sections. Can be null.
+ $local: Boolean indicating whether section links should refer to local page.
+
 'GetAutoPromoteGroups': When determining which autopromote groups a user
 is entitled to be in.
 &$user: user to promote.
index ca15585..22f4710 100644 (file)
@@ -7,11 +7,14 @@ directory and make a symbolic link:
 
  mediawiki/extensions$ ln -s ../../extensions-trunk/FooBarExt
 
-The extensions are available through svn at:
-    http://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/
+The extensions are available through Git:
+    https://gerrit.wikimedia.org/r/#/admin/projects/
+
+or Subversion:
+    https://svn.wikimedia.org/svnroot/mediawiki/trunk/extensions/
 
 You can find documentation and additional extensions on MediaWiki website:
-    http://www.mediawiki.org/wiki/Category:Extensions
+    https://www.mediawiki.org/wiki/Category:Extensions
 
 
 Please note that under POSIX systems (Linux...), parent of a symbolic path
index ded8c49..eb931d2 100644 (file)
@@ -496,7 +496,7 @@ class Article extends Page {
                if ( $outputPage->isPrintable() ) {
                        $parserOptions->setIsPrintable( true );
                        $parserOptions->setEditSection( false );
-               } elseif ( !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit' ) ) {
+               } elseif ( !$this->isCurrent() || !$this->getTitle()->quickUserCan( 'edit', $user ) ) {
                        $parserOptions->setEditSection( false );
                }
 
@@ -956,7 +956,7 @@ class Article extends Page {
                $user = $this->getContext()->getUser();
                $rcid = $request->getVal( 'rcid' );
 
-               if ( !$rcid || !$this->getTitle()->quickUserCan( 'patrol' ) ) {
+               if ( !$rcid || !$this->getTitle()->quickUserCan( 'patrol', $user ) ) {
                        return;
                }
 
@@ -1137,9 +1137,11 @@ class Article extends Page {
 
                $current = ( $oldid == $this->mPage->getLatest() );
                $language = $this->getContext()->getLanguage();
-               $td = $language->timeanddate( $timestamp, true );
-               $tddate = $language->date( $timestamp, true );
-               $tdtime = $language->time( $timestamp, true );
+               $user = $this->getContext()->getUser();
+
+               $td = $language->userTimeAndDate( $timestamp, $user );
+               $tddate = $language->userDate( $timestamp, $user );
+               $tdtime = $language->userTime( $timestamp, $user );
 
                # Show user links if allowed to see them. If hidden, then show them only if requested...
                $userlinks = Linker::revUserTools( $revision, !$unhide );
@@ -1224,7 +1226,7 @@ class Article extends Page {
                                array( 'known', 'noclasses' )
                        );
 
-               $cdel = Linker::getRevDeleteLink( $this->getContext()->getUser(), $revision, $this->getTitle() );
+               $cdel = Linker::getRevDeleteLink( $user, $revision, $this->getTitle() );
                if ( $cdel !== '' ) {
                        $cdel .= ' ';
                }
@@ -1372,9 +1374,9 @@ class Article extends Page {
                        $this->doDelete( $reason, $suppress );
 
                        if ( $request->getCheck( 'wpWatch' ) && $user->isLoggedIn() ) {
-                               $this->doWatch();
+                               WatchAction::doWatch( $title, $user );
                        } elseif ( $title->userIsWatching() ) {
-                               $this->doUnwatch();
+                               WatchAction::doUnwatch( $title, $user );
                        }
 
                        return;
@@ -1406,7 +1408,7 @@ class Article extends Page {
                        }
                }
 
-               return $this->confirmDelete( $reason );
+               $this->confirmDelete( $reason );
        }
 
        /**
index 78ed450..09eea7d 100644 (file)
@@ -470,6 +470,7 @@ $wgAutoloadLocalClasses = array(
        'MySQLMasterPos' => 'includes/db/DatabaseMysql.php',
        'ORAField' => 'includes/db/DatabaseOracle.php',
        'ORAResult' => 'includes/db/DatabaseOracle.php',
+       'ORMIterator' => 'includes/db/ORMIterator',
        'ORMResult' => 'includes/db/ORMResult.php',
        'ORMRow' => 'includes/db/ORMRow.php',
        'ORMTable' => 'includes/db/ORMTable.php',
@@ -992,6 +993,9 @@ $wgAutoloadLocalClasses = array(
        'AnsiTermColorer'  => 'maintenance/term/MWTerm.php',
        'DummyTermColorer' => 'maintenance/term/MWTerm.php',
 
+       # mw-config
+       'InstallerOverrides' => 'mw-config/overrides.php',
+
        # tests
        'DbTestPreviewer' => 'tests/testHelpers.inc',
        'DbTestRecorder' => 'tests/testHelpers.inc',
index 0af7d7c..ddd01eb 100644 (file)
@@ -122,7 +122,7 @@ class CategoryViewer extends ContextSource {
 
                // Give a proper message if category is empty
                if ( $r == '' ) {
-                       $r = wfMsgExt( 'category-empty', array( 'parse' ) );
+                       $r = $this->msg( 'category-empty' )->parseAsBlock();
                }
 
                $lang = $this->getLanguage();
@@ -369,7 +369,7 @@ class CategoryViewer extends ContextSource {
                if ( $rescnt > 0 ) {
                        # Showing subcategories
                        $r .= "<div id=\"mw-subcategories\">\n";
-                       $r .= '<h2>' . wfMsg( 'subcategories' ) . "</h2>\n";
+                       $r .= '<h2>' . $this->msg( 'subcategories' )->text() . "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'subcat' );
                        $r .= $this->formatList( $this->children, $this->children_start_char );
@@ -383,7 +383,7 @@ class CategoryViewer extends ContextSource {
         * @return string
         */
        function getPagesSection() {
-               $ti = htmlspecialchars( $this->title->getText() );
+               $ti = wfEscapeWikiText( $this->title->getText() );
                # Don't show articles section if there are none.
                $r = '';
 
@@ -398,7 +398,7 @@ class CategoryViewer extends ContextSource {
 
                if ( $rescnt > 0 ) {
                        $r = "<div id=\"mw-pages\">\n";
-                       $r .= '<h2>' . wfMsg( 'category_header', $ti ) . "</h2>\n";
+                       $r .= '<h2>' . $this->msg( 'category_header', $ti )->text() . "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'page' );
                        $r .= $this->formatList( $this->articles, $this->articles_start_char );
@@ -419,7 +419,7 @@ class CategoryViewer extends ContextSource {
                        $countmsg = $this->getCountMessage( $rescnt, $dbcnt, 'file' );
 
                        $r .= "<div id=\"mw-category-media\">\n";
-                       $r .= '<h2>' . wfMsg( 'category-media-header', htmlspecialchars( $this->title->getText() ) ) . "</h2>\n";
+                       $r .= '<h2>' . $this->msg( 'category-media-header', wfEscapeWikiText( $this->title->getText() ) )->text() . "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'file' );
                        if ( $this->showGallery ) {
@@ -576,7 +576,7 @@ class CategoryViewer extends ContextSource {
         * @return String HTML
         */
        private function pagingLinks( $first, $last, $type = '' ) {
-               $prevLink = wfMessage( 'prevn' )->numParams( $this->limit )->escaped();
+               $prevLink = $this->msg( 'prevn' )->numParams( $this->limit )->escaped();
 
                if ( $first != '' ) {
                        $prevQuery = $this->query;
@@ -590,7 +590,7 @@ class CategoryViewer extends ContextSource {
                        );
                }
 
-               $nextLink = wfMessage( 'nextn' )->numParams( $this->limit )->escaped();
+               $nextLink = $this->msg( 'nextn' )->numParams( $this->limit )->escaped();
 
                if ( $last != '' ) {
                        $lastQuery = $this->query;
@@ -688,8 +688,8 @@ class CategoryViewer extends ContextSource {
                        $this->cat->refreshCounts();
                } else {
                        # Case 3: hopeless.  Don't give a total count at all.
-                       return wfMessage( "category-$type-count-limited" )->numParams( $rescnt )->parseAsBlock();
+                       return $this->msg( "category-$type-count-limited" )->numParams( $rescnt )->parseAsBlock();
                }
-               return wfMessage( "category-$type-count" )->numParams( $rescnt, $totalcnt )->parseAsBlock();
+               return $this->msg( "category-$type-count" )->numParams( $rescnt, $totalcnt )->parseAsBlock();
        }
 }
index 8f61096..c2606ce 100644 (file)
@@ -240,7 +240,16 @@ $wgAppleTouchIcon = false;
  * The local filesystem path to a temporary directory. This is not required to
  * be web accessible.
  *
- * Will default to "{$wgUploadDirectory}/tmp" in Setup.php
+ * When this setting is set to false, its value will be set through a call
+ * to wfTempDir(). See that methods implementation for the actul detection
+ * logic.
+ *
+ * Developers should use the global function wfTempDir() instead of this
+ * variable.
+ *
+ * @see wfTempDir()
+ * @note Default modified to false in v1.20
+ *
  */
 $wgTmpDirectory = false;
 
@@ -3459,12 +3468,19 @@ $wgSysopEmailBans = true;
  * Limits on the possible sizes of range blocks.
  *
  * CIDR notation is hard to understand, it's easy to mistakenly assume that a
- * /1 is a small range and a /31 is a large range. Setting this to half the
- * number of bits avoids such errors.
+ * /1 is a small range and a /31 is a large range. For IPv4, setting a limit of
+ * half the number of bits avoids such errors, and allows entire ISPs to be
+ * blocked using a small number of range blocks.
+ *
+ * For IPv6, RFC 3177 recommends that a /48 be allocated to every residential
+ * customer, so range blocks larger than /64 (half the number of bits) will
+ * plainly be required. RFC 4692 implies that a very large ISP may be
+ * allocated a /19 if a generous HD-Ratio of 0.8 is used, so we will use that
+ * as our limit. As of 2012, blocking the whole world would require a /4 range.
  */
 $wgBlockCIDRLimit = array(
        'IPv4' => 16, # Blocks larger than a /16 (64k addresses) will not be allowed
-       'IPv6' => 64, # 2^64 = ~1.8x10^19 addresses
+       'IPv6' => 19,
 );
 
 /**
index 9e337fd..6e6f825 100644 (file)
@@ -1063,7 +1063,6 @@ class EditPage {
                                        '</div>';
                                return true;
                }
-               return false;
        }
 
        /**
index 0bfcd74..aa571f4 100644 (file)
@@ -468,7 +468,7 @@ class XmlDumpWriter {
         * @return string
         */
        function schemaVersion() {
-               return "0.6";
+               return "0.7";
        }
 
        /**
@@ -626,6 +626,9 @@ class XmlDumpWriter {
 
                $out  = "    <revision>\n";
                $out .= "      " . Xml::element( 'id', null, strval( $row->rev_id ) ) . "\n";
+               if( $row->rev_parent_id ) {
+                       $out .= "      " . Xml::element( 'parentid', null, strval( $row->rev_parent_id ) ) . "\n";
+               }
 
                $out .= $this->writeTimestamp( $row->rev_timestamp );
 
@@ -789,10 +792,15 @@ class XmlDumpWriter {
                } else {
                        $contents = '';
                }
+               if ( $file->isDeleted( File::DELETED_COMMENT ) ) {
+                       $comment = Xml::element( 'comment', array( 'deleted' => 'deleted' ) );
+               } else {
+                       $comment = Xml::elementClean( 'comment', null, $file->getDescription() );
+               }
                return "    <upload>\n" .
                        $this->writeTimestamp( $file->getTimestamp() ) .
                        $this->writeContributor( $file->getUser( 'id' ), $file->getUser( 'text' ) ) .
-                       "      " . Xml::elementClean( 'comment', null, $file->getDescription() ) . "\n" .
+                       "      " . $comment . "\n" .
                        "      " . Xml::element( 'filename', null, $file->getName() ) . "\n" .
                        $archiveName .
                        "      " . Xml::element( 'src', null, $file->getCanonicalUrl() ) . "\n" .
index 4cfd946..ba9bf74 100644 (file)
@@ -2610,11 +2610,10 @@ function swap( &$x, &$y ) {
 }
 
 /**
- * Tries to get the system directory for temporary files. The TMPDIR, TMP, and
- * TEMP environment variables are then checked in sequence, and if none are set
- * try sys_get_temp_dir() for PHP >= 5.2.1. All else fails, return /tmp for Unix
- * or C:\Windows\Temp for Windows and hope for the best.
- * It is common to call it with tempnam().
+ * Tries to get the system directory for temporary files. First
+ * $wgTmpDirectory is checked, and then the TMPDIR, TMP, and TEMP
+ * environment variables are then checked in sequence, and if none are
+ * set try sys_get_temp_dir().
  *
  * NOTE: When possible, use instead the tmpfile() function to create
  * temporary files to avoid race conditions on file creation, etc.
@@ -2622,8 +2621,15 @@ function swap( &$x, &$y ) {
  * @return String
  */
 function wfTempDir() {
-       foreach( array( 'TMPDIR', 'TMP', 'TEMP' ) as $var ) {
-               $tmp = getenv( $var );
+       global $wgTmpDirectory;
+
+       if ( $wgTmpDirectory !== false ) {
+               return $wgTmpDirectory;
+       }
+
+       $tmpDir = array_map( "getenv", array( 'TMPDIR', 'TMP', 'TEMP' ) );
+
+       foreach( $tmpDir as $tmp ) {
                if( $tmp && file_exists( $tmp ) && is_dir( $tmp ) && is_writable( $tmp ) ) {
                        return $tmp;
                }
index c149965..36008fb 100644 (file)
@@ -142,16 +142,33 @@ class HTMLForm extends ContextSource {
        protected $mButtons = array();
 
        protected $mWrapperLegend = false;
-       
+
        /**
         * If true, sections that contain both fields and subsections will
         * render their subsections before their fields.
-        * 
+        *
         * Subclasses may set this to false to render subsections after fields
         * instead.
         */
        protected $mSubSectionBeforeFields = true;
 
+       /**
+        * Format in which to display form. For viable options,
+        * @see $availableDisplayFormats
+        * @var String
+        */
+       protected $displayFormat = 'table';
+
+       /**
+        * Available formats in which to display the form
+        * @var Array
+        */
+       protected $availableDisplayFormats = array(
+               'table',
+               'div',
+               'raw',
+       );
+
        /**
         * Build a new HTMLForm from an array of field attributes
         * @param $descriptor Array of Field constructs, as described above
@@ -160,13 +177,13 @@ class HTMLForm extends ContextSource {
         * @param $messagePrefix String a prefix to go in front of default messages
         */
        public function __construct( $descriptor, /*IContextSource*/ $context = null, $messagePrefix = '' ) {
-               if( $context instanceof IContextSource ){
+               if ( $context instanceof IContextSource ) {
                        $this->setContext( $context );
                        $this->mTitle = false; // We don't need them to set a title
                        $this->mMessagePrefix = $messagePrefix;
                } else {
                        // B/C since 1.18
-                       if( is_string( $context ) && $messagePrefix === '' ){
+                       if ( is_string( $context ) && $messagePrefix === '' ) {
                                // it's actually $messagePrefix
                                $this->mMessagePrefix = $context;
                        }
@@ -210,6 +227,28 @@ class HTMLForm extends ContextSource {
                $this->mFieldTree = $loadedDescriptor;
        }
 
+       /**
+        * Set format in which to display the form
+        * @param $format String the name of the format to use, must be one of
+        *        $this->availableDisplayFormats
+        * @since 1.20
+        */
+       public function setDisplayFormat( $format ) {
+               if ( !in_array( $format, $this->availableDisplayFormats ) ) {
+                       throw new MWException ( 'Display format must be one of ' . print_r( $this->availableDisplayFormats, true ) );
+               }
+               $this->displayFormat = $format;
+       }
+
+       /**
+        * Getter for displayFormat
+        * @since 1.20
+        * @return String
+        */
+       public function getDisplayFormat() {
+               return $this->displayFormat;
+       }
+
        /**
         * Add the HTMLForm-specific JavaScript, if it hasn't been
         * done already.
@@ -275,7 +314,7 @@ class HTMLForm extends ContextSource {
                        $editToken = $this->getRequest()->getVal( 'wpEditToken' );
                        if ( $this->getUser()->isLoggedIn() || $editToken != null ) {
                                // Session tokens for logged-out users have no security value.
-                               // However, if the user gave one, check it in order to give a nice 
+                               // However, if the user gave one, check it in order to give a nice
                                // "session expired" error instead of "permission denied" or such.
                                $submit = $this->getUser()->matchEditToken( $editToken );
                        } else {
@@ -543,7 +582,7 @@ class HTMLForm extends ContextSource {
                global $wgArticlePath;
 
                $html = '';
-               if( $this->getMethod() == 'post' ){
+               if ( $this->getMethod() == 'post' ) {
                        $html .= Html::hidden( 'wpEditToken', $this->getUser()->getEditToken(), array( 'id' => 'wpEditToken' ) ) . "\n";
                        $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
                }
@@ -688,7 +727,7 @@ class HTMLForm extends ContextSource {
         * @param $msg String message key
         */
        public function setSubmitTextMsg( $msg ) {
-               return $this->setSubmitText( $this->msg( $msg )->text() );
+               $this->setSubmitText( $this->msg( $msg )->text() );
        }
 
        /**
@@ -736,7 +775,7 @@ class HTMLForm extends ContextSource {
         * @param $msg String message key
         */
        public function setWrapperLegendMsg( $msg ) {
-               return $this->setWrapperLegend( $this->msg( $msg )->escaped() );
+               $this->setWrapperLegend( $this->msg( $msg )->escaped() );
        }
 
        /**
@@ -786,20 +825,25 @@ class HTMLForm extends ContextSource {
         * @param $fieldsetIDPrefix string ID prefix for the <fieldset> tag of each subsection, ignored if empty
         * @return String
         */
-       function displaySection( $fields, $sectionName = '', $fieldsetIDPrefix = '' ) {
-               $tableHtml = '';
+       public function displaySection( $fields, $sectionName = '', $fieldsetIDPrefix = '' ) {
+               $displayFormat = $this->getDisplayFormat();
+
+               $html = '';
                $subsectionHtml = '';
-               $hasLeftColumn = false;
+               $hasLabel = false;
+
+               $getFieldHtmlMethod = ( $displayFormat == 'table' ) ? 'getTableRow' : 'get' . ucfirst( $displayFormat );
 
                foreach ( $fields as $key => $value ) {
-                       if ( is_object( $value ) ) {
+                       if ( $value instanceof HTMLFormField ) {
                                $v = empty( $value->mParams['nodata'] )
                                        ? $this->mFieldData[$key]
                                        : $value->getDefault();
-                               $tableHtml .= $value->getTableRow( $v );
+                               $html .= $value->$getFieldHtmlMethod( $v );
 
-                               if ( $value->getLabel() != '&#160;' ) {
-                                       $hasLeftColumn = true;
+                               $labelValue = trim( $value->getLabel() );
+                               if ( $labelValue != '&#160;' && $labelValue !== '' ) {
+                                       $hasLabel = true;
                                }
                        } elseif ( is_array( $value ) ) {
                                $section = $this->displaySection( $value, $key );
@@ -818,27 +862,33 @@ class HTMLForm extends ContextSource {
                        }
                }
 
-               $classes = array();
+               if ( $displayFormat !== 'raw' ) {
+                       $classes = array();
 
-               if ( !$hasLeftColumn ) { // Avoid strange spacing when no labels exist
-                       $classes[] = 'mw-htmlform-nolabel';
-               }
+                       if ( !$hasLabel ) { // Avoid strange spacing when no labels exist
+                               $classes[] = 'mw-htmlform-nolabel';
+                       }
 
-               $attribs = array(
-                       'class' => implode( ' ', $classes ),
-               );
+                       $attribs = array(
+                               'class' => implode( ' ', $classes ),
+                       );
 
-               if ( $sectionName ) {
-                       $attribs['id'] = Sanitizer::escapeId( "mw-htmlform-$sectionName" );
-               }
+                       if ( $sectionName ) {
+                               $attribs['id'] = Sanitizer::escapeId( "mw-htmlform-$sectionName" );
+                       }
 
-               $tableHtml = Html::rawElement( 'table', $attribs,
-                       Html::rawElement( 'tbody', array(), "\n$tableHtml\n" ) ) . "\n";
+                       if ( $displayFormat === 'table' ) {
+                               $html = Html::rawElement( 'table', $attribs,
+                                       Html::rawElement( 'tbody', array(), "\n$html\n" ) ) . "\n";
+                       } elseif ( $displayFormat === 'div' ) {
+                               $html = Html::rawElement( 'div', $attribs, "\n$html\n" );
+                       }
+               }
 
                if ( $this->mSubSectionBeforeFields ) {
-                       return $subsectionHtml . "\n" . $tableHtml;
+                       return $subsectionHtml . "\n" . $html;
                } else {
-                       return $tableHtml . "\n" . $subsectionHtml;
+                       return $html . "\n" . $subsectionHtml;
                }
        }
 
@@ -1055,7 +1105,7 @@ abstract class HTMLFormField {
                        $this->mFilterCallback = $params['filter-callback'];
                }
 
-               if ( isset( $params['flatlist'] ) ){
+               if ( isset( $params['flatlist'] ) ) {
                        $this->mClass .= ' mw-htmlform-flatlist';
                }
        }
@@ -1067,35 +1117,27 @@ abstract class HTMLFormField {
         * @return String complete HTML table row.
         */
        function getTableRow( $value ) {
-               # Check for invalid data.
-
-               $errors = $this->validate( $value, $this->mParent->mFieldData );
-
+               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $fieldType = get_class( $this );
+               $helptext = $this->getHelpTextHtmlTable( $this->getHelpText() );
                $cellAttributes = array();
-               $verticalLabel = false;
 
-               if ( !empty($this->mParams['vertical-label']) ) {
+               if ( !empty( $this->mParams['vertical-label'] ) ) {
                        $cellAttributes['colspan'] = 2;
                        $verticalLabel = true;
-               }
-
-               if ( $errors === true || ( !$this->mParent->getRequest()->wasPosted() && ( $this->mParent->getMethod() == 'post' ) ) ) {
-                       $errors = '';
-                       $errorClass = '';
                } else {
-                       $errors = self::formatErrors( $errors );
-                       $errorClass = 'mw-htmlform-invalid-input';
+                       $verticalLabel = false;
                }
 
                $label = $this->getLabelHtml( $cellAttributes );
+
                $field = Html::rawElement(
                        'td',
                        array( 'class' => 'mw-input' ) + $cellAttributes,
-                       $this->getInputHTML( $value ) . "\n$errors"
+                       $inputHtml . "\n$errors"
                );
 
-               $fieldType = get_class( $this );
-
                if ( $verticalLabel ) {
                        $html = Html::rawElement( 'tr',
                                array( 'class' => 'mw-htmlform-vertical-label' ), $label );
@@ -1108,6 +1150,109 @@ abstract class HTMLFormField {
                                $label . $field );
                }
 
+               return $html . $helptext;
+       }
+
+       /**
+        * Get the complete div for the input, including help text,
+        * labels, and whatever.
+        * @since 1.20
+        * @param $value String the value to set the input to.
+        * @return String complete HTML table row.
+        */
+       public function getDiv( $value ) {
+               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $fieldType = get_class( $this );
+               $helptext = $this->getHelpTextHtmlDiv( $this->getHelpText() );
+               $cellAttributes = array();
+               $label = $this->getLabelHtml( $cellAttributes );
+
+               $field = Html::rawElement(
+                       'div',
+                       array( 'class' => 'mw-input' ) + $cellAttributes,
+                       $inputHtml . "\n$errors"
+               );
+               $html = Html::rawElement( 'div',
+                       array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
+                       $label . $field );
+               $html .= $helptext;
+               return $html;
+       }
+
+       /**
+        * Get the complete raw fields for the input, including help text,
+        * labels, and whatever.
+        * @since 1.20
+        * @param $value String the value to set the input to.
+        * @return String complete HTML table row.
+        */
+       public function getRaw( $value ) {
+               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $fieldType = get_class( $this );
+               $helptext = $this->getHelpTextHtmlRaw( $this->getHelpText() );
+               $cellAttributes = array();
+               $label = $this->getLabelHtml( $cellAttributes );
+
+               $html = "\n$errors";
+               $html .= $label;
+               $html .= $inputHtml;
+               $html .= $helptext;
+               return $html;
+       }
+
+       /**
+        * Generate help text HTML in table format
+        * @since 1.20
+        * @param $helptext String|null
+        * @return String
+        */
+       public function getHelpTextHtmlTable( $helptext ) {
+               if ( is_null( $helptext ) ) {
+                       return '';
+               }
+
+               $row = Html::rawElement(
+                       'td',
+                       array( 'colspan' => 2, 'class' => 'htmlform-tip' ),
+                       $helptext
+               );
+               $row = Html::rawElement( 'tr', array(), $row );
+               return $row;
+       }
+
+       /**
+        * Generate help text HTML in div format
+        * @since 1.20
+        * @param $helptext String|null
+        * @return String
+        */
+       public function getHelpTextHtmlDiv( $helptext ) {
+               if ( is_null( $helptext ) ) {
+                       return '';
+               }
+
+               $div = Html::rawElement( 'div', array( 'class' => 'htmlform-tip' ), $helptext );
+               return $div;
+       }
+
+       /**
+        * Generate help text HTML formatted for raw output
+        * @since 1.20
+        * @param $helptext String|null
+        * @return String
+        */
+       public function getHelpTextHtmlRaw( $helptext ) {
+               return $this->getHelpTextHtmlDiv( $helptext );
+       }
+
+       /**
+        * Determine the help text to display
+        * @since 1.20
+        * @return String
+        */
+       public function getHelpText() {
                $helptext = null;
 
                if ( isset( $this->mParams['help-message'] ) ) {
@@ -1115,12 +1260,12 @@ abstract class HTMLFormField {
                }
 
                if ( isset( $this->mParams['help-messages'] ) ) {
-                       foreach( $this->mParams['help-messages'] as $name ) {
+                       foreach ( $this->mParams['help-messages'] as $name ) {
                                $helpMessage = (array)$name;
                                $msg = wfMessage( array_shift( $helpMessage ), $helpMessage );
 
-                               if( $msg->exists() ) {
-                                       if( is_null( $helptext ) ) {
+                               if ( $msg->exists() ) {
+                                       if ( is_null( $helptext ) ) {
                                                $helptext = '';
                                        } else {
                                                $helptext .= wfMessage( 'word-separator' )->escaped(); // some space
@@ -1132,23 +1277,32 @@ abstract class HTMLFormField {
                elseif ( isset( $this->mParams['help'] ) ) {
                        $helptext = $this->mParams['help'];
                }
+               return $helptext;
+       }
 
-               if ( !is_null( $helptext ) ) {
-                       $row = Html::rawElement(
-                               'td',
-                               array( 'colspan' => 2, 'class' => 'htmlform-tip' ),
-                               $helptext
-                       );
-                       $row = Html::rawElement( 'tr', array(), $row );
-                       $html .= "$row\n";
-               }
+       /**
+        * Determine form errors to display and their classes
+        * @since 1.20
+        * @param $value String the value of the input
+        * @return Array
+        */
+       public function getErrorsAndErrorClass( $value ) {
+               $errors = $this->validate( $value, $this->mParent->mFieldData );
 
-               return $html;
+               if ( $errors === true || ( !$this->mParent->getRequest()->wasPosted() && ( $this->mParent->getMethod() == 'post' ) ) ) {
+                       $errors = '';
+                       $errorClass = '';
+               } else {
+                       $errors = self::formatErrors( $errors );
+                       $errorClass = 'mw-htmlform-invalid-input';
+               }
+               return array( $errors, $errorClass );
        }
 
        function getLabel() {
                return $this->mLabel;
        }
+
        function getLabelHtml( $cellAttributes = array() ) {
                # Don't output a for= attribute for labels with no associated input.
                # Kind of hacky here, possibly we don't want these to be <label>s at all.
@@ -1158,9 +1312,20 @@ abstract class HTMLFormField {
                        $for['for'] = $this->mID;
                }
 
-               return Html::rawElement( 'td', array( 'class' => 'mw-label' ) + $cellAttributes,
-                       Html::rawElement( 'label', $for, $this->getLabel() )
-               );
+               $displayFormat = $this->mParent->getDisplayFormat();
+               $labelElement = Html::rawElement( 'label', $for, $this->getLabel() );
+
+               if ( $displayFormat == 'table' ) {
+                       return Html::rawElement( 'td', array( 'class' => 'mw-label' ) + $cellAttributes,
+                               Html::rawElement( 'label', $for, $this->getLabel() )
+                       );
+               } elseif ( $displayFormat == 'div' ) {
+                       return Html::rawElement( 'div', array( 'class' => 'mw-label' ) + $cellAttributes,
+                               Html::rawElement( 'label', $for, $this->getLabel() )
+                       );
+               } else {
+                       return $labelElement;
+               }
        }
 
        function getDefault() {
@@ -1252,7 +1417,7 @@ class HTMLTextField extends HTMLFormField {
                if ( $this->mClass !== '' ) {
                        $attribs['class'] = $this->mClass;
                }
-               
+
                if ( isset( $this->mParams['maxlength'] ) ) {
                        $attribs['maxlength'] = $this->mParams['maxlength'];
                }
@@ -1326,7 +1491,7 @@ class HTMLTextAreaField extends HTMLFormField {
                if ( $this->mClass !== '' ) {
                        $attribs['class'] = $this->mClass;
                }
-               
+
                if ( !empty( $this->mParams['disabled'] ) ) {
                        $attribs['disabled'] = 'disabled';
                }
@@ -1437,7 +1602,7 @@ class HTMLCheckField extends HTMLFormField {
                if ( !empty( $this->mParams['disabled'] ) ) {
                        $attr['disabled'] = 'disabled';
                }
-               
+
                if ( $this->mClass !== '' ) {
                        $attr['class'] = $this->mClass;
                }
@@ -1469,7 +1634,7 @@ class HTMLCheckField extends HTMLFormField {
                // Fetch the value in either one of the two following case:
                // - we have a valid token (form got posted or GET forged by the user)
                // - checkbox name has a value (false or true), ie is not null
-               if ( $request->getCheck( 'wpEditToken' ) || $request->getVal( $this->mName )!== null ) {
+               if ( $request->getCheck( 'wpEditToken' ) || $request->getVal( $this->mName ) !== null ) {
                        // XOR has the following truth table, which is what we want
                        // INVERT VALUE | OUTPUT
                        // true   true  | false
@@ -1508,8 +1673,8 @@ class HTMLSelectField extends HTMLFormField {
                # If one of the options' 'name' is int(0), it is automatically selected.
                # because PHP sucks and thinks int(0) == 'some string'.
                # Working around this by forcing all of them to strings.
-               foreach( $this->mParams['options'] as &$opt ){
-                       if( is_int( $opt ) ){
+               foreach ( $this->mParams['options'] as &$opt ) {
+                       if ( is_int( $opt ) ) {
                                $opt = strval( $opt );
                        }
                }
@@ -1518,7 +1683,7 @@ class HTMLSelectField extends HTMLFormField {
                if ( !empty( $this->mParams['disabled'] ) ) {
                        $select->setAttribute( 'disabled', 'disabled' );
                }
-               
+
                if ( $this->mClass !== '' ) {
                        $select->setAttribute( 'class', $this->mClass );
                }
@@ -1583,7 +1748,7 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                if ( isset( $this->mParams['maxlength'] ) ) {
                        $tbAttribs['maxlength'] = $this->mParams['maxlength'];
                }
-               
+
                if ( $this->mClass !== '' ) {
                        $tbAttribs['class'] = $this->mClass;
                }
@@ -1686,7 +1851,7 @@ class HTMLMultiSelectField extends HTMLFormField {
         */
        function loadDataFromRequest( $request ) {
                if ( $this->mParent->getMethod() == 'post' ) {
-                       if( $request->wasPosted() ){
+                       if ( $request->wasPosted() ) {
                                # Checkboxes are just not added to the request arrays if they're not checked,
                                # so it's perfectly possible for there not to be an entry at all
                                return $request->getArray( $this->mName, array() );
@@ -1732,7 +1897,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
 
        function __construct( $params ) {
                if ( array_key_exists( 'other', $params ) ) {
-               } elseif( array_key_exists( 'other-message', $params ) ){
+               } elseif ( array_key_exists( 'other-message', $params ) ) {
                        $params['other'] = wfMessage( $params['other-message'] )->plain();
                } else {
                        $params['other'] = null;
@@ -1740,7 +1905,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
 
                if ( array_key_exists( 'options', $params ) ) {
                        # Options array already specified
-               } elseif( array_key_exists( 'options-message', $params ) ){
+               } elseif ( array_key_exists( 'options-message', $params ) ) {
                        # Generate options array from a system message
                        $params['options'] = self::parseMessage(
                                wfMessage( $params['options-message'] )->inContentLanguage()->plain(),
@@ -1762,8 +1927,8 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
         * @return Array
         * TODO: this is copied from Xml::listDropDown(), deprecate/avoid duplication?
         */
-       public static function parseMessage( $string, $otherName=null ) {
-               if( $otherName === null ){
+       public static function parseMessage( $string, $otherName = null ) {
+               if ( $otherName === null ) {
                        $otherName = wfMessage( 'htmlform-selectorother-other' )->plain();
                }
 
@@ -1774,14 +1939,14 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        $value = trim( $option );
                        if ( $value == '' ) {
                                continue;
-                       } elseif ( substr( $value, 0, 1) == '*' && substr( $value, 1, 1) != '*' ) {
+                       } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
                                # A new group is starting...
                                $value = trim( substr( $value, 1 ) );
                                $optgroup = $value;
-                       } elseif ( substr( $value, 0, 2) == '**' ) {
+                       } elseif ( substr( $value, 0, 2 ) == '**' ) {
                                # groupmember
                                $opt = trim( substr( $value, 2 ) );
-                               if( $optgroup === false ){
+                               if ( $optgroup === false ) {
                                        $options[$opt] = $opt;
                                } else {
                                        $options[$optgroup][$opt] = $opt;
@@ -1803,7 +1968,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        'id' => $this->mID . '-other',
                        'size' => $this->getSize(),
                );
-               
+
                if ( $this->mClass !== '' ) {
                        $textAttribs['class'] = $this->mClass;
                }
@@ -1836,11 +2001,11 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
 
                        if ( $list == 'other' ) {
                                $final = $text;
-                       } elseif( !in_array( $list, $this->mFlatOptions ) ){
+                       } elseif ( !in_array( $list, $this->mFlatOptions ) ) {
                                # User has spoofed the select form to give an option which wasn't
                                # in the original offer.  Sulk...
                                $final = $text;
-                       } elseif( $text == '' ) {
+                       } elseif ( $text == '' ) {
                                $final = $list;
                        } else {
                                $final = $list . wfMsgForContent( 'colon-separator' ) . $text;
@@ -1853,7 +2018,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        $text = $final;
                        foreach ( $this->mFlatOptions as $option ) {
                                $match = $option . wfMsgForContent( 'colon-separator' );
-                               if( strpos( $text, $match ) === 0 ) {
+                               if ( strpos( $text, $match ) === 0 ) {
                                        $list = $option;
                                        $text = substr( $text, strlen( $match ) );
                                        break;
@@ -1879,7 +2044,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        return $p;
                }
 
-               if( isset( $this->mParams['required'] ) && $value[1] === '' ){
+               if ( isset( $this->mParams['required'] ) && $value[1] === '' ) {
                        return wfMsgExt( 'htmlform-required', 'parseinline' );
                }
 
@@ -1965,17 +2130,17 @@ class HTMLRadioField extends HTMLFormField {
  * An information field (text blob), not a proper input.
  */
 class HTMLInfoField extends HTMLFormField {
-       function __construct( $info ) {
+       public function __construct( $info ) {
                $info['nodata'] = true;
 
                parent::__construct( $info );
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                return !empty( $this->mParams['raw'] ) ? $value : htmlspecialchars( $value );
        }
 
-       function getTableRow( $value ) {
+       public function getTableRow( $value ) {
                if ( !empty( $this->mParams['rawrow'] ) ) {
                        return $value;
                }
@@ -1983,6 +2148,28 @@ class HTMLInfoField extends HTMLFormField {
                return parent::getTableRow( $value );
        }
 
+       /**
+        * @since 1.20
+        */
+       public function getDiv( $value ) {
+               if ( !empty( $this->mParams['rawrow'] ) ) {
+                       return $value;
+               }
+
+               return parent::getDiv( $value );
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getRaw( $value ) {
+               if ( !empty( $this->mParams['rawrow'] ) ) {
+                       return $value;
+               }
+
+               return parent::getRaw( $value );
+       }
+
        protected function needsLabel() {
                return false;
        }
@@ -2012,6 +2199,20 @@ class HTMLHiddenField extends HTMLFormField {
                return '';
        }
 
+       /**
+        * @since 1.20
+        */
+       public function getDiv( $value ) {
+               return $this->getTableRow( $value );
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getRaw( $value ) {
+               return $this->getTableRow( $value );
+       }
+
        public function getInputHTML( $value ) { return ''; }
 }
 
@@ -2021,12 +2222,12 @@ class HTMLHiddenField extends HTMLFormField {
  */
 class HTMLSubmitField extends HTMLFormField {
 
-       function __construct( $info ) {
+       public function __construct( $info ) {
                $info['nodata'] = true;
                parent::__construct( $info );
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                return Xml::submitButton(
                        $value,
                        array(
@@ -2047,7 +2248,7 @@ class HTMLSubmitField extends HTMLFormField {
         * @param $alldata Array
         * @return Bool
         */
-       public function validate( $value, $alldata ){
+       public function validate( $value, $alldata ) {
                return true;
        }
 }
@@ -2058,6 +2259,30 @@ class HTMLEditTools extends HTMLFormField {
        }
 
        public function getTableRow( $value ) {
+               $msg = $this->formatMsg();
+
+               return '<tr><td></td><td class="mw-input">'
+                       . '<div class="mw-editTools">'
+                       . $msg->parseAsBlock()
+                       . "</div></td></tr>\n";
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getDiv( $value ) {
+               $msg = $this->formatMsg();
+               return '<div class="mw-editTools">' . $msg->parseAsBlock() . '</div>';
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getRaw( $value ) {
+               return $this->getDiv( $value );
+       }
+
+       protected function formatMsg() {
                if ( empty( $this->mParams['message'] ) ) {
                        $msg = wfMessage( 'edittools' );
                } else {
@@ -2067,11 +2292,6 @@ class HTMLEditTools extends HTMLFormField {
                        }
                }
                $msg->inContentLanguage();
-
-
-               return '<tr><td></td><td class="mw-input">'
-                       . '<div class="mw-editTools">'
-                       . $msg->parseAsBlock()
-                       . "</div></td></tr>\n";
+               return $msg;
        }
 }
index 63e9894..8f683e9 100644 (file)
@@ -990,7 +990,7 @@ class ImageHistoryList extends ContextSource {
                $img = $iscur ? $file->getName() : $file->getArchiveName();
                $userId = $file->getUser( 'id' );
                $userText = $file->getUser( 'text' );
-               $description = $file->getDescription();
+               $description = $file->getDescription( File::FOR_THIS_USER, $user );
 
                $local = $this->current->isLocal();
                $row = $selected = '';
@@ -1114,8 +1114,11 @@ class ImageHistoryList extends ContextSource {
                        $row .= '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
                } else {
                        if ( $local ) {
-                               $row .= Linker::userLink( $userId, $userText ) . ' <span style="white-space: nowrap;">' .
-                               Linker::userToolLinks( $userId, $userText ) . '</span>';
+                               $row .= Linker::userLink( $userId, $userText );
+                               $row .= $this->getContext()->msg( 'word-separator' )->plain();
+                               $row .= '<span style="white-space: nowrap;">';
+                               $row .= Linker::userToolLinks( $userId, $userText );
+                               $row .= '</span>';
                        } else {
                                $row .= htmlspecialchars( $userText );
                        }
index 722df3a..9fcac65 100644 (file)
@@ -1041,7 +1041,10 @@ class Linker {
                wfRunHooks( 'UserToolLinksEdit', array( $userId, $userText, &$items ) );
 
                if ( $items ) {
-                       return ' <span class="mw-usertoollinks">' . wfMessage( 'parentheses' )->rawParams( $wgLang->pipeList( $items ) )->escaped() . '</span>';
+                       return wfMessage( 'word-separator' )->plain()
+                               . '<span class="mw-usertoollinks">'
+                               . wfMessage( 'parentheses' )->rawParams( $wgLang->pipeList( $items ) )->escaped()
+                               . '</span>';
                } else {
                        return '';
                }
@@ -1125,8 +1128,9 @@ class Linker {
                } elseif ( $rev->userCan( Revision::DELETED_USER ) ) {
                        $userId = $rev->getUser( Revision::FOR_THIS_USER );
                        $userText = $rev->getUserText( Revision::FOR_THIS_USER );
-                       $link = self::userLink( $userId, $userText ) .
-                               ' ' . self::userToolLinks( $userId, $userText );
+                       $link = self::userLink( $userId, $userText )
+                               . wfMessage( 'word-separator' )->plain()
+                               . self::userToolLinks( $userId, $userText );
                } else {
                        $link = wfMsgHtml( 'rev-deleted-user' );
                }
@@ -1212,41 +1216,45 @@ class Linker {
                $pre = $match[1];
                $auto = $match[2];
                $post = $match[3];
-               $link = '';
-               if ( $title ) {
-                       $section = $auto;
-
-                       # Remove links that a user may have manually put in the autosummary
-                       # This could be improved by copying as much of Parser::stripSectionName as desired.
-                       $section = str_replace( '[[:', '', $section );
-                       $section = str_replace( '[[', '', $section );
-                       $section = str_replace( ']]', '', $section );
-
-                       $section = Sanitizer::normalizeSectionNameWhitespace( $section ); # bug 22784
-                       if ( $local ) {
-                               $sectionTitle = Title::newFromText( '#' . $section );
-                       } else {
-                               $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
-                                       $title->getDBkey(), $section );
+               $comment = null;
+               wfRunHooks( 'FormatAutocomments', array( &$comment, $pre, $auto, $post, $title, $local ) );
+               if ( $comment === null ) {
+                       $link = '';
+                       if ( $title ) {
+                               $section = $auto;
+
+                               # Remove links that a user may have manually put in the autosummary
+                               # This could be improved by copying as much of Parser::stripSectionName as desired.
+                               $section = str_replace( '[[:', '', $section );
+                               $section = str_replace( '[[', '', $section );
+                               $section = str_replace( ']]', '', $section );
+
+                               $section = Sanitizer::normalizeSectionNameWhitespace( $section ); # bug 22784
+                               if ( $local ) {
+                                       $sectionTitle = Title::newFromText( '#' . $section );
+                               } else {
+                                       $sectionTitle = Title::makeTitleSafe( $title->getNamespace(),
+                                               $title->getDBkey(), $section );
+                               }
+                               if ( $sectionTitle ) {
+                                       $link = self::link( $sectionTitle,
+                                               $wgLang->getArrow(), array(), array(),
+                                               'noclasses' );
+                               } else {
+                                       $link = '';
+                               }
                        }
-                       if ( $sectionTitle ) {
-                               $link = self::link( $sectionTitle,
-                                       $wgLang->getArrow(), array(), array(),
-                                       'noclasses' );
-                       } else {
-                               $link = '';
+                       if ( $pre ) {
+                               # written summary $presep autocomment (summary /* section */)
+                               $pre .= wfMsgExt( 'autocomment-prefix', array( 'escapenoentities', 'content' ) );
                        }
+                       if ( $post ) {
+                               # autocomment $postsep written summary (/* section */ summary)
+                               $auto .= wfMsgExt( 'colon-separator', array( 'escapenoentities', 'content' ) );
+                       }
+                       $auto = '<span class="autocomment">' . $auto . '</span>';
+                       $comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
                }
-               if ( $pre ) {
-                       # written summary $presep autocomment (summary /* section */)
-                       $pre .= wfMsgExt( 'autocomment-prefix', array( 'escapenoentities', 'content' ) );
-               }
-               if ( $post ) {
-                       # autocomment $postsep written summary (/* section */ summary)
-                       $auto .= wfMsgExt( 'colon-separator', array( 'escapenoentities', 'content' ) );
-               }
-               $auto = '<span class="autocomment">' . $auto . '</span>';
-               $comment = $pre . $link . $wgLang->getDirMark() . '<span dir="auto">' . $auto . $post . '</span>';
                return $comment;
        }
 
index 438a99a..bcd6d14 100644 (file)
@@ -682,35 +682,24 @@ abstract class AlphabeticPager extends IndexPager {
                        return $this->mNavigationBar;
                }
 
-               $lang = $this->getLanguage();
-
-               $opts = array( 'parsemag', 'escapenoentities' );
                $linkTexts = array(
-                       'prev' => wfMsgExt(
-                               'prevn',
-                               $opts,
-                               $lang->formatNum( $this->mLimit )
-                       ),
-                       'next' => wfMsgExt(
-                               'nextn',
-                               $opts,
-                               $lang->formatNum($this->mLimit )
-                       ),
-                       'first' => wfMsgExt( 'page_first', $opts ),
-                       'last' => wfMsgExt( 'page_last', $opts )
+                       'prev' => $this->msg( 'prevn' )->numParams( $this->mLimit )->escaped(),
+                       'next' => $this->msg( 'nextn' )->numParams( $this->mLimit )->escaped(),
+                       'first' => $this->msg( 'page_first' )->escaped(),
+                       'last' => $this->msg( 'page_last' )->escaped()
                );
 
+               $lang = $this->getLanguage();
+
                $pagingLinks = $this->getPagingLinks( $linkTexts );
                $limitLinks = $this->getLimitLinks();
                $limits = $lang->pipeList( $limitLinks );
 
-               $this->mNavigationBar = wfMessage( 'parentheses' )->rawParams(
-                       $lang->pipeList(
-                               array( $pagingLinks['first'],
-                                       $pagingLinks['last'] )
-                       ) )->escaped() . " " .
-                       wfMsgHtml( 'viewprevnext', $pagingLinks['prev'],
-                               $pagingLinks['next'], $limits );
+               $this->mNavigationBar = $this->msg( 'parentheses' )->rawParams(
+                       $lang->pipeList( array( $pagingLinks['first'],
+                       $pagingLinks['last'] ) ) )->escaped() . " " .
+                       $this->msg( 'viewprevnext' )->rawParams( $pagingLinks['prev'],
+                               $pagingLinks['next'], $limits )->escaped();
 
                if( !is_array( $this->getIndexField() ) ) {
                        # Early return to avoid undue nesting
@@ -724,21 +713,21 @@ abstract class AlphabeticPager extends IndexPager {
                        if( $first ) {
                                $first = false;
                        } else {
-                               $extra .= wfMsgExt( 'pipe-separator' , 'escapenoentities' );
+                               $extra .= $this->msg( 'pipe-separator' )->escaped();
                        }
 
                        if( $order == $this->mOrderType ) {
-                               $extra .= wfMsgHTML( $msgs[$order] );
+                               $extra .= $this->msg( $msgs[$order] )->escaped();
                        } else {
                                $extra .= $this->makeLink(
-                                       wfMsgHTML( $msgs[$order] ),
+                                       $this->msg( $msgs[$order] )->escaped(),
                                        array( 'order' => $order )
                                );
                        }
                }
 
                if( $extra !== '' ) {
-                       $extra = ' ' . wfMessage( 'parentheses' )->rawParams( $extra )->escaped();
+                       $extra = ' ' . $this->msg( 'parentheses' )->rawParams( $extra )->escaped();
                        $this->mNavigationBar .= $extra;
                }
 
@@ -776,35 +765,23 @@ abstract class ReverseChronologicalPager extends IndexPager {
                        return $this->mNavigationBar;
                }
 
-               $nicenumber = $this->getLanguage()->formatNum( $this->mLimit );
                $linkTexts = array(
-                       'prev' => wfMsgExt(
-                               'pager-newer-n',
-                               array( 'parsemag', 'escape' ),
-                               $nicenumber
-                       ),
-                       'next' => wfMsgExt(
-                               'pager-older-n',
-                               array( 'parsemag', 'escape' ),
-                               $nicenumber
-                       ),
-                       'first' => wfMsgHtml( 'histlast' ),
-                       'last' => wfMsgHtml( 'histfirst' )
+                       'prev' => $this->msg( 'pager-newer-n' )->numParams( $this->mLimit )->escaped(),
+                       'next' => $this->msg( 'pager-older-n' )->numParams( $this->mLimit )->escaped(),
+                       'first' => $this->msg( 'histlast' )->escaped(),
+                       'last' => $this->msg( 'histfirst' )->escaped()
                );
 
                $pagingLinks = $this->getPagingLinks( $linkTexts );
                $limitLinks = $this->getLimitLinks();
                $limits = $this->getLanguage()->pipeList( $limitLinks );
-               $firstLastLinks = wfMessage( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
-                       wfMsgExt( 'pipe-separator' , 'escapenoentities' ) .
+               $firstLastLinks = $this->msg( 'parentheses' )->rawParams( "{$pagingLinks['first']}" .
+                       $this->msg( 'pipe-separator' )->escaped() .
                        "{$pagingLinks['last']}" )->escaped();
 
                $this->mNavigationBar = $firstLastLinks . ' ' .
-                       wfMsgHTML(
-                               'viewprevnext',
-                               $pagingLinks['prev'], $pagingLinks['next'],
-                               $limits
-                       );
+                       $this->msg( 'viewprevnext' )->rawParams(
+                               $pagingLinks['prev'], $pagingLinks['next'], $limits )->escaped();
 
                return $this->mNavigationBar;
        }
@@ -917,13 +894,13 @@ abstract class TablePager extends IndexPager {
                                                $image = 'Arr_d.png';
                                                $query['asc'] = '1';
                                                $query['desc'] = '';
-                                               $alt = htmlspecialchars( wfMsg( 'descending_abbrev' ) );
+                                               $alt = $this->msg( 'descending_abbrev' )->escaped();
                                        } else {
                                                # Ascending
                                                $image = 'Arr_u.png';
                                                $query['asc'] = '';
                                                $query['desc'] = '1';
-                                               $alt = htmlspecialchars( wfMsg( 'ascending_abbrev' ) );
+                                               $alt = $this->msg( 'ascending_abbrev' )->escaped();
                                        }
                                        $image = htmlspecialchars( "$wgStylePath/common/images/$image" );
                                        $link = $this->makeLink(
@@ -955,7 +932,7 @@ abstract class TablePager extends IndexPager {
         */
        function getEmptyBody() {
                $colspan = count( $this->getFieldNames() );
-               $msgEmpty = wfMsgHtml( 'table_pager_empty' );
+               $msgEmpty = $this->msg( 'table_pager_empty' )->escaped();
                return "<tr><td colspan=\"$colspan\">$msgEmpty</td></tr>\n";
        }
 
@@ -1101,7 +1078,7 @@ abstract class TablePager extends IndexPager {
                $linkTexts = array();
                $disabledTexts = array();
                foreach ( $labels as $type => $label ) {
-                       $msgLabel = wfMsgHtml( $label );
+                       $msgLabel = $this->msg( $label )->escaped();
                        $linkTexts[$type] = "<img src=\"$path/{$images[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
                        $disabledTexts[$type] = "<img src=\"$path/{$disabledImages[$type]}\" alt=\"$msgLabel\"/><br />$msgLabel";
                }
@@ -1193,9 +1170,10 @@ abstract class TablePager extends IndexPager {
         */
        function getLimitDropdown() {
                # Make the select with some explanatory text
-               $msgSubmit = wfMsgHtml( 'table_pager_limit_submit' );
+               $msgSubmit = $this->msg( 'table_pager_limit_submit' )->escaped();
 
-               return wfMsgHtml( 'table_pager_limit', $this->getLimitSelect() ) .
+               return $this->msg( 'table_pager_limit' )
+                       ->rawParams( $this->getLimitSelect() )->escaped() .
                        "\n<input type=\"submit\" value=\"$msgSubmit\"/>\n" .
                        $this->getHiddenFields( array( 'limit' ) );
        }
index 3eee191..bf63d65 100644 (file)
@@ -371,7 +371,10 @@ class Preferences {
 
                        $emailAddress = $user->getEmail() ? htmlspecialchars( $user->getEmail() ) : '';
                        if ( $wgAuth->allowPropChange( 'emailaddress' ) ) {
-                               $emailAddress .= $emailAddress == '' ? $link : ( ' ' . $context->msg( 'parentheses' )->rawParams( $link )->plain() );
+                               $emailAddress .= $emailAddress == '' ? $link : (
+                                       $context->msg( 'word-separator' )->plain()
+                                       . $context->msg( 'parentheses' )->rawParams( $link )->plain()
+                               );
                        }
 
 
index 6dbd808..6b8aabc 100644 (file)
@@ -598,7 +598,7 @@ class Revision {
         *
         * @param $audience Integer: one of:
         *      Revision::FOR_PUBLIC       to be displayed to all users
-        *      Revision::FOR_THIS_USER    to be displayed to $wgUser
+        *      Revision::FOR_THIS_USER    to be displayed to the given user
         *      Revision::RAW              get the ID regardless of permissions
         * @param $user User object to check for, only if FOR_THIS_USER is passed
         *              to the $audience parameter
@@ -630,7 +630,7 @@ class Revision {
         *
         * @param $audience Integer: one of:
         *      Revision::FOR_PUBLIC       to be displayed to all users
-        *      Revision::FOR_THIS_USER    to be displayed to $wgUser
+        *      Revision::FOR_THIS_USER    to be displayed to the given user
         *      Revision::RAW              get the text regardless of permissions
         * @param $user User object to check for, only if FOR_THIS_USER is passed
         *              to the $audience parameter
@@ -670,7 +670,7 @@ class Revision {
         *
         * @param $audience Integer: one of:
         *      Revision::FOR_PUBLIC       to be displayed to all users
-        *      Revision::FOR_THIS_USER    to be displayed to $wgUser
+        *      Revision::FOR_THIS_USER    to be displayed to the given user
         *      Revision::RAW              get the text regardless of permissions
         * @param $user User object to check for, only if FOR_THIS_USER is passed
         *              to the $audience parameter
@@ -748,7 +748,7 @@ class Revision {
         *
         * @param $audience Integer: one of:
         *      Revision::FOR_PUBLIC       to be displayed to all users
-        *      Revision::FOR_THIS_USER    to be displayed to $wgUser
+        *      Revision::FOR_THIS_USER    to be displayed to the given user
         *      Revision::RAW              get the text regardless of permissions
         * @param $user User object to check for, only if FOR_THIS_USER is passed
         *              to the $audience parameter
index 44c7912..fc777b5 100644 (file)
@@ -350,12 +350,12 @@ class RevisionItem extends RevisionItemBase {
         */
        protected function getDiffLink() {
                if ( $this->isDeleted() && !$this->canViewContent() ) {
-                       return wfMsgHtml('diff');
+                       return $this->context->msg( 'diff' )->escaped();
                } else {
                        return
                                Linker::link(
                                        $this->list->title,
-                                       wfMsgHtml('diff'),
+                                       $this->context->msg( 'diff' )->escaped(),
                                        array(),
                                        array(
                                                'diff' => $this->revision->getId(),
@@ -371,7 +371,8 @@ class RevisionItem extends RevisionItemBase {
        }
 
        public function getHTML() {
-               $difflink = wfMessage( 'parentheses' )->rawParams( $this->getDiffLink() );
+               $difflink = $this->context->msg( 'parentheses' )
+                       ->rawParams( $this->getDiffLink() )->escaped();
                $revlink = $this->getRevisionLink();
                $userlink = Linker::revUserLink( $this->revision );
                $comment = Linker::revComment( $this->revision );
index 335d37b..18a880e 100644 (file)
@@ -77,9 +77,6 @@ if ( $wgLogo === false ) $wgLogo = "$wgStylePath/common/images/wiki.png";
 
 if ( $wgUploadPath === false ) $wgUploadPath = "$wgScriptPath/images";
 if ( $wgUploadDirectory === false ) $wgUploadDirectory = "$IP/images";
-
-if ( $wgTmpDirectory === false ) $wgTmpDirectory = "{$wgUploadDirectory}/tmp";
-
 if ( $wgReadOnlyFile === false ) $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR";
 if ( $wgFileCacheDirectory === false ) $wgFileCacheDirectory = "{$wgUploadDirectory}/cache";
 if ( $wgDeletedDirectory === false ) $wgDeletedDirectory = "{$wgUploadDirectory}/deleted";
@@ -400,7 +397,12 @@ if ( !defined( 'MW_COMPILED' ) ) {
        wfProfileOut( $fname . '-includes' );
 }
 
-# Now that GlobalFunctions is loaded, set the default for $wgCanonicalServer
+# Now that GlobalFunctions is loaded, set defaults that depend
+# on it.
+if ( $wgTmpDirectory === false ) {
+       $wgTmpDirectory = wfTempDir();
+}
+
 if ( $wgCanonicalServer === false ) {
        $wgCanonicalServer = wfExpandUrl( $wgServer, PROTO_HTTP );
 }
index ff5548e..6410695 100644 (file)
  */
 
 /**
- * This is a class used to hold configuration settings, particularly for multi-wiki sites.
+ * This is a class for holding configuration settings, particularly for
+ * multi-wiki sites.
+ *
+ * A basic synopsis:
+ *
+ * Consider a wikifarm having three sites: two production sites, one in English
+ * and one in German, and one testing site. You can assign them easy-to-remember
+ * identifiers - ISO 639 codes 'en' and 'de' for language wikis, and 'beta' for
+ * the testing wiki.
+ *
+ * You would thus initialize the site configuration by specifying the wiki
+ * identifiers:
+ *
+ * @code
+ * $conf = new SiteConfiguration;
+ * $conf->wikis = array( 'de', 'en', 'beta' );
+ * @endcode
+ *
+ * When configuring the MediaWiki global settings (the $wg variables),
+ * the identifiers will be available to specify settings on a per wiki basis.
+ *
+ * @code
+ * $conf->settings = array(
+ *     'wgSomeSetting' => array(
+ *
+ *             # production:
+ *             'de'     => false,
+ *             'en'     => false,
+ *
+ *             # test:
+ *             'beta    => true,
+ *     ),
+ * );
+ * @endcode
+ *
+ * With three wikis, that is easy to manage. But what about a farm with
+ * hundreds of wikis? Site configuration provides a special keyword named
+ * 'default' which is the value used when a wiki is not found. Hence
+ * the above code could be written:
+ *
+ * @code
+ * $conf->settings = array(
+ *     'wgSomeSetting' => array(
+ *
+ *             'default' => false,
+ *
+ *             # Enable feature on test
+ *             'beta'    => true,
+ *     ),
+ * );
+ * @endcode
+ *
+ *
+ * Since settings can contain arrays, site configuration provides a way
+ * to merge an array with the default. This is very useful to avoid
+ * repeating settings again and again while still maintaining specific changes
+ * on a per wiki basis.
+ *
+ * @code
+ * $conf->settings = array(
+ *     'wgMergeSetting' = array(
+ *             # Value that will be shared among all wikis:
+ *             'default' => array(  NS_USER => true ),
+ *
+ *             # Leading '+' means merging the array of value with the defaults
+ *             '+beta' => array( NS_HELP => true ),
+ *     ),
+ * );
+ *
+ * # Get configuration for the German site:
+ * $conf->get( 'wgMergeSetting', 'de' );
+ * // --> array( NS_USER => true );
+ *
+ * # Get configuration for the testing site:
+ * $conf->get( 'wgMergeSetting', 'beta' );
+ * // --> array( NS_USER => true, NS_HELP => true );
+ * @endcode
+ *
+ * Finally, to load all configuration settings, extract them in global context:
+ *
+ * @code
+ * # Name / identifier of the wiki as set in $conf->wikis
+ * $wikiID = 'beta';
+ * $globals = $conf->getAll( $wikiID );
+ * extract( $globals );
+ * @endcode
+ *
+ * TODO: give examples for,
+ * suffixes:
+ * $conf->suffixes = array( 'wiki' );
+ * localVHosts
+ * callbacks!
  */
 class SiteConfiguration {
 
index 10aed9c..7f3f655 100644 (file)
@@ -391,7 +391,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
        /**
         * @param $type string
         * @param $sign string ('+' or '-')
-        * @return void
+        * @return string
         */
        private function getTypeCacheKey( $type, $sign ) {
                return wfMemcKey( 'sitestatsupdate', 'pendingdelta', $type, $sign );
@@ -443,7 +443,7 @@ class SiteStatsUpdate implements DeferrableUpdate {
 
        /**
         * Reduce pending delta counters after updates have been applied
-        * @param Array Result of getPendingDeltas(), used for DB update
+        * @param Array $pd Result of getPendingDeltas(), used for DB update
         * @return void
         */
        protected function removePendingDeltas( array $pd ) {
index 56355bb..8d47b83 100644 (file)
@@ -722,7 +722,7 @@ abstract class Skin extends ContextSource {
                                        $display .= $link;
                                        $linkObj = Title::newFromText( $growinglink );
 
-                                       if ( is_object( $linkObj ) && $linkObj->exists() ) {
+                                       if ( is_object( $linkObj ) && $linkObj->isKnown() ) {
                                                $getlink = Linker::linkKnown(
                                                        $linkObj,
                                                        htmlspecialchars( $display )
index 114a55c..aee2e83 100644 (file)
@@ -294,7 +294,11 @@ class SkinTemplate extends Skin {
                $tpl->set( 'specialpageattributes', '' ); # obsolete
 
                if ( $userlang !== $wgContLang->getHtmlCode() || $userdir !== $wgContLang->getDir() ) {
-                       $attrs = " lang='$userlang' dir='$userdir'";
+                       $escUserlang = htmlspecialchars( $userlang );
+                       $escUserdir = htmlspecialchars( $userdir );
+                       // Attributes must be in double quotes because htmlspecialchars() doesn't
+                       // escape single quotes
+                       $attrs = " lang=\"$escUserlang\" dir=\"$escUserdir\"";
                        $tpl->set( 'userlangattributes', $attrs );
                }
 
@@ -644,6 +648,9 @@ class SkinTemplate extends Skin {
                                }
                        }
 
+                       if ( isset( $createaccount_url ) ) {
+                               $personal_urls['createaccount'] = $createaccount_url;
+                       }
 
                        if( $this->showIPinHeader() ) {
                                $href = &$this->userpageUrlDetails['href'];
@@ -665,9 +672,6 @@ class SkinTemplate extends Skin {
                        } else {
                                $personal_urls['login'] = $login_url;
                        }
-                       if ( isset($createaccount_url) ) {
-                               $personal_urls['createaccount'] = $createaccount_url;
-                       }
                }
 
                wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title ) );
index 481f480..046fadb 100644 (file)
@@ -936,7 +936,7 @@ class Title {
         */
        public function isConversionTable() {
                return $this->getNamespace() == NS_MEDIAWIKI &&
-                       strpos( $this->getText(), 'Conversiontable' ) !== false;
+                       strpos( $this->getText(), 'Conversiontable/' ) === 0;
        }
 
        /**
index b20cb95..08e06ea 100644 (file)
@@ -462,6 +462,8 @@ class MediaWiki {
         * @param $page Page
         */
        private function performAction( Page $page ) {
+               global $wgUseSquid, $wgSquidMaxage;
+
                wfProfileIn( __METHOD__ );
 
                $request = $this->context->getRequest();
@@ -480,6 +482,15 @@ class MediaWiki {
 
                $action = Action::factory( $act, $page );
                if ( $action instanceof Action ) {
+                       # When it's a known action, let Squid cache things if we can purge them.
+                       # If the action is unknown, we don't know what may happen in an extension,
+                       # but not caching can be always safe.
+                       if ( $wgUseSquid &&
+                               in_array( $request->getFullRequestURL(), $title->getSquidURLs() )
+                       ) {
+                               $output->setSquidMaxage( $wgSquidMaxage );
+                       }
+
                        $action->show();
                        wfProfileOut( __METHOD__ );
                        return;
index b5f4c1d..40e0ec3 100644 (file)
@@ -243,11 +243,20 @@ class WikiPage extends Page {
 
        /**
         * Clear the object
+        * @return void
         */
        public function clear() {
                $this->mDataLoaded = false;
                $this->mDataLoadedFrom = self::DATA_NOT_LOADED;
 
+               $this->clearCacheFields();
+       }
+
+       /**
+        * Clear the object cache fields
+        * @return void
+        */
+       protected function clearCacheFields() {
                $this->mCounter = null;
                $this->mRedirectTarget = null; # Title object if set
                $this->mLastRevision = null; # Latest revision
@@ -396,10 +405,18 @@ class WikiPage extends Page {
                        $this->mTouched     = wfTimestamp( TS_MW, $data->page_touched );
                        $this->mIsRedirect  = intval( $data->page_is_redirect );
                        $this->mLatest      = intval( $data->page_latest );
+                       // Bug 37225: $latest may no longer match the cached latest Revision object.
+                       // Double-check the ID of any cached latest Revision object for consistency.
+                       if ( $this->mLastRevision && $this->mLastRevision->getId() != $this->mLatest ) {
+                               $this->mLastRevision = null;
+                               $this->mTimestamp = '';
+                       }
                } else {
                        $lc->addBadLinkObj( $this->mTitle );
 
                        $this->mTitle->loadFromRow( false );
+
+                       $this->clearCacheFields();
                }
 
                $this->mDataLoaded = true;
@@ -611,7 +628,7 @@ class WikiPage extends Page {
                if ( !$this->mTimestamp ) {
                        $this->loadLastEdit();
                }
-               
+
                return wfTimestamp( TS_MW, $this->mTimestamp );
        }
 
@@ -2280,7 +2297,7 @@ class WikiPage extends Page {
         * roll back to, e.g. user is the sole contributor. This function
         * performs permissions checks on $user, then calls commitRollback()
         * to do the dirty work
-        * 
+        *
         * @todo: seperate the business/permission stuff out from backend code
         *
         * @param $fromP String: Name of the user whose edits to rollback.
@@ -2950,7 +2967,7 @@ class WikiPage extends Page {
        public function quickEdit( $text, $comment = '', $minor = 0 ) {
                wfDeprecated( __METHOD__, '1.18' );
                global $wgUser;
-               return $this->doQuickEdit( $text, $wgUser, $comment, $minor );
+               $this->doQuickEdit( $text, $wgUser, $comment, $minor );
        }
 
        /**
index 3f73ea4..d21f9ae 100644 (file)
  * computations here. This function should returns the HTML to be cached.
  * It should not add anything to the PageOutput object!
  *
- * @since 1.20
+ * 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.
  *
- * @file CachedAction.php
- * @ingroup Action
+ * 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
  *
- * @licence GNU GPL v2 or later
+ * @file
+ * @ingroup Action
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ * @since 1.20
  */
 abstract class CachedAction extends FormlessAction implements ICacheHelper {
 
@@ -167,4 +179,4 @@ abstract class CachedAction extends FormlessAction implements ICacheHelper {
                }
        }
 
-}
\ No newline at end of file
+}
index c49d232..50d210f 100644 (file)
@@ -3,6 +3,22 @@
  * Page history
  *
  * Split off from Article.php and Skin.php, 2003-12-22
+ *
+ * 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
  */
 
@@ -71,7 +87,7 @@ class HistoryAction extends FormlessAction {
         * Print the history page for an article.
         */
        function onView() {
-               global $wgScript, $wgUseFileCache, $wgSquidMaxage;
+               global $wgScript, $wgUseFileCache;
 
                $out = $this->getOutput();
                $request = $this->getRequest();
@@ -85,10 +101,6 @@ class HistoryAction extends FormlessAction {
 
                wfProfileIn( __METHOD__ );
 
-               if ( $request->getFullRequestURL() == $this->getTitle()->getInternalURL( 'action=history' ) ) {
-                       $out->setSquidMaxage( $wgSquidMaxage );
-               }
-
                $this->preCacheMessages();
 
                # Fill in the file cache if not set already
@@ -192,6 +204,11 @@ class HistoryAction extends FormlessAction {
         * @return ResultWrapper
         */
        function fetchRevisions( $limit, $offset, $direction ) {
+               // Fail if article doesn't exist.
+               if( !$this->getTitle()->exists() ) {
+                       return new FakeResultWrapper( array() );
+               }
+
                $dbr = wfGetDB( DB_SLAVE );
 
                if ( $direction == HistoryPage::DIR_PREV ) {
index 5615ad5..174ca3f 100644 (file)
@@ -7,7 +7,20 @@
  *
  * Based on HistoryPage and SpecialExport
  *
- * License: GPL (http://www.gnu.org/copyleft/gpl.html)
+ * 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
  *
  * @author Gabriel Wicke <wicke@wikidev.net>
  * @file
index d43e5fb..d57585e 100644 (file)
@@ -34,13 +34,6 @@ class ViewAction extends FormlessAction {
        }
 
        public function show(){
-               global $wgSquidMaxage;
-
-               $request = $this->getRequest();
-               if ( $request->getFullRequestURL() == $this->getTitle()->getInternalURL() ) {
-                       $this->getOutput()->setSquidMaxage( $wgSquidMaxage );
-               }
-
                $this->page->view();
        }
 
index f0386a1..6a9be24 100644 (file)
@@ -56,6 +56,11 @@ abstract class ApiBase extends ContextSource {
        /// @since 1.17
        const PARAM_RANGE_ENFORCE = 9; // Boolean, if MIN/MAX are set, enforce (die) these? Only applies if TYPE='integer' Use with extreme caution
 
+       const PROP_ROOT = 'ROOT'; // Name of property group that is on the root element of the result, i.e. not part of a list
+       const PROP_LIST = 'LIST'; // Boolean, is the result multiple items? Defaults to true for query modules, to false for other modules
+       const PROP_TYPE = 0; // Type of the property, uses same format as PARAM_TYPE
+       const PROP_NULLABLE = 1; // Boolean, can the property be not included in the result? Defaults to false
+
        const LIMIT_BIG1 = 500; // Fast query, std user limit
        const LIMIT_BIG2 = 5000; // Fast query, bot/sysop limit
        const LIMIT_SML1 = 50; // Slow query, std user limit
@@ -572,6 +577,51 @@ abstract class ApiBase extends ContextSource {
                return $desc;
        }
 
+       /**
+        * Returns possible properties in the result, grouped by the value of the prop parameter
+        * that shows them.
+        *
+        * Properties that are shown always are in a group with empty string as a key.
+        * Properties that can be shown by several values of prop are included multiple times.
+        * If some properties are part of a list and some are on the root object (see ApiQueryQueryPage),
+        * those on the root object are under the key PROP_ROOT.
+        * The array can also contain a boolean under the key PROP_LIST,
+        * indicating whether the result is a list.
+        *
+        * Don't call this functon directly: use getFinalResultProperties() to
+        * allow hooks to modify descriptions as needed.
+        *
+        * @return array|bool False on no properties
+        */
+       protected function getResultProperties() {
+               return false;
+       }
+
+       /**
+        * Get final possible result properties, after hooks have had a chance to tweak it as
+        * needed.
+        *
+        * @return array
+        */
+       public function getFinalResultProperties() {
+               $properties = $this->getResultProperties();
+               wfRunHooks( 'APIGetResultProperties', array( $this, &$properties ) );
+               return $properties;
+       }
+
+       /**
+        * Add token properties to the array used by getResultProperties,
+        * based on a token functions mapping.
+        */
+       protected static function addTokenProperties( &$props, $tokenFunctions ) {
+               foreach ( array_keys( $tokenFunctions ) as $token ) {
+                       $props[''][$token . 'token'] = array(
+                               ApiBase::PROP_TYPE => 'string',
+                               ApiBase::PROP_NULLABLE => true
+                       );
+               }
+       }
+
        /**
         * Get final module description, after hooks have had a chance to tweak it as
         * needed.
index e229ef0..6cd31ae 100644 (file)
@@ -186,6 +186,44 @@ class ApiBlock extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'blocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userID' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'expiry' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'id' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'reason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'anononly' => 'boolean',
+                               'nocreate' => 'boolean',
+                               'autoblock' => 'boolean',
+                               'noemail' => 'boolean',
+                               'hidename' => 'boolean',
+                               'allowusertalk' => 'boolean',
+                               'watchuser' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Block a user';
        }
index 87f0967..ed72b29 100644 (file)
@@ -124,6 +124,25 @@ class ApiComparePages extends ApiBase {
                        'torev' => 'Second revision to compare',
                );
        }
+
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'fromtitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'fromrevid' => 'integer',
+                               'totitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'torevid' => 'integer',
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Get the difference between 2 pages',
index cefdaac..1927490 100644 (file)
@@ -221,6 +221,15 @@ class ApiDelete extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'reason' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Delete a page';
        }
index 0b7ac41..9a16007 100644 (file)
@@ -494,6 +494,41 @@ class ApiEditPage extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'new' => 'boolean',
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Failure'
+                                       ),
+                               ),
+                               'pageid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'title' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'nochange' => 'boolean',
+                               'oldrevid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'newrevid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'newtimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function needsToken() {
                return true;
        }
index 0032bd8..4b6ba00 100644 (file)
@@ -113,6 +113,23 @@ class ApiEmailUser extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Failure'
+                                       ),
+                               ),
+                               'message' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Email a user.';
        }
index d570534..2ed118f 100644 (file)
@@ -103,6 +103,14 @@ class ApiExpandTemplates extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Expands all templates in wikitext';
        }
index 5ea2571..7cac0eb 100644 (file)
@@ -132,15 +132,29 @@ class ApiFileRevert extends ApiBase {
        }
 
        public function getParamDescription() {
-               $params = array(
+               return array(
                        'filename' => 'Target filename without the File: prefix',
                        'token' => 'Edit token. You can get one of these through prop=info',
                        'comment' => 'Upload comment',
                        'archivename' => 'Archive name of the revision to revert to',
                );
+       }
 
-               return $params;
-
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Failure'
+                                       )
+                               ),
+                               'errors' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
        }
 
        public function getDescription() {
index 5093b6b..6663d97 100644 (file)
@@ -126,6 +126,17 @@ class ApiImport extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => true,
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'revisions' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Import a page from another wiki, or an XML file.' ,
@@ -187,11 +198,11 @@ class ApiImportReporter extends ImportReporter {
                // Add a result entry
                $r = array();
 
-               if ( $title === null ) {\r
+               if ( $title === null ) {
                        # Invalid or non-importable title
                        $r['title'] = $pageInfo['title'];
-                       $r['invalid'] = '';\r
-               } else {\r
+                       $r['invalid'] = '';
+               } else {
                        ApiQueryBase::addTitleInfo( $r, $title );
                        $r['revisions'] = intval( $successCount );
                }
index aa570cb..0bdaa1b 100644 (file)
@@ -181,6 +181,66 @@ class ApiLogin extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'NeedToken',
+                                               'WrongToken',
+                                               'NoName',
+                                               'Illegal',
+                                               'WrongPluginPass',
+                                               'NotExists',
+                                               'WrongPass',
+                                               'EmptyPass',
+                                               'CreateBlocked',
+                                               'Throttled',
+                                               'Blocked',
+                                               'Aborted'
+                                       )
+                               ),
+                               'lguserid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'lgusername' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'lgtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'cookieprefix' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'sessionid' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'token' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'details' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'wait' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'reason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Log in and get the authentication tokens. ',
index 81a054a..cab2430 100644 (file)
@@ -54,6 +54,10 @@ class ApiLogout extends ApiBase {
                return array();
        }
 
+       public function getResultProperties() {
+               return array();
+       }
+
        public function getParamDescription() {
                return array();
        }
index f0a25e4..c89f59b 100644 (file)
@@ -224,6 +224,33 @@ class ApiMove extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'from' => 'string',
+                               'to' => 'string',
+                               'reason' => 'string',
+                               'redirectcreated' => 'boolean',
+                               'talkfrom' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'talkto' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'talkmove-error-code' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'talkmove-error-info' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Move a page';
        }
index 7bcfe1e..2b3d5e3 100644 (file)
@@ -107,6 +107,18 @@ class ApiOptions extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'success'
+                                       )
+                               )
+                       )
+               );
+       }
+
        public function getParamDescription() {
                return array(
                        'token' => 'An options token previously obtained through the action=tokens',
index 598f9ad..b7db4f0 100644 (file)
@@ -367,7 +367,7 @@ class ApiPageSet extends ApiQueryBase {
         */
        public function processDbRow( $row ) {
                // Store Title object in various data structures
-               $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+               $title = Title::newFromRow( $row );
 
                $pageId = intval( $row->page_id );
                $this->mAllPages[$row->page_namespace][$row->page_title] = $pageId;
index f226347..dffce5b 100644 (file)
@@ -251,6 +251,62 @@ class ApiParamInfo extends ApiBase {
                }
                $result->setIndexedTagName( $retval['parameters'], 'param' );
 
+               $props = $obj->getFinalResultProperties();
+               $listResult = null;
+               if ( $props !== false ) {
+                       $retval['props'] = array();
+
+                       foreach ( $props as $prop => $properties ) {
+                               $propResult = array();
+                               if ( $prop == ApiBase::PROP_LIST ) {
+                                       $listResult = $properties;
+                                       continue;
+                               }
+                               if ( $prop != ApiBase::PROP_ROOT ) {
+                                       $propResult['name'] = $prop;
+                               }
+                               $propResult['properties'] = array();
+
+                               foreach ( $properties as $name => $p ) {
+                                       $propertyResult = array();
+
+                                       $propertyResult['name'] = $name;
+
+                                       if ( !is_array( $p ) ) {
+                                               $p = array( ApiBase::PROP_TYPE => $p );
+                                       }
+
+                                       $propertyResult['type'] = $p[ApiBase::PROP_TYPE];
+
+                                       if ( is_array( $propertyResult['type'] ) ) {
+                                               $propertyResult['type'] = array_values( $propertyResult['type'] );
+                                               $result->setIndexedTagName( $propertyResult['type'], 't' );
+                                       }
+
+                                       $nullable = null;
+                                       if ( isset( $p[ApiBase::PROP_NULLABLE] ) ) {
+                                               $nullable = $p[ApiBase::PROP_NULLABLE];
+                                       }
+
+                                       if ( $nullable === true ) {
+                                               $propertyResult['nullable'] = '';
+                                       }
+
+                                       $propResult['properties'][] = $propertyResult;
+                               }
+
+                               $result->setIndexedTagName( $propResult['properties'], 'property' );
+                               $retval['props'][] = $propResult;
+                       }
+
+                       // default is true for query modules, false for other modules, overriden by ApiBase::PROP_LIST
+                       if ( $listResult === true || ( $listResult !== false && $obj instanceof ApiQueryBase ) ) {
+                               $retval['listresult'] = '';
+                       }
+
+                       $result->setIndexedTagName( $retval['props'], 'prop' );
+               }
+
                // Errors
                $retval['errors'] = $this->parseErrors( $obj->getPossibleErrors() );
                $result->setIndexedTagName( $retval['errors'], 'error' );
index 1332f26..45d19d0 100644 (file)
@@ -80,6 +80,16 @@ class ApiPatrol extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'rcid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Patrol a page or revision';
        }
index 286f191..0fcaf42 100644 (file)
@@ -184,6 +184,16 @@ class ApiProtect extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'reason' => 'string',
+                               'cascade' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Change the protection level of a page';
        }
index 8ef9cbc..e27068d 100644 (file)
@@ -104,7 +104,8 @@ class ApiPurge extends ApiBase {
                                                $pcache->save( $p_result, $page, $popts );
                                        }
                                } else {
-                                       $this->setWarning( $this->parseMsg( array( 'actionthrottledtext' ) ) );
+                                       $error = $this->parseMsg( array( 'actionthrottledtext' ) );
+                                       $this->setWarning( $error['info'] );
                                        $forceLinkUpdate = false;
                                }
                        }
@@ -134,6 +135,34 @@ class ApiPurge extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => true,
+                       '' => array(
+                               'ns' => array(
+                                       ApiBase::PROP_TYPE => 'namespace',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'title' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'pageid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'revid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'invalid' => 'boolean',
+                               'missing' => 'boolean',
+                               'purged' => 'boolean',
+                               'linkupdate' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array( 'Purge the cache for the given titles.',
                        'Requires a POST request if the user is not logged in.'
index 233ea75..60b57bf 100644 (file)
@@ -192,6 +192,23 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => 'string'
+                       ),
+                       'size' => array(
+                               'size' => 'integer',
+                               'pages' => 'integer',
+                               'files' => 'integer',
+                               'subcats' => 'integer'
+                       ),
+                       'hidden' => array(
+                               'hidden' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all categories';
        }
index 87e7024..ce5aac2 100644 (file)
@@ -230,6 +230,19 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
 
        private $propertyFilter = array( 'archivename' );
 
+       public function getResultProperties() {
+               return array_merge(
+                       array(
+                               '' => array(
+                                       'name' => 'string',
+                                       'ns' => 'namespace',
+                                       'title' => 'string'
+                               )
+                       ),
+                       ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all images sequentially';
        }
index f04d5b2..6b8fe57 100644 (file)
@@ -205,6 +205,18 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       'ids' => array(
+                               'fromid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all links that point to a given namespace';
        }
index dedd3e5..ac000bf 100644 (file)
@@ -256,6 +256,27 @@ class ApiQueryAllMessages extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string',
+                               'customised' => 'boolean',
+                               'missing' => 'boolean',
+                               '*' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'default' => array(
+                               'defaultmissing' => 'boolean',
+                               'default' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Return messages from this site';
        }
index 7e89a95..cfc22ff 100644 (file)
@@ -296,6 +296,16 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all pages sequentially in a given namespace';
        }
index e110e67..dda8c72 100644 (file)
@@ -377,6 +377,48 @@ class ApiQueryAllUsers extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'userid' => 'integer',
+                               'name' => 'string',
+                               'recenteditcount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'blockinfo' => array(
+                               'blockid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedby' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedbyid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedreason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedexpiry' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'hidden' => 'boolean'
+                       ),
+                       'editcount' => array(
+                               'editcount' => 'integer'
+                       ),
+                       'registration' => array(
+                               'registration' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all registered users';
        }
index 5505692..fcb9c4b 100644 (file)
@@ -481,6 +481,17 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
                ) );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'redirect' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                switch ( $this->getModuleName() ) {
                        case 'backlinks':
index 8c287d6..49cd590 100644 (file)
@@ -324,6 +324,60 @@ class ApiQueryBlocks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       'id' => array(
+                               'id' => 'integer'
+                       ),
+                       'user' => array(
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'userid' => array(
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'by' => array(
+                               'by' => 'string'
+                       ),
+                       'byid' => array(
+                               'byid' => 'integer'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'expiry' => array(
+                               'expiry' => 'timestamp'
+                       ),
+                       'reason' => array(
+                               'reason' => 'string'
+                       ),
+                       'range' => array(
+                               'rangestart' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'rangeend' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'flags' => array(
+                               'automatic' => 'boolean',
+                               'anononly' => 'boolean',
+                               'nocreate' => 'boolean',
+                               'autoblock' => 'boolean',
+                               'noemail' => 'boolean',
+                               'hidden' => 'boolean',
+                               'allowusertalk' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all blocked users and IP addresses';
        }
index cbda6ab..283eb13 100644 (file)
@@ -240,6 +240,25 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'sortkey' => array(
+                               'sortkey' => 'string',
+                               'sortkeyprefix' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'hidden' => array(
+                               'hidden' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all categories the page(s) belong to';
        }
index c5070e8..e5eca85 100644 (file)
@@ -106,6 +106,34 @@ class ApiQueryCategoryInfo extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => false,
+                       '' => array(
+                               'size' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'pages' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'files' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'subcats' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'hidden' => array(
+                                       ApiBase::PROP_TYPE => 'boolean',
+                                       ApiBase::PROP_NULLABLE => false
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns information about the given categories';
        }
index 35b5645..9f66f22 100644 (file)
@@ -364,6 +364,36 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                return $desc;
        }
 
+       public function getResultProperties() {
+               return array(
+                       'ids' => array(
+                               'pageid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'sortkey' => array(
+                               'sortkey' => 'string'
+                       ),
+                       'sortkeyprefix' => array(
+                               'sortkeyprefix' => 'string'
+                       ),
+                       'type' => array(
+                               'type' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'page',
+                                               'subcat',
+                                               'file'
+                                       )
+                               )
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all pages in a given category';
        }
index 6912ddc..06f649d 100644 (file)
@@ -366,6 +366,18 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'token' => array(
+                               'token' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                $p = $this->getModulePrefix();
                return array(
index 6fb3ea3..856d0fd 100644 (file)
@@ -165,6 +165,16 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string',
+                               'user' => 'string',
+                               'timestamp' => 'timestamp'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all files that are duplicates of the given file(s)';
        }
index 93c71e2..221ffac 100644 (file)
@@ -232,6 +232,21 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
                return $desc;
        }
 
+       public function getResultProperties() {
+               return array(
+                       'ids' => array(
+                               'pageid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'url' => array(
+                               'url' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate pages that contain a given URL';
        }
index a9fbc83..999ddc8 100644 (file)
@@ -133,6 +133,14 @@ class ApiQueryExternalLinks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all external urls (not interwikies) from the given page(s)';
        }
index 4d99055..07d5b41 100644 (file)
@@ -274,6 +274,67 @@ class ApiQueryFilearchive extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'filehidden' => 'boolean',
+                               'commenthidden' => 'boolean',
+                               'userhidden' => 'boolean',
+                               'suppressed' => 'boolean'
+                       ),
+                       'sha1' => array(
+                               'sha1' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'user' => array(
+                               'userid' => 'integer',
+                               'user' => 'string'
+                       ),
+                       'size' => array(
+                               'size' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'height' => 'integer',
+                               'width' => 'integer'
+                       ),
+                       'dimensions' => array(
+                               'size' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'height' => 'integer',
+                               'width' => 'integer'
+                       ),
+                       'description' => array(
+                               'description' => 'string'
+                       ),
+                       'parseddescription' => array(
+                               'description' => 'string',
+                               'parseddescription' => 'string'
+                       ),
+                       'metadata' => array(
+                               'metadata' => 'string'
+                       ),
+                       'bitdepth' => array(
+                               'bitdepth' => 'integer'
+                       ),
+                       'mime' => array(
+                               'mime' => 'string'
+                       ),
+                       'mediatype' => array(
+                               'mediatype' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Enumerate all deleted files sequentially';
        }
index 2ffe479..d2837e9 100644 (file)
@@ -195,6 +195,23 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'redirect' => 'boolean'
+                       ),
+                       'iwprefix' => array(
+                               'iwprefix' => 'string'
+                       ),
+                       'iwtitle' => array(
+                               'iwtitle' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array( 'Find all pages that link to the given interwiki link.',
                        'Can be used to find all links with a prefix, or',
index f39835a..7e69513 100644 (file)
@@ -167,6 +167,19 @@ class ApiQueryIWLinks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'prefix' => 'string',
+                               'url' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all interwiki links from the given page(s)';
        }
index 135979a..969293b 100644 (file)
@@ -547,6 +547,114 @@ class ApiQueryImageInfo extends ApiQueryBase {
                );
        }
 
+       public static function getResultPropertiesFiltered( $filter = array() ) {
+               $props = array(
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'user' => array(
+                               'userhidden' => 'boolean',
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userhidden' => 'boolean',
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'size' => array(
+                               'size' => 'integer',
+                               'width' => 'integer',
+                               'height' => 'integer',
+                               'pagecount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'url' => array(
+                               'filehidden' => 'boolean',
+                               'thumburl' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'thumbwidth' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'thumbheight' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'thumberror' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'url' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'descriptionurl' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'sha1' => array(
+                               'filehidden' => 'boolean',
+                               'sha1' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'mime' => array(
+                               'filehidden' => 'boolean',
+                               'mime' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'mediatype' => array(
+                               'filehidden' => 'boolean',
+                               'mediatype' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'archivename' => array(
+                               'filehidden' => 'boolean',
+                               'archivename' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'bitdepth' => array(
+                               'filehidden' => 'boolean',
+                               'bitdepth' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+               );
+               return array_diff_key( $props, array_flip( $filter ) );
+       }
+
+       public function getResultProperties() {
+               return self::getResultPropertiesFiltered();
+       }
+
        public function getDescription() {
                return 'Returns image information and upload history';
        }
index 6f488cd..147ab67 100644 (file)
@@ -174,6 +174,15 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all images contained on the given page(s)';
        }
index e5db4d8..a6c0ed5 100644 (file)
@@ -337,7 +337,10 @@ class ApiQueryInfo extends ApiQueryBase {
         */
        private function extractPageInfo( $pageid, $title ) {
                $pageInfo = array();
-               if ( $title->exists() ) {
+               $titleExists = $pageid > 0; //$title->exists() needs pageid, which is not set for all title objects
+               $ns = $title->getNamespace();
+               $dbkey = $title->getDBkey();
+               if ( $titleExists ) {
                        global $wgDisableCounters;
 
                        $pageInfo['touched'] = wfTimestamp( TS_ISO_8601, $this->pageTouched[$pageid] );
@@ -370,23 +373,23 @@ class ApiQueryInfo extends ApiQueryBase {
 
                if ( $this->fld_protection ) {
                        $pageInfo['protection'] = array();
-                       if ( isset( $this->protections[$title->getNamespace()][$title->getDBkey()] ) ) {
+                       if ( isset( $this->protections[$ns][$dbkey] ) ) {
                                $pageInfo['protection'] =
-                                       $this->protections[$title->getNamespace()][$title->getDBkey()];
+                                       $this->protections[$ns][$dbkey];
                        }
                        $this->getResult()->setIndexedTagName( $pageInfo['protection'], 'pr' );
                }
 
-               if ( $this->fld_watched && isset( $this->watched[$title->getNamespace()][$title->getDBkey()] ) ) {
+               if ( $this->fld_watched && isset( $this->watched[$ns][$dbkey] ) ) {
                        $pageInfo['watched'] = '';
                }
 
-               if ( $this->fld_talkid && isset( $this->talkids[$title->getNamespace()][$title->getDBkey()] ) ) {
-                       $pageInfo['talkid'] = $this->talkids[$title->getNamespace()][$title->getDBkey()];
+               if ( $this->fld_talkid && isset( $this->talkids[$ns][$dbkey] ) )        {
+                       $pageInfo['talkid'] = $this->talkids[$ns][$dbkey];
                }
 
-               if ( $this->fld_subjectid && isset( $this->subjectids[$title->getNamespace()][$title->getDBkey()] ) ) {
-                       $pageInfo['subjectid'] = $this->subjectids[$title->getNamespace()][$title->getDBkey()];
+               if ( $this->fld_subjectid && isset( $this->subjectids[$ns][$dbkey] ) ) {
+                       $pageInfo['subjectid'] = $this->subjectids[$ns][$dbkey];
                }
 
                if ( $this->fld_url ) {
@@ -398,7 +401,7 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                if ( $this->fld_preload ) {
-                       if ( $title->exists() ) {
+                       if ( $titleExists ) {
                                $pageInfo['preload'] = '';
                        } else {
                                $text = null;
@@ -409,8 +412,8 @@ class ApiQueryInfo extends ApiQueryBase {
                }
 
                if ( $this->fld_displaytitle ) {
-                       if ( isset( $this->displaytitles[$title->getArticleID()] ) ) {
-                               $pageInfo['displaytitle'] = $this->displaytitles[$title->getArticleID()];
+                       if ( isset( $this->displaytitles[$pageid] ) ) {
+                               $pageInfo['displaytitle'] = $this->displaytitles[$pageid];
                        } else {
                                $pageInfo['displaytitle'] = $title->getPrefixedText();
                        }
@@ -721,6 +724,59 @@ class ApiQueryInfo extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               $props = array(
+                       ApiBase::PROP_LIST => false,
+                       '' => array(
+                               'touched' => 'timestamp',
+                               'lastrevid' => 'integer',
+                               'counter' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'length' => 'integer',
+                               'redirect' => 'boolean',
+                               'new' => 'boolean',
+                               'starttimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'watched' => array(
+                               'watched' => 'boolean'
+                       ),
+                       'talkid' => array(
+                               'talkid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'subjectid' => array(
+                               'subjectid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'url' => array(
+                               'fullurl' => 'string',
+                               'editurl' => 'string'
+                       ),
+                       'readable' => array(
+                               'readable' => 'boolean'
+                       ),
+                       'preload' => array(
+                               'preload' => 'string'
+                       ),
+                       'displaytitle' => array(
+                               'displaytitle' => 'string'
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return 'Get basic page information such as namespace, title, last touched date, ...';
        }
index efc2e81..f423719 100644 (file)
@@ -195,6 +195,23 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'pageid' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'redirect' => 'boolean'
+                       ),
+                       'lllang' => array(
+                               'lllang' => 'string'
+                       ),
+                       'lltitle' => array(
+                               'lltitle' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array( 'Find all pages that link to the given language link.',
                        'Can be used to find all links with a language code, or',
index b6f9a99..7cab739 100644 (file)
@@ -159,6 +159,19 @@ class ApiQueryLangLinks extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'lang' => 'string',
+                               'url' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               '*' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Returns all interlanguage links from the given page(s)';
        }
index 4dea419..5cf9068 100644 (file)
@@ -227,6 +227,15 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return "Returns all {$this->description}s from the given page(s)";
        }
index e017c4b..bb4b429 100644 (file)
@@ -447,6 +447,62 @@ class ApiQueryLogEvents extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgLogTypes;
+               return array(
+                       'ids' => array(
+                               'logid' => 'integer',
+                               'pageid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'type' => array(
+                               'type' => array(
+                                       ApiBase::PROP_TYPE => $wgLogTypes
+                               ),
+                               'action' => 'string'
+                       ),
+                       'details' => array(
+                               'actionhidden' => 'boolean'
+                       ),
+                       'user' => array(
+                               'userhidden' => 'boolean',
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userhidden' => 'boolean',
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'anon' => 'boolean'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get events from logs';
        }
index 44cc1d3..360183c 100644 (file)
@@ -214,6 +214,40 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgRestrictionLevels;
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'user' => array(
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userid' => 'integer'
+                       ),
+                       'comment' => array(
+                               'comment' => 'string'
+                       ),
+                       'parsedcomment' => array(
+                               'parsedcomment' => 'string'
+                       ),
+                       'expiry' => array(
+                               'expiry' => 'timestamp'
+                       ),
+                       'level' => array(
+                               'level' => array(
+                                       ApiBase::PROP_TYPE => array_diff( $wgRestrictionLevels, array( '' ) )
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List all titles protected from creation';
        }
index 8efe65d..2c7ba12 100644 (file)
@@ -173,6 +173,38 @@ class ApiQueryQueryPage extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_ROOT => array(
+                               'name' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'disabled' => array(
+                                       ApiBase::PROP_TYPE => 'boolean',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'cached' => array(
+                                       ApiBase::PROP_TYPE => 'boolean',
+                                       ApiBase::PROP_NULLABLE => false
+                               ),
+                               'cachedtimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       '' => array(
+                               'value' => 'string',
+                               'timestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get a list provided by a QueryPage-based special page';
        }
index 2e9e2dd..ddf5841 100644 (file)
@@ -161,6 +161,16 @@ class ApiQueryRandom extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'id' => 'integer',
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Get a set of random pages',
index 931af08..62c6678 100644 (file)
@@ -629,6 +629,97 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgLogTypes;
+               $props = array(
+                       '' => array(
+                               'type' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'edit',
+                                               'new',
+                                               'move',
+                                               'log',
+                                               'move over redirect'
+                                       )
+                               )
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string',
+                               'new_ns' => array(
+                                       ApiBase::PROP_TYPE => 'namespace',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'new_title' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'ids' => array(
+                               'rcid' => 'integer',
+                               'pageid' => 'integer',
+                               'revid' => 'integer',
+                               'old_revid' => 'integer'
+                       ),
+                       'user' => array(
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'flags' => array(
+                               'bot' => 'boolean',
+                               'new' => 'boolean',
+                               'minor' => 'boolean'
+                       ),
+                       'sizes' => array(
+                               'oldlen' => 'integer',
+                               'newlen' => 'integer'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'comment' => array(
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'redirect' => array(
+                               'redirect' => 'boolean'
+                       ),
+                       'patrolled' => array(
+                               'patrolled' => 'boolean'
+                       ),
+                       'loginfo' => array(
+                               'logid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logtype' => array(
+                                       ApiBase::PROP_TYPE => $wgLogTypes,
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logaction' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return 'Enumerate recent changes';
        }
index 44cb46e..1a5ad17 100644 (file)
@@ -648,6 +648,66 @@ class ApiQueryRevisions extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               $props = array(
+                       '' => array(),
+                       'ids' => array(
+                               'revid' => 'integer',
+                               'parentid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'flags' => array(
+                               'minor' => 'boolean'
+                       ),
+                       'user' => array(
+                               'userhidden' => 'boolean',
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userhidden' => 'boolean',
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'size' => array(
+                               'size' => 'integer'
+                       ),
+                       'sha1' => array(
+                               'sha1' => 'string'
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'content' => array(
+                               '*' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'texthidden' => 'boolean'
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return array(
                        'Get revision information',
index 40aac05..ed6c3cb 100644 (file)
@@ -280,6 +280,63 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'snippet' => array(
+                               'snippet' => 'string'
+                       ),
+                       'size' => array(
+                               'size' => 'integer'
+                       ),
+                       'wordcount' => array(
+                               'wordcount' => 'integer'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'score' => array(
+                               'score' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'titlesnippet' => array(
+                               'titlesnippet' => 'string'
+                       ),
+                       'redirecttitle' => array(
+                               'redirecttitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'redirectsnippet' => array(
+                               'redirectsnippet' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'sectiontitle' => array(
+                               'sectiontitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'sectionsnippet' => array(
+                               'sectionsnippet' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'hasrelated' => array(
+                               'hasrelated' => 'boolean'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Perform a full text search';
        }
index 4501ec5..02484ae 100644 (file)
@@ -123,6 +123,10 @@ class ApiQueryStashImageInfo extends ApiQueryImageInfo {
                );
        }
 
+       public function getResultProperties() {
+               return ApiQueryImageInfo::getResultPropertiesFiltered( $this->propertyFilter );
+       }
+
        public function getDescription() {
                return 'Returns image information for stashed images';
        }
index 12cea1d..edd1553 100644 (file)
@@ -169,6 +169,23 @@ class ApiQueryTags extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'name' => 'string'
+                       ),
+                       'displayname' => array(
+                               'displayname' => 'string'
+                       ),
+                       'description' => array(
+                               'description' => 'string'
+                       ),
+                       'hitcount' => array(
+                               'hitcount' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'List change tags';
        }
index 097d3e1..ab5acf5 100644 (file)
@@ -448,6 +448,55 @@ class ApiQueryContributions extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'userid' => 'integer',
+                               'user' => 'string',
+                               'userhidden' => 'boolean'
+                       ),
+                       'ids' => array(
+                               'pageid' => 'integer',
+                               'revid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'flags' => array(
+                               'new' => 'boolean',
+                               'minor' => 'boolean',
+                               'top' => 'boolean'
+                       ),
+                       'comment' => array(
+                               'commenthidden' => 'boolean',
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'commenthidden' => 'boolean',
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'patrolled' => array(
+                               'patrolled' => 'boolean'
+                       ),
+                       'size' => array(
+                               'size' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get all edits by a user';
        }
index e3bc775..e4617d9 100644 (file)
@@ -234,6 +234,63 @@ class ApiQueryUserInfo extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       ApiBase::PROP_LIST => false,
+                       '' => array(
+                               'id' => 'integer',
+                               'name' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'blockinfo' => array(
+                               'blockid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedby' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedbyid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedreason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'hasmsg' => array(
+                               'messages' => 'boolean'
+                       ),
+                       'preferencestoken' => array(
+                               'preferencestoken' => 'string'
+                       ),
+                       'editcount' => array(
+                               'editcount' => 'integer'
+                       ),
+                       'realname' => array(
+                               'realname' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'email' => array(
+                               'email' => 'string',
+                               'emailauthenticated' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'registrationdate' => array(
+                               'registrationdate' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Get information about the current user';
        }
index 83872a5..02fcf01 100644 (file)
@@ -315,6 +315,73 @@ class ApiQueryUsers extends ApiQueryBase {
                );
        }
 
+       public function getResultProperties() {
+               $props = array(
+                       '' => array(
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'name' => 'string',
+                               'invalid' => 'boolean',
+                               'hidden' => 'boolean',
+                               'interwiki' => 'boolean',
+                               'missing' => 'boolean'
+                       ),
+                       'editcount' => array(
+                               'editcount' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'registration' => array(
+                               'registration' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'blockinfo' => array(
+                               'blockid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedby' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedbyid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedreason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blockedexpiry' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'emailable' => array(
+                               'emailable' => 'boolean'
+                       ),
+                       'gender' => array(
+                               'gender' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'male',
+                                               'female',
+                                               'unknown'
+                                       ),
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+
+               self::addTokenProperties( $props, $this->getTokenFunctions() );
+
+               return $props;
+       }
+
        public function getDescription() {
                return 'Get information about a list of users';
        }
index 77f6ce9..a93f94f 100644 (file)
@@ -418,6 +418,76 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               global $wgLogTypes;
+               return array(
+                       'ids' => array(
+                               'pageid' => 'integer',
+                               'revid' => 'integer',
+                               'old_revid' => 'integer'
+                       ),
+                       'title' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'user' => array(
+                               'user' => 'string',
+                               'anon' => 'boolean'
+                       ),
+                       'userid' => array(
+                               'userid' => 'integer',
+                               'anon' => 'boolean'
+                       ),
+                       'flags' => array(
+                               'new' => 'boolean',
+                               'minor' => 'boolean',
+                               'bot' => 'boolean'
+                       ),
+                       'patrol' => array(
+                               'patrolled' => 'boolean'
+                       ),
+                       'timestamp' => array(
+                               'timestamp' => 'timestamp'
+                       ),
+                       'sizes' => array(
+                               'oldlen' => 'integer',
+                               'newlen' => 'integer'
+                       ),
+                       'notificationtimestamp' => array(
+                               'notificationtimestamp' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'comment' => array(
+                               'comment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'parsedcomment' => array(
+                               'parsedcomment' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
+                       'loginfo' => array(
+                               'logid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logtype' => array(
+                                       ApiBase::PROP_TYPE => $wgLogTypes,
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'logaction' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return "Get all recent changes to pages in the logged in user's watchlist";
        }
index 5e96dd5..1b1eee0 100644 (file)
@@ -192,6 +192,21 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'ns' => 'namespace',
+                               'title' => 'string'
+                       ),
+                       'changed' => array(
+                               'changed' => array(
+                                       ApiBase::PROP_TYPE => 'timestamp',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return "Get all pages on the logged in user's watchlist";
        }
index 436c392..4de49ea 100644 (file)
@@ -116,6 +116,19 @@ class ApiRollback extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'pageid' => 'integer',
+                               'summary' => 'string',
+                               'revid' => 'integer',
+                               'old_revid' => 'integer',
+                               'last_revid' => 'integer'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Undo the last edit to the page. If the last user who edited the page made multiple edits in a row,',
index c56d646..2c9b482 100644 (file)
@@ -84,6 +84,57 @@ class ApiTokens extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'patroltoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'edittoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'deletetoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'protecttoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'movetoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'blocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'unblocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'emailtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'importtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'watchtoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'optionstoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getParamDescription() {
                return array(
                        'type' => 'Type of token(s) to request'
index 49353b6..40a6d44 100644 (file)
@@ -119,6 +119,33 @@ class ApiUnblock extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'unblocktoken' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'id' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'user' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'userid' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'reason' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Unblock a user';
        }
index 856e2ac..c89f49a 100644 (file)
@@ -122,6 +122,17 @@ class ApiUndelete extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'revisions' => 'integer',
+                               'filerevisions' => 'integer',
+                               'reason' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Restore certain revisions of a deleted page. A list of deleted revisions (including timestamps) can be',
index e58a1ca..db1ee16 100644 (file)
@@ -623,6 +623,41 @@ class ApiUpload extends ApiBase {
 
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'result' => array(
+                                       ApiBase::PROP_TYPE => array(
+                                               'Success',
+                                               'Warning',
+                                               'Continue',
+                                               'Queued'
+                                       ),
+                               ),
+                               'filekey' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'sessionkey' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'offset' => array(
+                                       ApiBase::PROP_TYPE => 'integer',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'statuskey' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               ),
+                               'filename' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       )
+               );
+       }
+
        public function getDescription() {
                return array(
                        'Upload a file, or get the status of pending uploads. Several methods are available:',
index fa382b3..c923c6d 100644 (file)
@@ -100,6 +100,17 @@ class ApiWatch extends ApiBase {
                );
        }
 
+       public function getResultProperties() {
+               return array(
+                       '' => array(
+                               'title' => 'string',
+                               'unwatched' => 'boolean',
+                               'watched' => 'boolean',
+                               'message' => 'string'
+                       )
+               );
+       }
+
        public function getDescription() {
                return 'Add or remove a page from/to the current user\'s watchlist';
        }
index b972f3b..0a1f988 100644 (file)
@@ -530,7 +530,11 @@ abstract class DatabaseBase implements DatabaseType {
         *   - DBO_PERSISTENT: use persistant database connection
         */
        function setFlag( $flag ) {
+               global $wgDebugDBTransactions;
                $this->mFlags |= $flag;
+               if ( ( $flag & DBO_TRX) & $wgDebugDBTransactions ) {
+                       wfDebug("Implicit transactions are now  disabled.\n");
+               }
        }
 
        /**
@@ -539,7 +543,11 @@ abstract class DatabaseBase implements DatabaseType {
         * @param $flag: same as setFlag()'s $flag param
         */
        function clearFlag( $flag ) {
+               global $wgDebugDBTransactions;
                $this->mFlags &= ~$flag;
+               if ( ( $flag & DBO_TRX ) && $wgDebugDBTransactions ) {
+                       wfDebug("Implicit transactions are now disabled.\n");
+               }
        }
 
        /**
@@ -604,15 +612,21 @@ abstract class DatabaseBase implements DatabaseType {
        function __construct( $server = false, $user = false, $password = false, $dbName = false,
                $flags = 0, $tablePrefix = 'get from global'
        ) {
-               global $wgDBprefix, $wgCommandLineMode;
+               global $wgDBprefix, $wgCommandLineMode, $wgDebugDBTransactions;
 
                $this->mFlags = $flags;
 
                if ( $this->mFlags & DBO_DEFAULT ) {
                        if ( $wgCommandLineMode ) {
                                $this->mFlags &= ~DBO_TRX;
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug("Implicit transaction open disabled.\n");
+                               }
                        } else {
                                $this->mFlags |= DBO_TRX;
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug("Implicit transaction open enabled.\n");
+                               }
                        }
                }
 
@@ -868,8 +882,13 @@ abstract class DatabaseBase implements DatabaseType {
                        # that would delay transaction initializations to once connection
                        # is really used by application
                        $sqlstart = substr( $sql, 0, 10 ); // very much worth it, benchmark certified(tm)
-                       if ( strpos( $sqlstart, "SHOW " ) !== 0 && strpos( $sqlstart, "SET " ) !== 0 )
+                       if ( strpos( $sqlstart, "SHOW " ) !== 0 && strpos( $sqlstart, "SET " ) !== 0 ) {
+                               global $wgDebugDBTransactions;
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug("Implicit transaction start.\n");
+                               }
                                $this->begin( __METHOD__ . " ($fname)" );
+                       }
                }
 
                if ( $this->debug() ) {
@@ -2885,7 +2904,7 @@ abstract class DatabaseBase implements DatabaseType {
        }
 
        /**
-        * Begin a transaction, committing any previously open transaction
+        * Begin a transaction
         *
         * @param $fname string
         */
@@ -3506,4 +3525,11 @@ abstract class DatabaseBase implements DatabaseType {
        public function setBigSelects( $value = true ) {
                // no-op
        }
+
+       /**
+        * @since 1.19
+        */
+       public function __toString() {
+               return (string)$this->mConn;
+       }
 }
index 6aed05c..53341c3 100644 (file)
@@ -210,7 +210,7 @@ class DBConnectionError extends DBError {
         * @return string
         */
        function searchForm() {
-               global $wgSitename, $wgServer, $wgRequest;
+               global $wgSitename, $wgCanonicalServer, $wgRequest;
 
                $usegoogle = htmlspecialchars( $this->msg( 'dberr-usegoogle', 'You can try searching via Google in the meantime.' ) );
                $outofdate = htmlspecialchars( $this->msg( 'dberr-outofdate', 'Note that their indexes of our content may be out of date.' ) );
@@ -218,7 +218,7 @@ class DBConnectionError extends DBError {
 
                $search = htmlspecialchars( $wgRequest->getVal( 'search' ) );
 
-               $server = htmlspecialchars( $wgServer );
+               $server = htmlspecialchars( $wgCanonicalServer );
                $sitename = htmlspecialchars( $wgSitename );
 
                $trygoogle = <<<EOT
index 8550635..1d03073 100644 (file)
@@ -113,14 +113,14 @@ class DatabaseMysql extends DatabaseBase {
                $phpError = $this->restoreErrorHandler();
                # Always log connection errors
                if ( !$this->mConn ) {
-                       $error = $this->lastError();
+                       $error = $phpError;
                        if ( !$error ) {
-                               $error = $phpError;
+                               $error = $this->lastError();
                        }
                        wfLogDBError( "Error connecting to {$this->mServer}: $error\n" );
                        wfDebug( "DB connection error\n" );
                        wfDebug( "Server: $server, User: $user, Password: " .
-                               substr( $password, 0, 3 ) . "..., error: " . mysql_error() . "\n" );
+                               substr( $password, 0, 3 ) . "..., error: " . $error . "\n" );
                }
 
                wfProfileOut("dbconnect-$server");
index d058769..f0838bb 100644 (file)
@@ -137,14 +137,14 @@ class PostgresTransactionState {
 
        static $WATCHED = array(
                array(
-                       "desc" => "Connection state changed from %s -> %s\n",
+                       "desc" => "%s: Connection state changed from %s -> %s\n",
                        "states" => array(
                                PGSQL_CONNECTION_OK       => "OK",
                                PGSQL_CONNECTION_BAD      => "BAD"
                        )
                ),
                array(
-                       "desc" => "Transaction state changed from %s -> %s\n",
+                       "desc" => "%s: Transaction state changed from %s -> %s\n",
                        "states" => array(
                                PGSQL_TRANSACTION_IDLE    => "IDLE",
                                PGSQL_TRANSACTION_ACTIVE  => "ACTIVE",
@@ -198,12 +198,86 @@ class PostgresTransactionState {
 
        protected function log_changed( $old, $new, $watched ) {
                wfDebug(sprintf($watched["desc"],
+                       $this->mConn,
                        $this->describe_changed( $old, $watched["states"] ),
                        $this->describe_changed( $new, $watched["states"] ))
                );
        }
 }
 
+/**
+ * Manage savepoints within a transaction
+ * @ingroup Database
+ * @since 1.19
+ */
+class SavepointPostgres {
+       /**
+        * Establish a savepoint within a transaction
+        */
+       protected $dbw;
+       protected $id;
+       protected $didbegin;
+
+       public function __construct ($dbw, $id) {
+               $this->dbw = $dbw;
+               $this->id = $id;
+               $this->didbegin = false;
+               /* If we are not in a transaction, we need to be for savepoint trickery */
+               if ( !$dbw->trxLevel() ) {
+                               $dbw->begin( "FOR SAVEPOINT" );
+                               $this->didbegin = true;
+               }
+       }
+
+       public function __destruct() {
+               if ( $this->didbegin ) {
+                       $this->dbw->rollback();
+               }
+       }
+
+       public function commit() {
+               if ( $this->didbegin ) {
+                       $this->dbw->commit();
+               }
+       }
+
+       protected function query( $keyword, $msg_ok, $msg_failed ) {
+               global $wgDebugDBTransactions;
+               if ( $this->dbw->doQuery( $keyword . " " . $this->id ) !== false ) {
+                       if ( $wgDebugDBTransactions ) {
+                               wfDebug( sprintf ($msg_ok, $this->id ) );
+                       }
+               } else {
+                       wfDebug( sprintf ($msg_failed, $this->id ) );
+               }
+       }
+
+       public function savepoint() {
+               $this->query("SAVEPOINT",
+                       "Transaction state: savepoint \"%s\" established.\n",
+                       "Transaction state: establishment of savepoint \"%s\" FAILED.\n"
+               );
+       }
+
+       public function release() {
+               $this->query("RELEASE",
+                       "Transaction state: savepoint \"%s\" released.\n",
+                       "Transaction state: release of savepoint \"%s\" FAILED.\n"
+               );
+       }
+
+       public function rollback() {
+               $this->query("ROLLBACK TO",
+                       "Transaction state: savepoint \"%s\" rolled back.\n",
+                       "Transaction state: rollback of savepoint \"%s\" FAILED.\n"
+               );
+       }
+
+       public function __toString() {
+               return (string)$this->id;
+       }
+}
+
 /**
  * @ingroup Database
  */
@@ -345,7 +419,7 @@ class DatabasePostgres extends DatabaseBase {
                return pg_close( $this->mConn );
        }
 
-       protected function doQuery( $sql ) {
+       public function doQuery( $sql ) {
                if ( function_exists( 'mb_convert_encoding' ) ) {
                        $sql = mb_convert_encoding( $sql, 'UTF-8' );
                }
@@ -667,15 +741,9 @@ __INDEXATTR__;
                }
 
                // If IGNORE is set, we use savepoints to emulate mysql's behavior
-               $ignore = in_array( 'IGNORE', $options ) ? 'mw' : '';
-
-               // If we are not in a transaction, we need to be for savepoint trickery
-               $didbegin = 0;
-               if ( $ignore ) {
-                       if ( !$this->mTrxLevel ) {
-                               $this->begin( __METHOD__ );
-                               $didbegin = 1;
-                       }
+               $savepoint = null;
+               if ( in_array( 'IGNORE', $options ) ) {
+                       $savepoint = new SavepointPostgres( $this, 'mw' );
                        $olde = error_reporting( 0 );
                        // For future use, we may want to track the number of actual inserts
                        // Right now, insert (all writes) simply return true/false
@@ -685,7 +753,7 @@ __INDEXATTR__;
                $sql = "INSERT INTO $table (" . implode( ',', $keys ) . ') VALUES ';
 
                if ( $multi ) {
-                       if ( $this->numeric_version >= 8.2 && !$ignore ) {
+                       if ( $this->numeric_version >= 8.2 && !$savepoint ) {
                                $first = true;
                                foreach ( $args as $row ) {
                                        if ( $first ) {
@@ -695,7 +763,7 @@ __INDEXATTR__;
                                        }
                                        $sql .= '(' . $this->makeList( $row ) . ')';
                                }
-                               $res = (bool)$this->query( $sql, $fname, $ignore );
+                               $res = (bool)$this->query( $sql, $fname, $savepoint );
                        } else {
                                $res = true;
                                $origsql = $sql;
@@ -703,18 +771,18 @@ __INDEXATTR__;
                                        $tempsql = $origsql;
                                        $tempsql .= '(' . $this->makeList( $row ) . ')';
 
-                                       if ( $ignore ) {
-                                               $this->doQuery( "SAVEPOINT $ignore" );
+                                       if ( $savepoint ) {
+                                               $savepoint->savepoint();
                                        }
 
-                                       $tempres = (bool)$this->query( $tempsql, $fname, $ignore );
+                                       $tempres = (bool)$this->query( $tempsql, $fname, $savepoint );
 
-                                       if ( $ignore ) {
+                                       if ( $savepoint ) {
                                                $bar = pg_last_error();
                                                if ( $bar != false ) {
-                                                       $this->doQuery( $this->mConn, "ROLLBACK TO $ignore" );
+                                                       $savepoint->rollback();
                                                } else {
-                                                       $this->doQuery( $this->mConn, "RELEASE $ignore" );
+                                                       $savepoint->release();
                                                        $numrowsinserted++;
                                                }
                                        }
@@ -728,27 +796,25 @@ __INDEXATTR__;
                        }
                } else {
                        // Not multi, just a lone insert
-                       if ( $ignore ) {
-                               $this->doQuery( "SAVEPOINT $ignore" );
+                       if ( $savepoint ) {
+                               $savepoint->savepoint();
                        }
 
                        $sql .= '(' . $this->makeList( $args ) . ')';
-                       $res = (bool)$this->query( $sql, $fname, $ignore );
-                       if ( $ignore ) {
+                       $res = (bool)$this->query( $sql, $fname, $savepoint );
+                       if ( $savepoint ) {
                                $bar = pg_last_error();
                                if ( $bar != false ) {
-                                       $this->doQuery( "ROLLBACK TO $ignore" );
+                                       $savepoint->rollback();
                                } else {
-                                       $this->doQuery( "RELEASE $ignore" );
+                                       $savepoint->release();
                                        $numrowsinserted++;
                                }
                        }
                }
-               if ( $ignore ) {
+               if ( $savepoint ) {
                        $olde = error_reporting( $olde );
-                       if ( $didbegin ) {
-                               $this->commit( __METHOD__ );
-                       }
+                       $savepoint->commit();
 
                        // Set the affected row count for the whole operation
                        $this->mAffectedRows = $numrowsinserted;
@@ -774,9 +840,6 @@ __INDEXATTR__;
        {
                $destTable = $this->tableName( $destTable );
 
-               // If IGNORE is set, we use savepoints to emulate mysql's behavior
-               $ignore = in_array( 'IGNORE', $insertOptions ) ? 'mw' : '';
-
                if( is_array( $insertOptions ) ) {
                        $insertOptions = implode( ' ', $insertOptions ); // FIXME: This is unused
                }
@@ -790,16 +853,13 @@ __INDEXATTR__;
                        $srcTable = $this->tableName( $srcTable );
                }
 
-               // If we are not in a transaction, we need to be for savepoint trickery
-               $didbegin = 0;
-               if ( $ignore ) {
-                       if( !$this->mTrxLevel ) {
-                               $this->begin( __METHOD__ );
-                               $didbegin = 1;
-                       }
+               // If IGNORE is set, we use savepoints to emulate mysql's behavior
+               $savepoint = null;
+               if ( in_array( 'IGNORE', $options ) ) {
+                       $savepoint = new SavepointPostgres( $this, 'mw' );
                        $olde = error_reporting( 0 );
                        $numrowsinserted = 0;
-                       $this->doQuery( "SAVEPOINT $ignore" );
+                       $savepoint->savepoint();
                }
 
                $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
@@ -812,19 +872,17 @@ __INDEXATTR__;
 
                $sql .= " $tailOpts";
 
-               $res = (bool)$this->query( $sql, $fname, $ignore );
-               if( $ignore ) {
+               $res = (bool)$this->query( $sql, $fname, $savepoint );
+               if( $savepoint ) {
                        $bar = pg_last_error();
                        if( $bar != false ) {
-                               $this->doQuery( "ROLLBACK TO $ignore" );
+                               $savepoint->rollback();
                        } else {
-                               $this->doQuery( "RELEASE $ignore" );
+                               $savepoint->release();
                                $numrowsinserted++;
                        }
                        $olde = error_reporting( $olde );
-                       if( $didbegin ) {
-                               $this->commit( __METHOD__ );
-                       }
+                       $savepoint->commit();
 
                        // Set the affected row count for the whole operation
                        $this->mAffectedRows = $numrowsinserted;
@@ -1056,7 +1114,7 @@ __INDEXATTR__;
         * This will be also called by the installer after the schema is created
         *
         * @since 1.19
-        * @param desired_schema string
+        * @param $desired_schema string
         */
        function determineCoreSchema( $desired_schema ) {
                $this->begin( __METHOD__ );
index 853e8cd..8fa7220 100644 (file)
@@ -62,6 +62,9 @@ interface IORMTable {
         * * array
         * * blob
         *
+        * TODO: get rid of the id field. Every row instance needs to have
+        * one so this is just causing hassle at various locations by requiring an extra check for field name.
+        *
         * @since 1.20
         *
         * @return array
@@ -103,7 +106,7 @@ interface IORMTable {
         * @return ORMResult
         */
        public function select( $fields = null, array $conditions = array(),
-                                                       array $options = array(), $functionName  = null );
+                                                       array $options = array(), $functionName = null );
 
        /**
         * Selects the the specified fields of the records matching the provided
@@ -119,7 +122,7 @@ interface IORMTable {
         * @return array of self
         */
        public function selectObjects( $fields = null, array $conditions = array(),
-                                                                  array $options = array(), $functionName  = null );
+                                                                  array $options = array(), $functionName = null );
 
        /**
         * Do the actual select.
@@ -134,7 +137,7 @@ interface IORMTable {
         * @return ResultWrapper
         */
        public function rawSelect( $fields = null, array $conditions = array(),
-                                                          array $options = array(), $functionName  = null );
+                                                          array $options = array(), $functionName = null );
 
        /**
         * Selects the the specified fields of the records matching the provided
@@ -159,7 +162,7 @@ interface IORMTable {
         * @return array of array
         */
        public function selectFields( $fields = null, array $conditions = array(),
-                                                                 array $options = array(), $collapse = true, $functionName  = null );
+                                                                 array $options = array(), $collapse = true, $functionName = null );
 
        /**
         * Selects the the specified fields of the first matching record.
@@ -441,4 +444,4 @@ interface IORMTable {
         */
        public function canHaveField( $name );
 
-}
\ No newline at end of file
+}
diff --git a/includes/db/ORMIterator.php b/includes/db/ORMIterator.php
new file mode 100644 (file)
index 0000000..f0a6363
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * Interface for Iterators containing IORMRows.
+ *
+ * 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
+ *
+ * @since 1.20
+ *
+ * @file
+ * @ingroup ORM
+ *
+ * @licence GNU GPL v2 or later
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+interface ORMIterator extends Iterator {
+
+       /**
+        * @see Iterator::current()
+        * @return IORMRow
+        */
+       public function current();
+
+}
\ No newline at end of file
index 1e6b83d..1342b02 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 /**
- * Result of a ORMTable::select, which returns IORMRow objects.
+ * ORMIterator that takes a ResultWrapper object returned from
+ * a select operation returning IORMRow objects (ie IORMTable::select).
  *
  * 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
@@ -26,7 +27,7 @@
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
 
-class ORMResult implements Iterator {
+class ORMResult implements ORMIterator {
 
        /**
         * @var ResultWrapper
@@ -36,7 +37,7 @@ class ORMResult implements Iterator {
        /**
         * @var integer
         */
-       protected  $key;
+       protected $key;
 
        /**
         * @var IORMRow
index 5772958..e624ec2 100644 (file)
@@ -720,9 +720,9 @@ class DifferenceEngine extends ContextSource {
                }
                if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) {
                        # Diff via the shell
-                       global $wgTmpDirectory;
-                       $tempName1 = tempnam( $wgTmpDirectory, 'diff_' );
-                       $tempName2 = tempnam( $wgTmpDirectory, 'diff_' );
+                       $tmpDir = wfTempDir();
+                       $tempName1 = tempnam( $tmpDir, 'diff_' );
+                       $tempName2 = tempnam( $tmpDir, 'diff_' );
 
                        $tempFile1 = fopen( $tempName1, "w" );
                        if ( !$tempFile1 ) {
index 42ddcbf..3cc9021 100644 (file)
@@ -401,6 +401,7 @@ abstract class FileBackend {
         *
         * @param $ops Array Set of operations to execute
         * @return Status
+        * @since 1.20
         */
        final public function doQuickOperations( array $ops ) {
                if ( $this->isReadOnly() ) {
@@ -414,9 +415,94 @@ abstract class FileBackend {
 
        /**
         * @see FileBackend::doQuickOperations()
+        * @since 1.20
         */
        abstract protected function doQuickOperationsInternal( array $ops );
 
+       /**
+        * Same as doQuickOperations() except it takes a single operation.
+        * If you are doing a batch of operations, then use that function instead.
+        *
+        * @see FileBackend::doQuickOperations()
+        *
+        * @param $op Array Operation
+        * @return Status
+        * @since 1.20
+        */
+       final public function doQuickOperation( array $op ) {
+               return $this->doQuickOperations( array( $op ) );
+       }
+
+       /**
+        * Performs a single quick create operation.
+        * This sets $params['op'] to 'create' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickCreate( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'create' ) + $params );
+       }
+
+       /**
+        * Performs a single quick store operation.
+        * This sets $params['op'] to 'store' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickStore( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'store' ) + $params );
+       }
+
+       /**
+        * Performs a single quick copy operation.
+        * This sets $params['op'] to 'copy' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickCopy( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'copy' ) + $params );
+       }
+
+       /**
+        * Performs a single quick move operation.
+        * This sets $params['op'] to 'move' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickMove( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'move' ) + $params );
+       }
+
+       /**
+        * Performs a single quick delete operation.
+        * This sets $params['op'] to 'delete' and passes it to doQuickOperation().
+        *
+        * @see FileBackend::doQuickOperation()
+        *
+        * @param $params Array Operation parameters
+        * @return Status
+        * @since 1.20
+        */
+       final public function quickDelete( array $params ) {
+               return $this->doQuickOperation( array( 'op' => 'delete' ) + $params );
+       }
+
        /**
         * Concatenate a list of storage files into a single file system file.
         * The target path should refer to a file that is already locked or
index f02724f..f2860f3 100644 (file)
@@ -532,14 +532,12 @@ abstract class FileBackendStore extends FileBackend {
         * @return bool
         */
        final public function getFileStat( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
                $path = self::normalizeStoragePath( $params['src'] );
                if ( $path === null ) {
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
                        return false; // invalid storage path
                }
+               wfProfileIn( __METHOD__ );
+               wfProfileIn( __METHOD__ . '-' . $this->name );
                $latest = !empty( $params['latest'] ); // use latest data?
                if ( !isset( $this->cache[$path]['stat'] ) ) {
                        $this->primeFileCache( array( $path ) ); // check persistent cache
@@ -564,6 +562,11 @@ abstract class FileBackendStore extends FileBackend {
                        $this->trimCache(); // limit memory
                        $this->cache[$path]['stat'] = $stat;
                        $this->setFileCache( $path, $stat ); // update persistent cache
+                       if ( isset( $stat['sha1'] ) ) { // some backends store SHA-1 as metadata
+                               $this->trimCache(); // limit memory
+                               $this->cache[$path]['sha1'] =
+                                       array( 'hash' => $stat['sha1'], 'latest' => $latest );
+                       }
                } else {
                        wfDebug( __METHOD__ . ": File $path does not exist.\n" );
                }
@@ -603,14 +606,22 @@ abstract class FileBackendStore extends FileBackend {
         * @return bool|string
         */
        final public function getFileSha1Base36( array $params ) {
+               $path = self::normalizeStoragePath( $params['src'] );
+               if ( $path === null ) {
+                       return false; // invalid storage path
+               }
                wfProfileIn( __METHOD__ );
                wfProfileIn( __METHOD__ . '-' . $this->name );
-               $path = $params['src'];
+               $latest = !empty( $params['latest'] ); // use latest data?
                if ( isset( $this->cache[$path]['sha1'] ) ) {
-                       $this->pingCache( $path ); // LRU
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
-                       return $this->cache[$path]['sha1'];
+                       // If we want the latest data, check that this cached
+                       // value was in fact fetched with the latest available data.
+                       if ( !$latest || $this->cache[$path]['sha1']['latest'] ) {
+                               $this->pingCache( $path ); // LRU
+                               wfProfileOut( __METHOD__ . '-' . $this->name );
+                               wfProfileOut( __METHOD__ );
+                               return $this->cache[$path]['sha1']['hash'];
+                       }
                }
                wfProfileIn( __METHOD__ . '-miss' );
                wfProfileIn( __METHOD__ . '-miss-' . $this->name );
@@ -619,7 +630,7 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileOut( __METHOD__ . '-miss' );
                if ( $hash ) { // don't cache negatives
                        $this->trimCache(); // limit memory
-                       $this->cache[$path]['sha1'] = $hash;
+                       $this->cache[$path]['sha1'] = array( 'hash' => $hash, 'latest' => $latest );
                }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
@@ -628,7 +639,7 @@ abstract class FileBackendStore extends FileBackend {
 
        /**
         * @see FileBackendStore::getFileSha1Base36()
-        * @return bool
+        * @return bool|string
         */
        protected function doGetFileSha1Base36( array $params ) {
                $fsFile = $this->getLocalReference( $params );
@@ -658,19 +669,28 @@ abstract class FileBackendStore extends FileBackend {
         * @return TempFSFile|null
         */
        public function getLocalReference( array $params ) {
+               $path = self::normalizeStoragePath( $params['src'] );
+               if ( $path === null ) {
+                       return null; // invalid storage path
+               }
                wfProfileIn( __METHOD__ );
                wfProfileIn( __METHOD__ . '-' . $this->name );
-               $path = $params['src'];
+               $latest = !empty( $params['latest'] ); // use latest data?
                if ( isset( $this->expensiveCache[$path]['localRef'] ) ) {
-                       $this->pingExpensiveCache( $path );
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
-                       return $this->expensiveCache[$path]['localRef'];
+                       // If we want the latest data, check that this cached
+                       // value was in fact fetched with the latest available data.
+                       if ( !$latest || $this->expensiveCache[$path]['localRef']['latest'] ) {
+                               $this->pingExpensiveCache( $path );
+                               wfProfileOut( __METHOD__ . '-' . $this->name );
+                               wfProfileOut( __METHOD__ );
+                               return $this->expensiveCache[$path]['localRef']['object'];
+                       }
                }
                $tmpFile = $this->getLocalCopy( $params );
                if ( $tmpFile ) { // don't cache negatives
                        $this->trimExpensiveCache(); // limit memory
-                       $this->expensiveCache[$path]['localRef'] = $tmpFile;
+                       $this->expensiveCache[$path]['localRef'] =
+                               array( 'object' => $tmpFile, 'latest' => $latest );
                }
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
@@ -1358,16 +1378,17 @@ abstract class FileBackendStore extends FileBackend {
         * @param $val mixed Information to cache
         */
        final protected function setContainerCache( $container, $val ) {
-               $this->memCache->set( $this->containerCacheKey( $container ), $val, 14*86400 );
+               $this->memCache->add( $this->containerCacheKey( $container ), $val, 14*86400 );
        }
 
        /**
-        * Delete the cached info for a container
+        * Delete the cached info for a container.
+        * The cache key is salted for a while to prevent race conditions.
         *
         * @param $container string Resolved container name
         */
        final protected function deleteContainerCache( $container ) {
-               if ( !$this->memCache->delete( $this->containerCacheKey( $container ) ) ) {
+               if ( !$this->memCache->set( $this->containerCacheKey( $container ), 'PURGED', 300 ) ) {
                        trigger_error( "Unable to delete stat cache for container $container." );
                }
        }
@@ -1445,16 +1466,17 @@ abstract class FileBackendStore extends FileBackend {
         * @param $val mixed Information to cache
         */
        final protected function setFileCache( $path, $val ) {
-               $this->memCache->set( $this->fileCacheKey( $path ), $val, 7*86400 );
+               $this->memCache->add( $this->fileCacheKey( $path ), $val, 7*86400 );
        }
 
        /**
-        * Delete the cached stat info for a file path
+        * Delete the cached stat info for a file path.
+        * The cache key is salted for a while to prevent race conditions.
         *
         * @param $path string Storage path
         */
        final protected function deleteFileCache( $path ) {
-               if ( !$this->memCache->delete( $this->fileCacheKey( $path ) ) ) {
+               if ( !$this->memCache->set( $this->fileCacheKey( $path ), 'PURGED', 300 ) ) {
                        trigger_error( "Unable to delete stat cache for file $path." );
                }
        }
@@ -1492,8 +1514,14 @@ abstract class FileBackendStore extends FileBackend {
                $values = $this->memCache->getMulti( array_keys( $pathNames ) );
                foreach ( $values as $cacheKey => $val ) {
                        if ( is_array( $val ) ) {
+                               $path = $pathNames[$cacheKey];
                                $this->trimCache(); // limit memory
-                               $this->cache[$pathNames[$cacheKey]]['stat'] = $val;
+                               $this->cache[$path]['stat'] = $val;
+                               if ( isset( $val['sha1'] ) ) { // some backends store SHA-1 as metadata
+                                       $this->trimCache(); // limit memory
+                                       $this->cache[$path]['sha1'] =
+                                               array( 'hash' => $val['sha1'], 'latest' => $val['latest'] );
+                               }
                        }
                }
 
index d9fbafd..ac2496d 100644 (file)
@@ -438,7 +438,6 @@ abstract class FileOp {
  *     overwriteSame : override any existing file at destination
  */
 class StoreFileOp extends FileOp {
-
        /**
         * @return array
         */
@@ -579,7 +578,6 @@ class CreateFileOp extends FileOp {
  *     overwriteSame : override any existing file at destination
  */
 class CopyFileOp extends FileOp {
-
        /**
         * @return array
         */
index 36d4334..2b10917 100644 (file)
@@ -42,6 +42,9 @@ class SwiftFileBackend extends FileBackendStore {
        protected $authTTL; // integer seconds
        protected $swiftAnonUser; // string; username to handle unauthenticated requests
        protected $swiftUseCDN; // boolean; whether CloudFiles CDN is enabled
+       protected $swiftCDNExpiry; // integer; how long to cache things in the CDN
+       protected $swiftCDNPurgable; // boolean; whether object CDN purging is enabled
+
        protected $maxContCacheSize = 300; // integer; max containers with entries
 
        /** @var CF_Connection */
@@ -59,6 +62,11 @@ class SwiftFileBackend extends FileBackendStore {
         *    swiftAuthTTL       : Swift authentication TTL (seconds)
         *    swiftAnonUser      : Swift user used for end-user requests (account:username)
         *    swiftUseCDN        : Whether a Cloud Files Content Delivery Network is set up
+        *    swiftCDNExpiry     : How long (in seconds) to store content in the CDN.
+        *                         If files may likely change, this should probably not exceed
+        *                         a few days. For example, deletions may take this long to apply.
+        *                         If object purging is enabled, however, this is not an issue.
+        *    swiftCDNPurgable   : Whether object purge requests are allowed by the CDN.
         *    shardViaHashLevels : Map of container names to sharding config with:
         *                         'base'   : base of hash characters, 16 or 36
         *                         'levels' : the number of hash levels (and digits)
@@ -90,6 +98,12 @@ class SwiftFileBackend extends FileBackendStore {
                $this->swiftUseCDN = isset( $config['swiftUseCDN'] )
                        ? $config['swiftUseCDN']
                        : false;
+               $this->swiftCDNExpiry = isset( $config['swiftCDNExpiry'] )
+                       ? $config['swiftCDNExpiry']
+                       : 3600; // hour
+               $this->swiftCDNPurgable = isset( $config['swiftCDNPurgable'] )
+                       ? $config['swiftCDNPurgable']
+                       : true;
                // Cache container info to mask latency
                $this->memCache = wfGetMainCache();
        }
@@ -519,7 +533,7 @@ class SwiftFileBackend extends FileBackendStore {
                                ) );
                        }
                        if ( $this->swiftUseCDN ) { // Rackspace style CDN
-                               $contObj->make_public();
+                               $contObj->make_public( $this->swiftCDNExpiry );
                        }
                } catch ( CDNNotEnabledException $e ) {
                        // CDN not enabled; nothing to see here
@@ -625,7 +639,7 @@ class SwiftFileBackend extends FileBackendStore {
                        $stat = array(
                                // Convert dates like "Tue, 03 Jan 2012 22:01:04 GMT" to TS_MW
                                'mtime' => wfTimestamp( TS_MW, $srcObj->last_modified ),
-                               'size'  => $srcObj->content_length,
+                               'size'  => (int)$srcObj->content_length,
                                'sha1'  => $srcObj->metadata['Sha1base36']
                        );
                } catch ( NoSuchContainerException $e ) {
@@ -1018,13 +1032,14 @@ class SwiftFileBackend extends FileBackendStore {
        }
 
        /**
-        * Purge the CDN cache of affected objects if CDN caching is enabled
+        * Purge the CDN cache of affected objects if CDN caching is enabled.
+        * This is for Rackspace/Akamai CDNs.
         *
         * @param $objects Array List of CF_Object items
         * @return void
         */
        public function purgeCDNCache( array $objects ) {
-               if ( $this->swiftUseCDN ) { // Rackspace style CDN
+               if ( $this->swiftUseCDN && $this->swiftCDNPurgable ) {
                        foreach ( $objects as $object ) {
                                try {
                                        $object->purge_from_cdn();
@@ -1114,7 +1129,7 @@ class SwiftFileBackend extends FileBackendStore {
         *
         * @param $container string Container name
         * @return CF_Container
-        * @throws InvalidResponseException
+        * @throws CloudFilesException
         */
        protected function createContainer( $container ) {
                $conn = $this->getConnection(); // Swift proxy connection
@@ -1128,12 +1143,12 @@ class SwiftFileBackend extends FileBackendStore {
         *
         * @param $container string Container name
         * @return void
-        * @throws InvalidResponseException
+        * @throws CloudFilesException
         */
        protected function deleteContainer( $container ) {
                $conn = $this->getConnection(); // Swift proxy connection
-               $conn->delete_container( $container );
                unset( $this->connContainers[$container] ); // purge cache
+               $conn->delete_container( $container );
        }
 
        /**
index ae22a1c..ddc640a 100644 (file)
@@ -23,7 +23,7 @@
 
 /**
  * This class is used to hold the location and do limited manipulation
- * of files stored temporarily (usually this will be $wgTmpDirectory)
+ * of files stored temporarily (this will be whatever wfTempDir() returns)
  *
  * @ingroup FileBackend
  */
index 4f3b959..53f3e9f 100644 (file)
@@ -176,6 +176,9 @@ class FSLockManager extends LockManager {
                                        unset( $this->handles[$path][$type] );
                                }
                        }
+                       if ( !count( $this->locksHeld[$path] ) ) {
+                               unset( $this->locksHeld[$path] ); // no locks on this path
+                       }
                        // Unlock handles to release locks and delete
                        // any lock files that end up with no locks on them...
                        if ( wfIsWindows() ) {
@@ -218,12 +221,11 @@ class FSLockManager extends LockManager {
         */
        private function pruneKeyLockFiles( $path ) {
                $status = Status::newGood();
-               if ( !count( $this->locksHeld[$path] ) ) {
+               if ( !isset( $this->locksHeld[$path] ) ) {
                        # No locks are held for the lock file anymore
                        if ( !unlink( $this->getLockPath( $path ) ) ) {
                                $status->warning( 'lockmanager-fail-deletelock', $path );
                        }
-                       unset( $this->locksHeld[$path] );
                        unset( $this->handles[$path] );
                }
                return $status;
@@ -239,11 +241,15 @@ class FSLockManager extends LockManager {
                return "{$this->lockDir}/{$hash}.lock";
        }
 
+       /**
+        * Make sure remaining locks get cleared for sanity
+        */
        function __destruct() {
-               // Make sure remaining locks get cleared for sanity
-               foreach ( $this->locksHeld as $path => $locks ) {
-                       $this->doSingleUnlock( $path, self::LOCK_EX );
-                       $this->doSingleUnlock( $path, self::LOCK_SH );
+               while ( count( $this->locksHeld ) ) {
+                       foreach ( $this->locksHeld as $path => $locks ) {
+                               $this->doSingleUnlock( $path, self::LOCK_EX );
+                               $this->doSingleUnlock( $path, self::LOCK_SH );
+                       }
                }
        }
 }
index 2d6b218..065679a 100644 (file)
@@ -63,6 +63,11 @@ abstract class File {
 
        const DELETE_SOURCE = 1;
 
+       // Audience options for File::getDescription()
+       const FOR_PUBLIC = 1;
+       const FOR_THIS_USER = 2;
+       const RAW = 3;
+
        /**
         * Some member variables can be lazy-initialised using __get(). The
         * initialisation function for these variables is always a function named
@@ -1565,12 +1570,18 @@ abstract class File {
        }
 
        /**
-        * Get discription of file revision
+        * Get description of file revision
         * STUB
         *
+        * @param $audience Integer: one of:
+        *      File::FOR_PUBLIC       to be displayed to all users
+        *      File::FOR_THIS_USER    to be displayed to the given user
+        *      File::RAW              get the description regardless of permissions
+        * @param $user User object to check for, only if FOR_THIS_USER is passed
+        *              to the $audience parameter
         * @return string
         */
-       function getDescription() {
+       function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
                return null;
        }
 
index 1fcd35b..5648261 100644 (file)
@@ -196,7 +196,7 @@ class ForeignAPIFile extends File {
        /**
         * @return null|string
         */
-       public function getDescription() {
+       public function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
                return isset( $this->mInfo['comment'] ) ? strval( $this->mInfo['comment'] ) : null;
        }
 
index cc66649..2f55ec1 100644 (file)
@@ -1467,9 +1467,17 @@ class LocalFile extends File {
        /**
         * @return string
         */
-       function getDescription() {
+       function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
                $this->load();
-               return $this->description;
+               if ( $audience == self::FOR_PUBLIC && $this->isDeleted( self::DELETED_COMMENT ) ) {
+                       return '';
+               } elseif ( $audience == self::FOR_THIS_USER
+                       && !$this->userCan( self::DELETED_COMMENT, $user ) )
+               {
+                       return '';
+               } else {
+                       return $this->description;
+               }
        }
 
        /**
@@ -2370,26 +2378,33 @@ class LocalFileMoveBatch {
                $triplets = $this->getMoveTriplets();
                $triplets = $this->removeNonexistentFiles( $triplets );
 
-               // Copy the files into their new location
-               $statusMove = $repo->storeBatch( $triplets );
-               wfDebugLog( 'imagemove', "Moved files for {$this->file->getName()}: {$statusMove->successCount} successes, {$statusMove->failCount} failures" );
-               if ( !$statusMove->isGood() ) {
-                       wfDebugLog( 'imagemove', "Error in moving files: " . $statusMove->getWikiText() );
-                       $this->cleanupTarget( $triplets );
-                       $statusMove->ok = false;
-                       return $statusMove;
-               }
-
                $this->file->lock(); // begin
+               // Rename the file versions metadata in the DB.
+               // This implicitly locks the destination file, which avoids race conditions.
+               // If we moved the files from A -> C before DB updates, another process could
+               // move files from B -> C at this point, causing storeBatch() to fail and thus
+               // cleanupTarget() to trigger. It would delete the C files and cause data loss.
                $statusDb = $this->doDBUpdates();
-               wfDebugLog( 'imagemove', "Renamed {$this->file->getName()} in database: {$statusDb->successCount} successes, {$statusDb->failCount} failures" );
                if ( !$statusDb->isGood() ) {
                        $this->file->unlockAndRollback();
-                       // Something went wrong with the DB updates, so remove the target files
-                       $this->cleanupTarget( $triplets );
                        $statusDb->ok = false;
                        return $statusDb;
                }
+               wfDebugLog( 'imagemove', "Renamed {$this->file->getName()} in database: {$statusDb->successCount} successes, {$statusDb->failCount} failures" );
+
+               // Copy the files into their new location.
+               // If a prior process fataled copying or cleaning up files we tolerate any
+               // of the existing files if they are identical to the ones being stored.
+               $statusMove = $repo->storeBatch( $triplets, FileRepo::OVERWRITE_SAME );
+               wfDebugLog( 'imagemove', "Moved files for {$this->file->getName()}: {$statusMove->successCount} successes, {$statusMove->failCount} failures" );
+               if ( !$statusMove->isGood() ) {
+                       // Delete any files copied over (while the destination is still locked)
+                       $this->cleanupTarget( $triplets );
+                       $this->file->unlockAndRollback(); // unlocks the destination
+                       wfDebugLog( 'imagemove', "Error in moving files: " . $statusMove->getWikiText() );
+                       $statusMove->ok = false;
+                       return $statusMove;
+               }
                $this->file->unlock(); // done
 
                // Everything went ok, remove the source files
@@ -2506,6 +2521,7 @@ class LocalFileMoveBatch {
                // Create dest pairs from the triplets
                $pairs = array();
                foreach ( $triplets as $triplet ) {
+                       // $triplet: (old source virtual URL, dst zone, dest rel)
                        $pairs[] = array( $triplet[1], $triplet[2] );
                }
 
index 0c3876c..752e214 100644 (file)
@@ -132,7 +132,7 @@ class CliInstaller extends Installer {
         * @param $path String Full path to write LocalSettings.php to
         */
        public function writeConfigurationFile( $path ) {
-               $ls = new LocalSettingsGenerator( $this );
+               $ls = InstallerOverrides::getLocalSettingsGenerator( $this );
                $ls->writeFile( "$path/LocalSettings.php" );
        }
 
index f9892c4..ac5b271 100644 (file)
@@ -835,7 +835,6 @@ Dit is waarskynlik te laag.
 Die installasie mag moontlik faal!",
        'config-xcache' => '[Http://trac.lighttpd.net/xcache/ XCache] is geïnstalleer',
        'config-apc' => '[Http://www.php.net/apc APC] is geïnstalleer',
-       'config-eaccel' => '[Http://eaccelerator.sourceforge.net/ eAccelerator] is geïnstalleer',
        'config-wincache' => '[Http://www.iis.net/download/WinCacheForPhp WinCache] is geïnstalleer',
        'config-diff3-bad' => 'GNU diff3 nie gevind nie.',
        'config-db-type' => 'Databasistipe:',
@@ -1110,7 +1109,7 @@ $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.
@@ -1127,7 +1126,7 @@ $messages['avk'] = array(
        'mainpagetext' => "'''MediaWiki inkeyen talpeyot.'''",
 );
 
-/** Azerbaijani (Azərbaycanca)
+/** Azerbaijani (azərbaycanca)
  * @author Cekli829
  * @author Vago
  * @author Wertuose
@@ -1211,7 +1210,7 @@ $messages['bcl'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Belarusian (Ð\91еларуская) */
+/** Belarusian (беларуская) */
 $messages['be'] = array(
        'mainpagetext' => "'''MediaWiki паспяхова ўсталяваная.'''",
        'mainpagedocfooter' => 'Гл. [//meta.wikimedia.org/wiki/Help:Contents Дапаможнік карыстальніка (англ.)] па далейшыя звесткі аб карыстанні вікі-праграмамі.
@@ -1774,7 +1773,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка паведамленьняў пра зьяўленьне новых вэрсіяў MediaWiki]',
 );
 
-/** Bulgarian (Ð\91ългарски)
+/** Bulgarian (български)
  * @author DCLXVI
  */
 $messages['bg'] = array(
@@ -2424,7 +2423,7 @@ $messages['bn'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়াউইকি রিলিজের মেইলিং লিস্ট]',
 );
 
-/** Bishnupria Manipuri (à¦\87মার à¦ à¦¾à¦°/বিষà§\8dণà§\81পà§\8dরিয়া à¦®à¦£à¦¿à¦ªà§\81রà§\80) */
+/** Bishnupria Manipuri (বিষ্ণুপ্রিয়া মণিপুরী) */
 $messages['bpy'] = array(
        'mainpagetext' => "'''মিডিয়াউইকি হবাবালা ইয়া ইন্সটল ইল.'''",
        'mainpagedocfooter' => 'উইকি সফটৱ্যার এহান আতানির বারে দরকার ইলে [//meta.wikimedia.org/wiki/Help:Contents আতাকুরার গাইড]হানর পাঙলাক নেগা।
@@ -2436,7 +2435,7 @@ $messages['bpy'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়া উইকির ফঙপার বারে মেইলর তালিকাহান]',
 );
 
-/** Breton (Brezhoneg)
+/** Breton (brezhoneg)
  * @author Fohanno
  * @author Fulup
  * @author Gwendal
@@ -2826,7 +2825,7 @@ Gwiriit hag-eñ e c'hall an implijer « $1 » skrivañ er brastres « $2 ».",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Bosnian (Bosanski)
+/** Bosnian (bosanski)
  * @author CERminator
  */
 $messages['bs'] = array(
@@ -2882,7 +2881,6 @@ Ako se sami kompajlirali PHP, podesite ga sa omogućenim klijentom baze podataka
 Ako ste instalirali PHP iz Debian ili Ubuntu paketa, možda morate instalirati i modul php5-mysql.',
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] je instaliran',
        'config-apc' => '[http://www.php.net/apc APC] je instaliran',
-       'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] je instaliran',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] je instaliran',
        'config-diff3-bad' => 'GNU diff3 nije pronađen.',
        'config-db-type' => 'Vrsta baze podataka:',
@@ -2912,7 +2910,7 @@ Ovo '''nije preporučeno''' osim ako nemate problema s vašom wiki.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]',
 );
 
-/** Catalan (Català) */
+/** Catalan (català) */
 $messages['ca'] = array(
        'mainpagetext' => "'''El programari del MediaWiki s'ha instaŀlat correctament.'''",
        'mainpagedocfooter' => "Consulteu la [//meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar-lo.
@@ -2949,7 +2947,7 @@ $messages['ceb'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce  Mailing list sa mga release sa MediaWiki]',
 );
 
-/** Sorani (کوردی)
+/** Sorani Kurdish (کوردی)
  * @author Asoxor
  */
 $messages['ckb'] = array(
@@ -2998,7 +2996,7 @@ $messages['crh-cyrl'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-нинъ янъы версияларынынъ чыкъувындан хабер йиберюв].",
 );
 
-/** Czech (Ä\8cesky)
+/** Czech (Ä\8desky)
  * @author Danny B.
  * @author Mormegil
  */
@@ -3562,19 +3560,21 @@ $messages['cv'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki çĕнĕ верси тухнине пĕлтерекен рассылка].',
 );
 
-/** Welsh (Cymraeg) */
+/** Welsh (Cymraeg)
+ * @author Xxglennxx
+ */
 $messages['cy'] = array(
        'mainpagetext' => "'''Wedi llwyddo gosod meddalwedd MediaWiki yma'''",
        'mainpagedocfooter' => 'Ceir cymorth (yn Saesneg) ar ddefnyddio meddalwedd wici yn y [//meta.wikimedia.org/wiki/Help:Contents Canllaw Defnyddwyr] ar wefan Wikimedia.
 
 ==Cychwyn arni==
 
-* [//www.mediawiki.org/wiki/Manual:Configuration_settings Rhestr gosodiadau wrth gyflunio]
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Rhestr osodiadau wrth gyflunio]
 * [//www.mediawiki.org/wiki/Manual:FAQ Cwestiynau poblogaidd ar MediaWiki]
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Rhestr postio datganiadau MediaWiki]',
 );
 
-/** Danish (Dansk)
+/** Danish (dansk)
  * @author Peter Alberti
  */
 $messages['da'] = array(
@@ -3735,7 +3735,7 @@ Miniaturansichten von Bildern sind daher nicht möglich.',
 Der Installationsvorgang wurde daher abgebrochen.",
        'config-no-cli-uri' => "'''Warnung''': Es wurde kein Pfad zum Skipt (--scriptpath) angegeben. Daher wird der Standardpfad genutzt: <code>$1</code>.",
        'config-using-server' => 'Der Servername „<nowiki>$1</nowiki>“ wird verwendet.',
-       'config-using-uri' => 'Verwende Server-URL „<nowiki>$1$2</nowiki>“.',
+       'config-using-uri' => 'Die Server-URL „<nowiki>$1$2</nowiki>“ wird verwendet.',
        'config-uploads-not-safe' => "'''Warnung:''' Das Standardverzeichnis für hochgeladene Dateien <code>$1</code> ist für die willkürliche Ausführung von Skripten anfällig.
 Obwohl MediaWiki die hochgeladenen Dateien auf Sicherheitsrisiken überprüft, wird dennoch dringend empfohlen diese [//www.mediawiki.org/wiki/Manual:Security#Upload_security Sicherheitslücke] zu schließen, bevor das Hochladen von Dateien aktiviert wird.",
        'config-no-cli-uploads-check' => "'''Warnung''': Das Standardverzeichnis für hochgeladene Dateien (<code>$1</code>) wird, während der Installation über die Kommandozeile, nicht auf Sicherheitsanfälligkeiten hinsichtlich willkürlicher Skriptausführungen geprüft.",
@@ -4148,8 +4148,11 @@ $messages['de-formal'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
 );
 
-/** Zazaki (Zazaki) */
+/** Zazaki (Zazaki)
+ * @author Mirzali
+ */
 $messages['diq'] = array(
+       'config-page-name' => 'Name',
        '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.
 
@@ -4216,7 +4219,7 @@ $messages['eo'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki dissendolisto pri anoncoj] (angla)",
 );
 
-/** Spanish (Español)
+/** Spanish (español)
  * @author Armando-Martin
  * @author Crazymadlover
  * @author Danke7
@@ -4278,7 +4281,7 @@ Verifica tu php.ini y comprueba que <code>session.save_path</code> está estable
        'config-help-restart' => '¿Deseas borrar todos los datos que has ingresado hasta ahora y reiniciar el proceso de instalación desde el principio?',
        'config-restart' => 'Sí, reiniciarlo',
        'config-welcome' => '=== Comprobación del entorno ===
-Se realiza comprobacioens básicas para ver si el entorno es adecuado para la instalación de MediaWiki.
+Se realiza comprobaciones básicas para ver si el entorno es adecuado para la instalación de MediaWiki.
 Deberás suministrar los resultados de tales comprobaciones si necesitas ayuda durante la instalación.',
        'config-copyright' => "=== Derechos de autor y Términos de uso ===
 
@@ -4766,14 +4769,14 @@ 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]',
 );
 
-/** Estonian (Eesti) */
+/** Estonian (eesti) */
 $messages['et'] = array(
        'mainpagetext' => "'''MediaWiki tarkvara on edukalt paigaldatud.'''",
        'mainpagedocfooter' => 'Juhiste saamiseks kasutamise ning konfigureerimise kohta vaata palun inglisekeelset [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentatsiooni liidese kohaldamisest]
 ning [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].',
 );
 
-/** Basque (Euskara)
+/** Basque (euskara)
  * @author An13sa
  */
 $messages['eu'] = array(
@@ -4806,7 +4809,6 @@ $messages['eu'] = array(
        'config-env-php' => 'PHP $1 instalatuta dago.',
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] instalatuta dago',
        'config-apc' => '[http://www.php.net/apc APC] instalatuta dago',
-       'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] instalatuta dago',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] instalatuta dago',
        'config-diff3-bad' => 'GNU diff3 ez da aurkitu.',
        'config-db-type' => 'Datu-base mota:',
@@ -4855,7 +4857,7 @@ $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.
@@ -4917,7 +4919,7 @@ $messages['fa'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce فهرست پست الکترونیکی نسخه‌های مدیاویکی]',
 );
 
-/** Finnish (Suomi)
+/** Finnish (suomi)
  * @author Centerlink
  * @author Crt
  * @author Nike
@@ -5099,12 +5101,12 @@ 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ð.'''",
 );
 
-/** French (Français)
+/** French (français)
  * @author Aadri
  * @author Crochet.david
  * @author Gomoko
@@ -5114,6 +5116,7 @@ $messages['fo'] = array(
  * @author Jean-Frédéric
  * @author McDutchie
  * @author Peter17
+ * @author Reedy
  * @author Sherbrooke
  * @author Urhixidur
  * @author Verdy p
@@ -5185,26 +5188,26 @@ Ce programme est distribué dans l’espoir qu’il sera utile, mais '''sans auc
 Voir la Licence Publique Générale GNU pour plus de détails.
 
 Vous devriez avoir reçu <doclink href=Copying>une copie de la Licence Publique Générale GNU</doclink> avec ce programme ; dans le cas contraire, écrivez à la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ou [http://www.gnu.org/copyleft/gpl.html lisez-le en ligne].",
-       'config-sidebar' => '* [//www.mediawiki.org MediaWiki Accueil]
+       'config-sidebar' => '* [//www.mediawiki.org Accueil MediaWiki]
 * [//www.mediawiki.org/wiki/Help:Contents Guide de l’utilisateur]
 * [//www.mediawiki.org/wiki/Manual:Contents Guide de l’administrateur]
 * [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
 ----
 * <doclink href=Readme>Lisez-moi</doclink>
-* <doclink href=ReleaseNotes>Notes de pblication</doclink>
+* <doclink href=ReleaseNotes>Notes de publication</doclink>
 * <doclink href=Copying>Copie</doclink>
 * <doclink href=UpgradeDoc>Mise à jour</doclink>',
        'config-env-good' => 'L’environnement a été vérifié.
 Vous pouvez installer MediaWiki.',
        'config-env-bad' => 'L’environnement a été vérifié.
-vous ne pouvez pas installer MediaWiki.',
+Vous ne pouvez pas installer MediaWiki.',
        'config-env-php' => 'PHP $1 est installé.',
        'config-env-php-toolow' => 'PHP $1 est installé.
 Cependant, MediaWiki requiert PHP $2 ou plus haut.',
        'config-unicode-using-utf8' => 'Utilisation de utf8_normalize.so par Brion Vibber pour la normalisation Unicode.',
        'config-unicode-using-intl' => "Utilisation de [http://pecl.php.net/intl l'extension PECL intl] pour la normalisation Unicode.",
        'config-unicode-pure-php-warning' => "'''Attention''': L'[http://pecl.php.net/intl extension PECL intl] n'est pas disponible pour la normalisation d’Unicode, retour à la version lente implémentée en PHP.
-Si vous utilisez un site web très fréquenté, vous devriez lire ceci : [//www.mediawiki.org/wiki/Unicode_normalization_considerations ''Unicode normalization''] (en anglais).",
+Si votre site web sera très fréquenté, vous devriez lire ceci : [//www.mediawiki.org/wiki/Unicode_normalization_considerations ''Unicode normalization''] (en anglais).",
        'config-unicode-update-warning' => "'''Attention''': La version installée du ''wrapper'' de normalisation Unicode utilise une vieille version de la [http://site.icu-project.org/ bibliothèque logicielle ''ICU Project''].
 Vous devriez faire une [//www.mediawiki.org/wiki/Unicode_normalization_considerations mise à jour] (texte en anglais) si l'usage d'Unicode vous semble important.",
        'config-no-db' => "Impossible de trouver un pilote de base de données approprié ! Vous devez installer un pilote pour PHP. Ces types de bases de données sont reconnus : $1.
@@ -5260,8 +5263,8 @@ La miniaturisation d'images sera désactivé.",
        'config-no-uri' => "'''Erreur :''' Impossible de déterminer l'URI du script actuel.
 Installation avortée.",
        'config-no-cli-uri' => "'''Attention''': Aucun --scriptpath n'a été spécifié; <code>$1</code> sera utilisé par défaut",
-       'config-using-server' => 'En utilisant le nom du serveur "<nowiki>$1</nowiki>".',
-       'config-using-uri' => 'Utilise l\'URL du serveur "<nowiki>$1$2</nowiki>".',
+       'config-using-server' => 'Utilisation du nom de serveur "<nowiki>$1</nowiki>".',
+       'config-using-uri' => 'Utilisation de l\'URL de serveur "<nowiki>$1$2</nowiki>".',
        'config-uploads-not-safe' => "'''Attention:''' Votre répertoire par défaut pour les téléchargements, <code>$1</code>, est vulnérable, car il peut exécuter n'importe quel script.
 Bien que MediaWiki vérifie tous les fichiers téléchargés, il est fortement recommandé de [//www.mediawiki.org/wiki/Manual:Security#Upload_security fermer cette vulnérabilité de sécurité] (texte en anglais) avant d'activer les téléchargements.",
        'config-no-cli-uploads-check' => "'''Attention:''' Votre répertoire par défaut pour les imports(<code>$1</code>) n'est pas contrôlé concernant la vulnérabilité d'exécution de scripts arbitraires lors de l'installation CLI.",
@@ -5375,7 +5378,7 @@ Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous
        'config-invalid-schema' => 'Schéma invalide pour MediaWiki « $1 ».
 Utilisez seulement des lettres latines (a-z, A-Z), des chiffres (0-9) et des caractères de soulignement (_).',
        'config-db-sys-create-oracle' => "L'installateur ne reconnaît que les compte SYSDBA lors de la création d'un nouveau compte.",
-       'config-db-sys-user-exists-oracle' => 'Le compte « $1 » existe déjà. Un SYSDBA peut seulement servir à créer un nouveau comtpe.',
+       'config-db-sys-user-exists-oracle' => 'Le compte « $1 » existe déjà. Un SYSDBA peut seulement servir à créer un nouveau compte.',
        'config-postgres-old' => 'PostgreSQL $1 ou version ultérieure est requis, vous avez $2.',
        'config-sqlite-name-help' => "Choisir un nom qui identifie votre wiki.
 Ne pas utiliser des espaces ou des traits d'union.
@@ -5436,7 +5439,7 @@ Le compte que vous spécifiez ici doit déjà exister.",
  * il supporte à peine la simultanéité en raison de verrouillage de table
  * il est plus sujet à la corruption que les autres moteurs
  * le codebase MediaWiki ne gère pas toujours MyISAM comme il se doit
-Si votre installation MySQL supporte InnoDB, il est fortement recommandé que vous le choisissez plutôt. Si votre installation MySQL ne supporte pas les tables InnoDB, il est peut-être temps de faire une une mise à niveau.",
+Si votre installation MySQL supporte InnoDB, il est fortement recommandé que vous le choisissez plutôt. Si votre installation MySQL ne supporte pas les tables InnoDB, il est peut-être temps de faire une mise à niveau.",
        'config-mysql-engine-help' => "'''InnoDB''' est presque toujours la meilleure option, car il supporte bien l'[http://fr.wikipedia.org/wiki/Ordonnancement_dans_les_syst%C3%A8mes_d%27exploitation ordonnancement].
 
 '''MyISAM''' peut être plus rapide dans les installations monoposte ou en lecture seule. Les bases de données MyISAM ont tendance à se corrompre plus souvent que celles d'InnoDB.",
@@ -5490,7 +5493,7 @@ Vous pouvez passer la configuration restante et installer immédiatement le wiki
        'config-optional-skip' => 'J’en ai assez, installer simplement le wiki.',
        'config-profile' => 'Profil des droits d’utilisateurs :',
        'config-profile-wiki' => 'Wiki traditionnel',
-       'config-profile-no-anon' => 'Création de comte requise',
+       'config-profile-no-anon' => 'Création de compte requise',
        'config-profile-fishbowl' => 'Éditeurs autorisés seulement',
        'config-profile-private' => 'Wiki privé',
        'config-profile-help' => "Les wikis fonctionnent mieux lorsque vous laissez le plus de personnes possible le modifier.
@@ -5527,7 +5530,7 @@ C'est une licence valide, mais elle est difficile à comprendre. De plus, elle p
        'config-enable-email' => 'Activer les courriels sortants',
        'config-enable-email-help' => 'Si vous souhaitez utiliser le courriel, vous devez [http://www.php.net/manual/en/mail.configuration.php configurer des paramètres PHP] (texte en anglais).
 Si vous ne voulez pas du service de courriel, vous pouvez le désactiver ici.',
-       'config-email-user' => 'Activer les courriels de utilisateur à utilisateur',
+       'config-email-user' => "Activer les courriers électroniques d'utilisateur à utilisateur",
        'config-email-user-help' => "Permet à tous les utilisateurs d'envoyer des courriels à d'autres utilisateurs si cela est activé dans leurs préférences.",
        'config-email-usertalk' => 'Activer la notification des pages de discussion des utilisateurs',
        'config-email-usertalk-help' => 'Permet aux utilisateurs de recevoir une notification en cas de modification de leurs pages de discussion, si cela est activé dans leurs préférences.',
@@ -5599,7 +5602,7 @@ Si vous voulez apporter des modifications, appuyez sur Retour.",
        'config-install-pg-schema-failed' => "Échec lors de la création des tables.
 Assurez-vous que l'utilisateur « $1 » peut écrire selon le schéma « $2 ».",
        'config-install-pg-commit' => 'Validation des modifications',
-       'config-install-pg-plpgsql' => 'Vérification du language PL/pgSQL',
+       'config-install-pg-plpgsql' => 'Vérification du langage PL/pgSQL',
        'config-pg-no-plpgsql' => 'Vous devez installer le langage PL/pgSQL dans la base de données $1',
        'config-pg-no-create-privs' => "Le compte que vous avez spécifié pour l'installation n'a pas suffisamment de privilèges pour créer un compte.",
        'config-pg-not-in-role' => "Le compte que vous avez spécifié pour l'utilisateur web existe déjà !
@@ -5654,7 +5657,7 @@ 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.
@@ -5666,7 +5669,7 @@ $messages['frc'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Liste à Malle]',
 );
 
-/** Franco-Provençal (Arpetan)
+/** Franco-Provençal (arpetan)
  * @author ChrisPtDe
  */
 $messages['frp'] = array(
@@ -5840,7 +5843,7 @@ $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.'''",
 );
@@ -5876,7 +5879,7 @@ $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软件
@@ -5888,7 +5891,7 @@ $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軟件
@@ -7078,7 +7081,7 @@ chmod a+w $3</pre></div>',
        'config-cache-options' => 'הגדרות למטמון עצמים (object caching):',
        'config-cache-help' => 'מטמון עצמים משמש לשיפור המהירות של מדיה־ויקי על־ידי שמירה של נתונים שהשימוש בהם נפוץ במטמון.
 לאתרים בינוניים וגדולים כדאי מאוד להפעיל את זה, וגם אתרים קטנים ייהנו מזה.',
-       'config-cache-none' => 'ללא מטמון (שום יכולת אינה מוסרת, אבל הביצועים באתרים גדולים ייפגעו)',
+       'config-cache-none' => 'ללא מטמון (שום יכולת אינה מוּסרת, אבל הביצועים באתרים גדולים ייפגעו)',
        'config-cache-accel' => 'מטמון עצמים (object caching) של PHP&rlm; (APC&rlm;, XCache או WinCache)',
        'config-cache-memcached' => 'להשתמש ב־Memcached (דורש התקנות והגדרות נוספות)',
        'config-memcached-servers' => 'שרתי Memcached:',
@@ -7136,7 +7139,7 @@ chmod a+w $3</pre></div>',
        'config-install-sysop' => 'יצירת חשבון מפעיל',
        'config-install-subscribe-fail' => 'הרישום ל־mediawiki-announce לא הצליח: $1',
        'config-install-subscribe-notpossible' => 'cURL אינה מותקנת ו־allow_url_fopen אינה זמינה.',
-       'config-install-mainpage' => '×\99צ×\99רת ×\93×£ ×¨×\90ש×\99 ×¢×\9d ×ª×\95×\9b×\9f ×\9cפ×\99 ×\91ררת ×\9e×\97×\93×\9c.',
+       'config-install-mainpage' => '×\99צ×\99רת ×\93×£ ×¨×\90ש×\99 ×¢×\9d ×ª×\95×\9b×\9f ×\94ת×\97×\9cת×\99.',
        'config-install-extension-tables' => 'יצירת טבלאות להרחבות מופעלות',
        'config-install-mainpage-failed' => 'לא הצליחה הכנסת דף ראשי: $1.',
        'config-install-done' => "'''מזל טוב!'''
@@ -7203,7 +7206,7 @@ $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]
@@ -7561,7 +7564,7 @@ $messages['ht'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lis diskisyon ki parèt sou MediaWiki]',
 );
 
-/** Hungarian (Magyar)
+/** Hungarian (magyar)
  * @author Dani
  * @author Glanthor Reviol
  */
@@ -8096,7 +8099,7 @@ $messages['hy'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Interlingua (Interlingua)
+/** Interlingua (interlingua)
  * @author McDutchie
  */
 $messages['ia'] = array(
@@ -9201,7 +9204,7 @@ $messages['io'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki nova versioni posto-listo]",
 );
 
-/** Icelandic (Ã\8dslenska) */
+/** 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.
@@ -9213,7 +9216,7 @@ $messages['is'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Póstlisti MediaWiki-útgáfa]',
 );
 
-/** Italian (Italiano)
+/** Italian (italiano)
  * @author Beta16
  * @author Karika
  */
@@ -9279,7 +9282,6 @@ Non è possibile installare MediaWiki.",
 Tuttavia, MediaWiki richiede PHP $2 o superiore.',
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] è installato',
        'config-apc' => '[http://www.php.net/apc APC] è installato',
-       'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] è installato',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] è installato',
        'config-diff3-bad' => 'GNU diff3 non trovato.',
        'config-db-type' => 'Tipo di database:',
@@ -9314,7 +9316,7 @@ Specificare un nome utente diverso.',
        'config-license-cc-0' => 'Creative Commons Zero (pubblico dominio)',
        'config-license-gfdl' => 'GNU Free Documentation License 1.3 o versioni successive',
        'config-license-pd' => 'Pubblico dominio',
-       'config-email-settings' => 'Impostazioni e-mail',
+       'config-email-settings' => 'Impostazioni email',
        'config-install-interwiki-list' => 'Impossibile leggere il file <code>interwiki.list</code>.',
        'config-install-stats' => 'Inizializzazione delle statistiche',
        'config-install-keys' => 'Generazione delle chiavi segrete',
@@ -9341,6 +9343,7 @@ I seguenti collegamenti sono in lingua inglese:
  * @author Mizusumashi
  * @author Ninomy
  * @author Ohgi
+ * @author Shirayuki
  * @author Whym
  * @author Yanajin66
  * @author 青子守歌
@@ -9671,7 +9674,7 @@ chmod a+w $3</pre>',
        'config-admin-password-blank' => '管理者アカウントのパスワードを入力してください。',
        'config-admin-password-same' => 'ユーザ名と同じパスワードは使えません。',
        'config-admin-password-mismatch' => '入力された二つのパスワードが一致しません。',
-       'config-admin-email' => 'Eメールアドレス:',
+       'config-admin-email' => 'メールアドレス:',
        'config-admin-email-help' => '電子メールアドレスを入力してください。他のユーザーからの電子メールの受け取りと、パスワードのリセット、ウォッチリストに登録したページの更新通知に用いられます。',
        'config-admin-error-user' => '"<nowiki>$1</nowiki>"という名前の管理者を作成する際に内部エラーが発生しました。',
        'config-admin-error-password' => '管理者"<nowiki>$1</nowiki>"のパスワードを設定する際に内部エラーが発生しました: <pre>$2</pre>',
@@ -9836,7 +9839,7 @@ $messages['jam'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
 );
 
-/** Jutish (Jysk)
+/** Jutish (jysk)
  * @author Huslåke
  */
 $messages['jut'] = array(
@@ -9988,11 +9991,22 @@ $messages['kn'] = array(
 
 /** Korean (한국어)
  * @author Kwj2772
+ * @author 아라
  */
 $messages['ko'] = array(
-       'config-desc' => '미ë\94\94ì\96´ì\9c\84í\82¤ ì\9d¸ì\8a¤í\86¨ë\9f¬',
-       'config-title' => '미디어위키 $1 설치',
+       'config-desc' => 'MediaWiki ì\84¤ì¹\98 ë§\88ë²\95ì\82¬',
+       'config-title' => 'MediaWiki $1 설치',
        'config-information' => '정보',
+       'config-localsettings-upgrade' => '<code>LocalSettings.php</code> 파일이 감지되었습니다.
+이 설치를 업그레이드하려면 아래 상자에 <code>$wgUpgradeKey</code>의 값을 입력해주세요.
+LocalSettings.php에 찾으세요.',
+       'config-localsettings-cli-upgrade' => 'LocalSettings.php 파일이 감지되었습니다. 이 설치를 업그레이드하려면 update.php를 대신 실행하세요',
+       'config-localsettings-key' => '업그레이드 키:',
+       'config-localsettings-badkey' => '제공한 키가 잘못되었습니다.',
+       'config-upgrade-key-missing' => 'MediaWiki의 기존 설치가 감지되었습니다.
+이 설치를 업그레이드하려면 LocalSettings.php의 아래에 다음 줄을 넣으세요:
+
+$1',
        'config-wiki-language' => '위키 언어:',
        'config-back' => '← 뒤로',
        'config-continue' => '계속 →',
@@ -10001,39 +10015,137 @@ $messages['ko'] = array(
        'config-page-name' => '이름',
        'config-page-install' => '설치',
        'config-page-complete' => '완료!',
-       'config-help-restart' => '당신이 입력한 모든 저장된 데이터를 지우고 설치 과정을 다시 시작하겠습니까?',
+       'config-help-restart' => '당신이 입력한 모든 저장된 데이터를 지우고 설치 과정을 다시 시작하겠습니까?',
        'config-restart' => '예, 다시 시작합니다.',
        'config-welcome' => '=== 사용 환경 검사 ===
 이 환경이 미디어위키 설치에 적합할 지 기본 검사를 실행합니다.
 설치 중 도움이 필요하다면 이 검사 결과를 함께 제공해주셔야 합니다.',
-       'config-env-php' => 'PHP $1가 설치되었습니다.',
-       'config-env-php-toolow' => 'PHP $1가 설치되었습니다.
+       'config-copyright' => "=== 저작권 및 사용 약관 ===
+
+$1
+
+이 프로그램은 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 프로그램을 재배포하거나 수정할 수 있습니다.
+
+이 프로그램이 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''.
+자세한 내용은 GNU 일반 공중 사용 허가서를 참고하십시오.
+
+당신은 이 프로그램을 통해 <doclink href=Copying>GNU 일반 공중 사용 허가서 전문</doclink>을 받았습니다; 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [http://www.gnu.org/copyleft/gpl.html 온라인으로 읽어보시기] 바랍니다.",
+       'config-env-good' => '환경이 확인되었습니다.
+MediaWiki를 설치할 수 있습니다.',
+       'config-env-bad' => '환경이 확인되었습니다.
+MediaWiki를 설치할 수 없습니다.',
+       'config-env-php' => 'PHP $1(이)가 설치되었습니다.',
+       'config-env-php-toolow' => 'PHP $1(이)가 설치되었습니다.
 하지만 미디어위키는 PHP $2 이상이 필요합니다.',
+       'config-ctype' => "'''심각''': PHP는 [http://www.php.net/manual/en/ctype.installation.php Ctype 확장 기능]에 대해 지원하여 컴파일해야 합니다.",
+       'config-apc' => '[http://www.php.net/apc APC]가 설치되었습니다',
+       'config-diff3-bad' => 'GNU diff3를 찾을 수 없습니다.',
+       'config-imagemagick' => 'ImageMagick를 찾았습니다: <code>$1</code>.
+올리기를 활성화할 경우 그림 섬네일이 활성화될 것입니다.',
+       'config-gd' => '내장된 GD 그래픽 라이브러리를 찾았습니다.
+올리기를 활성화할 경우 그림 섬네일이 활성화될 것입니다.',
+       'config-brokenlibxml' => '시스템에 버그가 있는 PHP와 libxml2의 조합이 있으며 MediaWiki나 다른 웹 어플리케이션에 숨겨진 데이터 손상을 일으킬 수 있습니다.
+PHP 5.2.9 이후와 libxml2 2.7.3 이후로 업그레이드하세요 ([//bugs.php.net/bug.php?id=45996 PHP에 제기한 버그]).
+설치가 중단되었습니다.',
        'config-db-type' => '데이터베이스 종류:',
        'config-db-host' => '데이터베이스 호스트:',
+       'config-db-host-help' => '데이터베이스 서버가 다른 서버에 있을 경우 여기에 호스트 이름이나 IP 주소를 입력하세요.
+
+웹 호스팅을 공유하여 사용하는 경우 호스팅 공급자는 당신에게 이들 설명서의 올바른 호스트 이름을 표기해야 합니다.
+
+윈도 서버에 설치하고 MySQL을 사용할 경우 "localhost"는 서버 이름으로 작동하지 않을 수 있습니다. 그렇지 않으면 로컬 IP 주소로 "127.0.0.1"를 시도하세요.
+
+PostgreSQL을 사용할 경우 유닉스 소켓을 통해 연결되도록 입력란을 비워두세요.',
+       '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 쉬운 연결] 네이밍 메소드도 사용할 수 있습니다.',
+       'config-db-wiki-settings' => '이 위키 식별',
        'config-db-name' => '데이터베이스 이름:',
+       'config-db-name-help' => '위키를 식별하기 위한 이름을 선택하세요.
+이는 공백이 없어야 합니다.
+
+웹 호스팅을 공유해 사용하는 경우 호스팅 제공 업체도 당신에게 제어판을 통해 데이터베이스를 사용하거나 만들 수 있도록 특정 데이터베이스 이름을 제공합니다.',
+       'config-db-name-oracle' => '데이터베이스 스케마:',
+       'config-db-account-oracle-warn' => '데이터베이스 백엔드로 오라클을 설치하기 위해 지원하는 세 가지 시나리오가 있습니다:
+
+설치 과정의 일부로 데이터베이스 계정을 만들려면 설치를 위해 데이터베이스 계정으로 SYSDBA 역할을 가진 계정을 제공하고 웹 액세스 계정에 대해 원하는 자격 증명을 지정하세요, 그렇지 않으면 수동으로 웹 액세스 계정을 만들 수 있으며 (필요한 경우 권한 스키마 개체를 만들어야 합니다) 또는 다른 계정 두 개를 만들고 권한을 가진 하나의 웹 액세스를 위한 제한된 하나를 제공할 수 있습니다.
+
+필요한 권한을 가진 계정을 만드는 스크립트는 이 설치의 "maintenance/oracle/" 디렉토리에서 찾을 수 있습니다. 제한된 계정을 사용하면 기본 계정으로 모든 관리 기능을 비활성화할 것을 염두해 두십시오.',
+       'config-db-install-account' => '설치를 위한 사용자 계정',
        'config-db-username' => '데이터베이스 사용자 이름:',
        'config-db-password' => '데이터베이스 비밀번호:',
+       'config-db-password-empty' => '새 데이터베이스 사용자의 비밀번호를 입력하세요: $1.
+비밀번호 없이 사용자를 만들 수도 있지만 이는 안전하지 않습니다.',
+       'config-db-install-username' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 사용자 이름을 입력하세요.
+이는 MediaWiki 계정의 사용자 이름이 아닌 데이터베이스에 대한 사용자 이름입니다.',
+       'config-db-install-password' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 비밀번호을 입력하세요. 이는 MediaWiki 계정의 비밀번호가 아닌 데이터베이스에 대한 비밀번호입니다.',
+       'config-db-install-help' => '설치 과정 중에 데이터베이스에 연결할 때 사용할 사용자 이름과 비밀번호를 입력하세요.',
+       'config-db-account-lock' => '정상적으로 작동하는 동안 같은 사용자 이름과 비밀번호를 사용함',
+       'config-db-wiki-account' => '정상적인 작동을 위한 사용자 계정',
+       'config-db-wiki-help' => '정상적인 위키 작업 동안 데이터베이스에 연결하는 데 사용할 사용자 이름과 비밀 번호를 입력하세요.
+계정이 존재하지 않고 설치 계정에 충분한 권한이 있는 경우 이 사용자 계정은 위키를 작동하는 데 필요한 최소 권한으로 만들어집니다.',
        'config-db-prefix' => '데이터베이스 테이블 접두어:',
+       'config-db-prefix-help' => '여러 위키 사이 또는 MediaWiki와 다른 웹 응용 프로그램 사이에서 하나의 데이터베이스를 공유해야 하는 경우, 충돌을 피하기 위해 모든 테이블 이름에 접두어를 추가하도록 선택할 수 있습니다.
+공백을 사용하지 마세요.
+
+이 필드는 일반적으로 비어있습니다.',
+       'config-db-charset' => '데이터베이스 문자 집합',
        'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 바이너리',
        'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
+       'config-charset-mysql4' => 'MySQL 4.0 UTF-8 하위 호환성',
+       'config-charset-help' => "'''경고:''' MySQL 4.1에서 '''UTF-8 하위 호환성'''을 사용하고 나서 <code>mysqldump</code>로 데이터베이스에 백업한다면 이는 모든 ASCII가 아닌 문자를 파괴하고 손상한 백업을 되돌릴 수 없습니다!
+
+'''바이너리 모드'''에서는 MediaWiki는 바이너리 필드의 데이터베이스에 UTF-8 텍스트를 저장합니다.
+이는 MySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전체 범위를 사용할 수 있습니다.
+'''UTF-8 모드'''에서는 MySQL은 데이터를 설정하는 어떤 문자열인지를 알 것이며, 표현하고 적절하게 그것을 변환할 수 있지만
+[//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes 기본 다국어 공간] 상의 문자를 저장하지 못하게 될 수 있습니다.",
+       'config-db-port' => '데이터베이스 포트:',
+       'config-db-schema' => 'MediaWiki에 대한 스케마:',
+       'config-db-schema-help' => '이 스케마는 보통 괜찮습니다.
+필요로 알고 있을 경우에만 이를 바꿉니다.',
        'config-header-mysql' => 'MySQL 설정',
        'config-header-postgres' => 'PostgreSQL 설정',
        'config-header-sqlite' => 'SQLite 설정',
+       'config-header-oracle' => '오라클 설정',
+       'config-header-ibm_db2' => 'IBM DB2 설정',
+       'config-connection-error' => '$1.
+
+호스트, 계정 이름과 비밀번호를 확인하고 다시 시도하세요.',
+       'config-db-sys-create-oracle' => '설치 마법사는 새 계정을 만들기 위한 SYSDBA 계정만을 지원합니다.',
+       'config-db-sys-user-exists-oracle' => '"$1" 사용자 계정이 이미 존재합니다. SYSDBA는 새 계정을 만드는 데에만 사용할 수 있습니다!',
        'config-sqlite-readonly' => '파일 <code>$1</code>은 쓰기가 불가능합니다.',
+       'config-can-upgrade' => "이 데이터베이스에 MediaWiki 테이블이 있습니다.
+MediaWiki $1(으)로 업그레이드하려면 '''계속'''을 클릭하세요.",
+       'config-db-web-account' => '웹 액세스를 위한 데이터베이스 계정',
+       'config-db-web-help' => '위키의 일반적인 작업 중에 데이터베이스 서버에 연결하는 데 사용할 웹 서버에 대한 계정 이름과 비밀번호를 선택합니다.',
+       'config-db-web-account-same' => '설치를 위해 같은 계정을 사용',
+       'config-db-web-create' => '이 계정이 아직 존재하지 않을 경우 계정을 만들기',
+       'config-db-web-no-create-privs' => '설치를 위해 지정한 계정은 계정을 만들 수 있는 충분한 권한이 없습니다.
+여기서 지정한 계정은 이미 존재해야 합니다.',
        'config-mysql-utf8' => 'UTF-8',
+       'config-ibm_db2-low-db-pagesize' => "당신의 DB2 데이터베이스가 부족한 페이지 크기가 기본 테이블 공간에 있습니다. 페이지 크기는 '''32K''' 이상이어야 합니다.",
        'config-site-name' => '위키의 이름:',
        'config-site-name-help' => '이것이 브라우저 제목 표시줄과 다른 여러 곳에 나타날 것입니다.',
        'config-site-name-blank' => '사이트 이름을 입력하세요.',
        'config-project-namespace' => '프로젝트 이름공간:',
        'config-ns-generic' => '프로젝트',
        'config-admin-box' => '관리자 계정',
+       'config-admin-name' => '사용자 이름:',
        'config-admin-password' => '비밀번호:',
        'config-admin-password-confirm' => '비밀번호 확인:',
-       'config-admin-password-blank' => '관리자 계정의 비밀번호를 입력하십시오.',
-       'config-admin-password-same' => '비밀번호는 계정 이름과 같아서는 안 됩니다.',
-       'config-admin-password-mismatch' => '당신이 입력한 비밀번호 두 개가 일치하지 않습니다.',
+       'config-admin-help' => '"홍길동"과 같이 여기에 원하는 사용자 이름을 입력합니다.
+이는 위키에 로그인하는 데 사용되는 이름입니다.',
+       'config-admin-name-blank' => '관리자의 사용자 이름을 입력하세요.',
+       'config-admin-name-invalid' => '특정 "<nowiki>$1</nowiki>" 사용자 이름이 잘못되었습니다.
+다른 사용자 이름을 지정하세요.',
+       'config-admin-password-blank' => '관리자 계정의 비밀번호를 입력하세요.',
+       'config-admin-password-same' => '비밀번호는 사용자 이름과 같아서는 안 됩니다.',
+       'config-admin-password-mismatch' => '입력한 비밀번호 두 개가 일치하지 않습니다.',
        'config-admin-email' => '이메일 주소:',
+       'config-admin-email-help' => '위키의 다른 사용자로부터 이메일을 전달받거나 비밀번호를 재설정하고 주시문서 목록에 대한 변경 알림을 받기 위해 여기에 이메일 주소를 입력하세요. 이 필드를 비워 둘 수 있습니다.',
+       'config-admin-error-user' => '"<nowiki>$1</nowiki>" 이름의 관리자를 만드는 중 내부 오류가 발생했습니다.',
+       'config-admin-error-password' => '"<nowiki>$1</nowiki>" 관리자의 비밀번호를 설정하는 중 내부 오류가 발생했습니다: <pre>$2</pre>',
+       'config-admin-error-bademail' => '이메일 주소를 잘못 입력하였습니다.',
+       'config-almost-done' => '거의 다 됐습니다! 이제 남은 설정을 생략하고 지금 위키를 설치할 수 있습니다.',
        'config-optional-skip' => '지겨워요, 그냥 위키를 설치할래요.',
        'config-profile-wiki' => '평범한 위키',
        'config-profile-no-anon' => '계정 생성 필요',
@@ -10048,21 +10160,82 @@ $messages['ko'] = array(
        'config-license-pd' => '퍼블릭 도메인',
        'config-license-cc-choose' => '다른 크리에이티브 커먼즈 라이선스 선택',
        'config-email-settings' => '이메일 설정',
+       'config-enable-email' => '발신 이메일 허용',
+       'config-enable-email-help' => '이메일을 작동하려면 [http://www.php.net/manual/en/mail.configuration.php PHP의 메일 설정]을 올바르게 구성해야 합니다.
+이메일 기능을 사용하지 않으려면 이를 비활성화할 수 있습니다.',
+       'config-email-user' => '사용자와 사용자 간 이메일 허용',
+       'config-email-user-help' => '환경 설정에서 활성화한 경우 모든 사용자가 이메일을 서로 보내도록 허용합니다.',
+       'config-email-usertalk' => '사용자 토론 문서 알림 허용',
+       'config-email-usertalk-help' => '환경 설정에서 활성화한 경우 사용자는 사용자 토론 문서의 변경 알림을 받도록 허용합니다.',
+       'config-email-watchlist' => '주시문서 목록 알림 허용',
+       'config-email-watchlist-help' => '환경 설정에서 활성화한 경우 사용자가 주시한 문서에 대한 알림을 받도록 허용합니다.',
+       'config-email-auth' => '이메일 인증 허용',
+       'config-email-auth-help' => "이 설정이 활성화되어 있으면 사용자는 이메일 주소를 설정하거나 변경할 때마다 그들에게 보낸 링크를 사용하여 확인해야 합니다.
+인증된 이메일 주소만 다른 사용자로부터의 이메일이나 변경 알림 이메일을 받을 수 있습니다.
+이메일 기능의 남용 가능성이 있기 때문에 이 옵션을 설정하는 것은 공용 위키에서 '''권장'''합니다.",
+       'config-email-sender' => '반송 이메일 주소',
+       'config-email-sender-help' => '발신한 이메일에 대한 반송 주소로 사용할 이메일 주소를 입력합니다.
+이는 반송할 때 보내는 주소입니다.
+대부분의 메일 서버는 적어도 도메인 이름 부분은 유효합니다.',
        'config-logo' => '로고 URL:',
        'config-logo-help' => '미디어위키 기본 스킨은 사이드바 메뉴 위에 135×160픽셀의 로고를 포함하고 있습니다.
 적당한 크기로 이미지를 올리고 URL을 여기 적어주세요.
 
 로고 사용을 원치 않으면 이 상자를 비워 두십시오.',
+       'config-cc-error' => '크리에이티브 커먼즈 라이선스 선택기에 결과가 없습니다.
+수동으로 라이선스 이름을 입력하세요.',
+       'config-cc-again' => '다시 선택...',
+       'config-cc-not-chosen' => '원하는 크리에이티브 커먼즈 라이선스를 선택하고 "진행"을 클릭하세요.',
+       'config-advanced-settings' => '고급 설정',
+       'config-cache-options' => '개체 캐싱을 위한 설정:',
+       'config-cache-help' => '개체 캐싱은 자주 사용하는 데이터를 캐싱하여 MediaWiki의 속도를 개선하는 데 사용합니다.
+큰 사이트의 규모에는 이를 많이 사용하도록 권장하고 있으며, 소규모 사이트들도 물론 이익을 볼 수 있습니다.',
+       'config-cache-none' => '캐시하지 않음 (기능적으로는 삭제되지 않지만 큰 위키 사이트에 속도에 영향을 받을 수 있습니다)',
+       'config-cache-accel' => 'PHP 개체 캐싱 (APC, XCache 또는 WinCache)',
+       'config-cache-memcached' => 'Memcached 사용 (추가적인 설정 및 구성이 필요합니다)',
        'config-extensions' => '확장 기능',
        'config-extensions-help' => '위에 나열된 확장 기능이 <code>./extensions</code>에서 발견되었습니다.
 
 이들은 추가적인 설정이 필요할 수 있습니다만 지금 활성화시킬 수 있습니다.',
+       'config-install-alreadydone' => "'''경고:''' 당신은 이미 MediaWiki를 설치하였고 다시 설치하려고 합니다.
+다음 페이지에서 진행하세요.",
+       'config-install-begin' => '"{{int:config-continue}}"을 누르면 MediaWiki의 설치를 시작합니다.
+그래도 변경하는 것을 원한다면 뒤로를 누릅니다.',
+       'config-install-extensions' => '확장 기능을 포함하는 중',
+       'config-install-database' => '데이터베이스 설정 중',
+       'config-install-pg-commit' => '커밋 바꾸기',
+       'config-install-pg-plpgsql' => 'PL/pgSQL 언어에 대해 확인 중',
        'config-install-user' => '데이터베이스 사용자 생성 중',
        'config-install-tables' => '테이블을 생성하는 중',
        'config-install-tables-exist' => "'''경고''': 미디어위키 테이블이 이미 있는 것 같습니다.
 테이블 생성을 생략합니다.",
        'config-install-tables-failed' => "'''오류''': 다음 오류와 함께 테이블 생성에 실패했습니다: $1",
        'config-install-interwiki' => '기본 인터위키 표를 채우는 중',
+       'config-install-interwiki-list' => '<code>interwiki.list</code> 파일을 읽을 수 없습니다.',
+       'config-install-interwiki-exists' => "'''경고''': 인터위키 표가 이미 항목을 갖고 있는 것 같습니다.
+기본 목록으로 넘어갑니다.",
+       'config-install-keys' => '보안 키를 만드는 중',
+       'config-insecure-keys' => "'''경고:''' 설치 중에 생성한 {{PLURAL:$2|보안 키}} ($1)를 설치하는 동안 완전히 안전하지 {{PLURAL:$2|않습니다}}. 직접 변경을 고려하세요.",
+       'config-install-mainpage' => '기본 콘텐트로 대문을 만드는 중',
+       'config-install-extension-tables' => '활성화된 확장 기능을 위한 표를 만드는 중',
+       'config-install-mainpage-failed' => '대문을 삽입할 수 없습니다: $1',
+       'config-install-done' => "'''축하합니다!'''
+성공적으로 MediaWIki를 설치했습니다.
+
+설치 마법사가 <code>LocalSettings.php</code> 파일을 만들었습니다.
+이는 모든 구성이 포함되어 있습니다.
+
+이를 다운로드하여 위키 설치의 거점에 넣어야 합니다 (index.php와 같은 디렉토리). 다운로드가 자동으로 시작됩니다.
+
+다운로드가 제공되지 않을 경우나 그것을 취소한 경우에는 아래의 링크를 클릭하여 다운로드를 다시 시작할 수 있습니다:
+
+$3
+
+'''참고''': 지금 이렇게 하지 않으면 이 구성 파일을 다운로드하지 않고 설치를 종료할 경우 만들어진 구성 파일은 나중에 사용할 수 없습니다.
+
+완료되었으면 '''[$2 당신은 위키에 들어갈 수 있습니다]'''.",
+       'config-download-localsettings' => 'LocalSettings.php 다운로드',
+       'config-help' => '도움말',
        'config-nofile' => '파일 "$1"을 찾을 수 없습니다. 이미 삭제되었나요?',
        'mainpagetext' => "'''미디어위키가 성공적으로 설치되었습니다.'''",
        'mainpagedocfooter' => '[//meta.wikimedia.org/wiki/Help:Contents 이곳]에서 위키 프로그램에 대한 정보를 얻을 수 있습니다.
@@ -10090,6 +10263,7 @@ $messages['krc'] = array(
 /** Colognian (Ripoarisch)
  * @author Mormegil
  * @author Purodha
+ * @author Reedy
  */
 $messages['ksh'] = array(
        'config-desc' => 'Et Projramm för Mediwiki opzesäze.',
@@ -10246,7 +10420,7 @@ Heh jeihd et nit wigger.',
        'config-using531' => 'MediaWiki läuf nit met PHP $1 zosamme wääje enem [//bugs.php.net/bug.php?id=50394 Fähler em Zosammehang met Parrameetere för <code lang="en">__call()</code>].
 Jangk op de Version 5.3.2 vum <i lang="en">PHP</i> ov dohnoh, udder op de Version 5.3.0 udder dovöör, öm dat Problem ze ömjonn.
 Heh jeiht et nit wigger.',
-       'config-suhosin-max-value-length' => '<i lang="en">Suhosin</i> es enschtalleet. Dröm kann ene <code lang="en">GET</code>-Parrameeter nit övver {{PLURAL:$1|ei Byte|$q Bytes|noll Byte}} lang wääde. En MediaWiki singe <i lang="en"ResouceLoader</i> kütt doh zwa drömeröm, ävver dat brems. Wann müjelesch, doht <code lang="en">suhosin.get.max_value_length</code> en dä Dattei <code lang="en">php.ini</code> op 1024 Bytes udder drövver enschtälle. un dann moß <code lang="en">$wgResourceLoaderMaxQueryLength</code> en dä Dattei <code lang="en">LocalSettings.php</code> op däsälve Wäät jesaz wääde.',
+       'config-suhosin-max-value-length' => '<i lang="en">Suhosin</i> es enschtalleet. Dröm kann ene <code lang="en">GET</code>-Parrameeter nit övver {{PLURAL:$1|ei Byte|$q Bytes|noll Byte}} lang wääde. En MediaWiki singe <i lang="en">ResourceLoader</i> kütt doh zwa drömeröm, ävver dat brems. Wann müjelesch, doht <code lang="en">suhosin.get.max_value_length</code> en dä Dattei <code lang="en">php.ini</code> op 1024 Bytes udder drövver enschtälle. un dann moß <code lang="en">$wgResourceLoaderMaxQueryLength</code> en dä Dattei <code lang="en">LocalSettings.php</code> op däsälve Wäät jesaz wääde.',
        'config-db-type' => 'De Zoot Daatebangk:',
        'config-db-host' => 'Dä Name vun däm Rääschner met dä Daatebangk:',
        'config-db-host-help' => 'Wann Dinge ẞööver för de Daatebangk ob enem andere Rääschner es, donn heh dämm singe Name udder dämm sing <i lang="en">IP</i>-Addräß enjävve.
@@ -10926,7 +11100,7 @@ $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].
@@ -10938,7 +11112,7 @@ $messages['lt'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki pranešimai paštu apie naujas versijas]',
 );
 
-/** Latvian (Latviešu)
+/** Latvian (latviešu)
  * @author GreenZeb
  */
 $messages['lv'] = array(
@@ -11092,7 +11266,7 @@ $messages['min'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]',
 );
 
-/** Macedonian (Ð\9cакедонски)
+/** Macedonian (македонски)
  * @author Bjankuloski06
  */
 $messages['mk'] = array(
@@ -11492,7 +11666,7 @@ chmod a+w $3</pre>',
        'config-license-cc-by-sa' => 'Creative Commons НаведиИзвор СподелиПодИстиУслови',
        'config-license-cc-by' => 'Криејтив комонс НаведиИзвор',
        'config-license-cc-by-nc-sa' => 'Creative Commons НаведиИзвор-Некомерцијално-СподелиПодИстиУслови',
-       'config-license-cc-0' => 'Ð\9aÑ\80иеÑ\98Ñ\82ив ÐºÐ¾Ð¼Ð¾Ð½Ñ\81 Ð\9dÑ\83ла (Ñ\98авен Ð´Ð¾Ð¼ÐµÐ½)',
+       'config-license-cc-0' => 'Ð\9aÑ\80иеÑ\98Ñ\82ив ÐºÐ¾Ð¼Ð¾Ð½Ñ\81 Ð\9dÑ\83ла (Ñ\98авна Ñ\81опÑ\81Ñ\82веноÑ\81Ñ\82)',
        'config-license-gfdl' => 'ГНУ-ова лиценца за слободна документација 1.3 или понова',
        'config-license-pd' => 'Јавна сопственост',
        'config-license-cc-choose' => 'Одберете друга Creative Commons лиценца по ваш избор',
@@ -11599,7 +11773,7 @@ chmod a+w $3</pre>',
        'config-install-tables-exist' => "'''Предупредување''': Изгледа дека табелите за МедијаВики веќе постојат.
 Го прескокнувам создавањето.",
        'config-install-tables-failed' => "'''Грешка''': Создавањето на табелата не успеа поради следнава грешка: $1",
-       'config-install-interwiki' => 'Ги пополнувам основно-зададените интервики-табели',
+       'config-install-interwiki' => 'Ги пополнувам основно зададените меѓувики-табели',
        'config-install-interwiki-list' => 'Не можев да ја пронајдам податотеката <code>interwiki.list</code>.',
        'config-install-interwiki-exists' => "'''Предупредување''': Табелата со интервикија веќе содржи ставки.
 Го прескокнувам основно-зададениот список.",
@@ -11795,7 +11969,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce മീഡിയവിക്കി പ്രകാശന മെയിലിങ് ലിസ്റ്റ്]',
 );
 
-/** Mongolian (Ð\9cонгол)
+/** Mongolian (монгол)
  * @author Chinneeb
  */
 $messages['mn'] = array(
@@ -11952,9 +12126,8 @@ $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 Jon Harald Søby
  * @author Nghtwlkr
  */
 $messages['nb'] = array(
@@ -12049,6 +12222,7 @@ Følgende databasetyper er støttet: $1
 Om du er på delt vertsskap, spør din vertsleverandør om å installere en passende databasedriver.
 Om du kompilerte PHP selv, rekonfigirer den med en aktivert databaseklient, for eksempel ved å bruke <code>./configure --with-mysql</code>.
 Om du installerte PHP fra en Debian- eller Ubuntu-pakke må du også installere modulen php5-mysql.',
+       'config-outdated-sqlite' => "'''Advarsel''': Du har SQLite $1, som er en eldre versjon enn minimumskravet SQLite $2. SQLite vil ikke være tilgjengelig.",
        'config-no-fts3' => "'''Advarsel''': SQLite er kompilert uten [//sqlite.org/fts3.html FTS3-modulen], søkefunksjoner vil ikke være tilgjengelig på dette bakstykket.",
        'config-register-globals' => "'''Advarsel: PHPs <code>[http://php.net/register_globals register_globals]</code>-alternativ er aktivert.'''
 '''Deaktiver det om du kan.'''
@@ -12078,6 +12252,7 @@ MediaWiki krever UTF-8-støtte for å fungere riktig.",
        'config-memory-bad' => "'''Advarsel:''' PHPs <code>memory_limit</code> er $1.
 Dette er sannsynligvis for lavt.
 Installasjonen kan mislykkes!",
+       'config-ctype' => "'''Fatal feil''': PHP må kompileres med støtte for [http://www.php.net/manual/en/ctype.installation.php Ctype-utvidelsen].",
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] er innstallert',
        'config-apc' => '[http://www.php.net/apc APC] er innstallert',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] er installert',
@@ -12109,11 +12284,13 @@ Installasjonen avbrutt.',
        'config-suhosin-max-value-length' => 'Suhosin er installert og begrenser GET-parameterlengder til $1 bytes. MediaWiki\'s ResourceLoader-komponent klarer å komme rundt denne begrensningen, med med redusert ytelse. På mulig bør du sette suhosin.get.max_value_length til minst 1024 i php.ini, og sette $wgResourceLoaderMaxQueryLength til samme verdi i LocalSettings.php.',
        'config-db-type' => 'Databasetype:',
        'config-db-host' => 'Databasevert:',
-       'config-db-host-help' => 'Hvis databasetjeneren er på en annen tjener, skriv inn vertsnavnet eller IP-adressen her.
+       'config-db-host-help' => 'Hvis databasen kjører på en annen tjenermaskin, skriv inn vertsnavnet eller IP-adressen her.
+
+Hvis du bruker et webhotell, vil du kunne be om aktuelt vertsnavn fra din leverandør.
 
-Hvis du bruker en delt nettvert bør verten din oppgi det korrekte vertsnavnet i deres dokumentasjon.
+Hvis du installerer på en Windowstjener og bruker MySQL, kan det hende at «localhost» ikke brukes som tjenernavn. Hvis så er tilfelle, prøv «127.0.0.1» som lokal IP-adresse.
 
-Hvis du installerer på en Windowstjener og bruker MySQL kan det hende at «localhost» ikke virker som tjenernavnet. Hvis ikke, prøv «127.0.0.1» for den lokale IP-adressen.',
+Hvis du bruker PostgreSQL, la dette feltet være blankt slik at koplingen gjøres via en "Unix socket".',
        'config-db-host-oracle' => 'Database TNS:',
        'config-db-host-oracle-help' => 'Skriv inn et gyldig [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name]; en tnsnames.ora-fil må være synlig for installasjonsprosessen.<br />Hvis du bruker klientbibliotek 10g eller nyere kan du også bruke navngivingsmetoden [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
        'config-db-wiki-settings' => 'Identifiser denne wikien',
@@ -12123,6 +12300,11 @@ Det bør ikke inneholde mellomrom.
 
 Hvis du bruker en delt nettvert vil verten din enten gi deg et spesifikt databasenavn å bruke, eller la deg opprette databaser via kontrollpanelet.',
        'config-db-name-oracle' => 'Databaseskjema:',
+       'config-db-account-oracle-warn' => 'Det finnes tre mulig fremgangsmåter for å installere Oracle som database:
+
+Hvis du ønsker å opprette en databasekonto som del av installasjonsprosessen, oppgi da en konto med SYSDBA-rolle som databasekonto for installasjonen og angi påkrevd autentiseringsinformasjon for web-aksesskontoen. Ellers kan du enten opprette web-aksesskontoen manuelt eller kun oppgi den kontoen (hvis den har påkrevede tillatelser for å opprette skjemeobjektene) , alternativt oppgi to ulike kontoer, en med opprettelsesprivilegier (create) og en begrenset konto for web-aksess.
+
+Skript for å opprette en konto med påkrevde privilegier finnes i "maintenance/oracle/"-folderen av denne installasjonen. Husk at det å bruke en begrenset konto vil blokkere all vedlikeholdsfunksjonalitet med standard konto.',
        'config-db-install-account' => 'Brukerkonto for installasjon',
        'config-db-username' => 'Databasebrukernavn:',
        'config-db-password' => 'Databasepassord:',
@@ -12157,6 +12339,7 @@ men det vil ikke la deg lagre tegn over «[//en.wikipedia.org/wiki/Mapping_of_Un
        'config-db-schema' => 'Skjema for MediaWiki',
        'config-db-schema-help' => 'Dette skjemaet er som regel riktig.
 Bare endre det hvis du vet at du trenger det.',
+       'config-pg-test-error' => "Får ikke kontakt med database '''$1''': $2",
        'config-sqlite-dir' => 'SQLite datamappe:',
        'config-sqlite-dir-help' => "SQLite lagrer alle data i en enkelt fil.
 
@@ -12333,7 +12516,9 @@ En '''{{int:config-profile-private}}''' tillater kun godkjente brukere å se sid
 
 Mer komplekse konfigurasjoner av brukerrettigheter er tilgjengelig etter installasjon, se det [//www.mediawiki.org/wiki/Manual:User_rights relevante manualavsnittet].",
        'config-license' => 'Opphavsrett og lisens:',
+       'config-license-none' => 'Ingen lisensbunntekst',
        '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-pd' => 'Offentlig rom',
@@ -12390,7 +12575,9 @@ For mer informasjon om denne funksjonen, inklusive instruksjoner om hvordan man
        'config-install-user-grant-failed' => 'Å gi tillatelse til brukeren «$1» mislyktes: $2',
        'config-install-tables' => 'Oppretter tabeller',
        'config-install-mainpage-failed' => 'Kunne ikke sette inn hovedside: $1',
+       'config-download-localsettings' => 'Last ned LocalSettings.php',
        'config-help' => 'hjelp',
+       'config-nofile' => 'Filen "$1" ble ikke funnet. Kan den være blitt slettet?',
        'mainpagetext' => "'''MediaWiki-programvaren er nå installert.'''",
        'mainpagedocfooter' => 'Se [//meta.wikimedia.org/wiki/Help:Contents brukerveiledningen] for informasjon om hvordan du bruker wiki-programvaren.
 
@@ -12995,7 +13182,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
  */
@@ -13011,7 +13198,6 @@ Dette er sannsynlegvis for lågt.
 Installasjonen kan mislukkast!",
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] er innstallert',
        'config-apc' => '[http://www.php.net/apc APC] er innstallert',
-       'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] er innstallert',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] er installert',
        'config-db-name' => 'Databasenamn:',
        'config-db-username' => 'Databasebrukarnamn:',
@@ -13046,7 +13232,12 @@ Berre bruk ASCII-bokstavar (a-z, A-Z), tal (0-9) og undestrekar (_).',
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postliste med informasjon om nye MediaWiki-versjonar]',
 );
 
-/** Occitan (Occitan) */
+/** Norwegian (bokmål)‬ (‪norsk (bokmål)‬) */
+$messages['no'] = array(
+       'mainpagetext' => "'''MediaWiki-programvaren er nå installert.'''",
+);
+
+/** 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.
@@ -13117,7 +13308,8 @@ $messages['pdc'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Eposchde-Lischt fer neie MediaWiki-Versione]",
 );
 
-/** Polish (Polski)
+/** Polish (polski)
+ * @author Beau
  * @author BeginaFelicysym
  * @author Holek
  * @author Saper
@@ -13292,7 +13484,7 @@ Nie może ona zawierać spacji.
 
 Jeśli korzystasz ze współdzielonego hostingu, dostawca usługi hostingowej może wymagać użycia konkretnej nazwy bazy danych lub pozwalać na tworzenie baz danych za pośrednictwem panelu użytkownika.',
        'config-db-name-oracle' => 'Nazwa schematu bazy danych:',
-       'config-db-account-oracle-warn' => 'Bazę danych Oracle można przygotować do pracy z MediaWIki na trzy sposoby:
+       'config-db-account-oracle-warn' => 'Bazę danych Oracle można przygotować do pracy z MediaWiki na trzy sposoby:
 
 Możesz utworzyć konto użytkownika bazy danych podczas instalacji MediaWiki. Wówczas należy podać nazwę i hasło użytkownika z rolą SYSDBA w celu użycia go przez instalator do utworzenia nowe konta użytkownika, z którego korzystać będzie MediaWiki.
 
@@ -14158,7 +14350,7 @@ $messages['ps'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce د مېډياويکي د برېښليکونو لړليک]',
 );
 
-/** Portuguese (Português)
+/** Portuguese (português)
  * @author Crazymadlover
  * @author Hamilton Abreu
  * @author Mormegil
@@ -14704,7 +14896,7 @@ Depois de terminar o passo anterior, pode '''[$2 entrar na wiki]'''.",
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]',
 );
 
-/** Brazilian Portuguese (Português do Brasil)
+/** Brazilian Portuguese (português do Brasil)
  * @author Giro720
  * @author Gustavo
  * @author Marcionunes
@@ -14815,7 +15007,7 @@ $messages['rgn'] = array(
        'mainpagetext' => "'''L'instalaziòn d'MediaWiki l'è andêda ben'''",
 );
 
-/** Romansh (Rumantsch)
+/** Romansh (rumantsch)
  * @author Gion-andri
  */
 $messages['rm'] = array(
@@ -14828,7 +15020,7 @@ $messages['rm'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Glista da mail da MediaWiki cun annunzias da novas versiuns]",
 );
 
-/** Romanian (Română)
+/** Romanian (română)
  * @author Minisarm
  * @author Stelistcristi
  */
@@ -14868,7 +15060,7 @@ $messages['ro'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discuții a MediaWiki (en)]',
 );
 
-/** Tarandíne (Tarandíne)
+/** tarandíne (tarandíne)
  * @author Joetaras
  */
 $messages['roa-tara'] = array(
@@ -14882,7 +15074,7 @@ $messages['roa-tara'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste d'a poste de MediaWiki]",
 );
 
-/** Russian (Русский)
+/** Russian (русский)
  * @author Adata80
  * @author DCamer
  * @author Eleferen
@@ -15449,14 +15641,14 @@ $messages['rue'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Розосыланя повідомлїнь про новы верзії MediaWiki]',
 );
 
-/** Sanskrit (संस्कृत)
+/** Sanskrit (संस्कृतम्)
  * @author Hemant wikikosh1
  */
 $messages['sa'] = array(
        'mainpagetext' => 'मीडियाविकि तु सफलतया अन्तःस्थापितमस्ति',
 );
 
-/** Sakha (Саха тыла) */
+/** Sakha (саха тыла) */
 $messages['sah'] = array(
        'mainpagetext' => "'''«MediaWiki» сөпкө туруорулунна.'''",
        'mainpagedocfooter' => 'Биики программатын туһунан [//meta.wikimedia.org/wiki/Help:Contents справочникка] көрүөххүн сөп.
@@ -15468,14 +15660,14 @@ $messages['sah'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki релизтарын почтовай испииһэгэ]',
 );
 
-/** Sardinian (Sardu)
+/** Sardinian (sardu)
  * @author Andria
  */
 $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.
@@ -15516,7 +15708,7 @@ $messages['sei'] = array(
        'mainpagetext' => "'''MediaWiki coccebj installöx successua zo mii.'''",
 );
 
-/** Serbo-Croatian (Srpskohrvatski)
+/** Serbo-Croatian (srpskohrvatski / српскохрватски)
  * @author OC Ripper
  */
 $messages['sh'] = array(
@@ -15542,18 +15734,20 @@ $messages['shi'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Umuɣ n imsgdaln f imbḍitn n MidyaWiki]',
 );
 
-/** Sinhala (සිංහල) */
+/** Sinhala (සිංහල)
+ * @author Singhalawap
+ */
 $messages['si'] = array(
-       'mainpagetext' => "'''මà·\8fධà·\8aâ\80\8dයවිකි සාර්ථක ලෙස ස්ථාපනය කරන ලදි.'''",
+       'mainpagetext' => "'''මà·\93ඩà·\92යà·\8fවිකි සාර්ථක ලෙස ස්ථාපනය කරන ලදි.'''",
        'mainpagedocfooter' => 'විකි මෘදුකාංග භාවිතා කිරීම පිළිබඳ තොරතුරු සඳහා  [//meta.wikimedia.org/wiki/Help:Contents පරිශීලකයන් සඳහා නියමුව] හදාරන්න.
 
 == ඇරඹුම ==
-* [//www.mediawiki.org/wiki/Manual:Configuration_settings à·\80à·\92නà·\8aâ\80\8dයà·\8fà·\83 à¶´à¶»à·\92à·\83à·\8aථà·\92තà·\93නà·\8a à¶½à·\90යà·\92à·\83à·\8aතà·\94à·\80]
-* [//www.mediawiki.org/wiki/Manual:FAQ à¶¸à·\8fධà·\8aâ\80\8dයà·\80à·\92à¶\9aà·\92 à¶±à·\92තර-à¶\85සන-පැන]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce à¶¸à·\8fධà·\8aâ\80\8dයවිකි නිකුතුව තැපැල් ලැයිස්තුව]',
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings à·\80à·\92නà·\8aâ\80\8dයà·\8fà·\83 à·\83à·\90à¶\9aà·\83à·\94මà·\8a]
+* [//www.mediawiki.org/wiki/Manual:FAQ à¶¸à·\93ඩà·\92යà·\8fà·\80à·\92à¶\9aà·\92 à¶±à·\92තà·\92-à·\80à·\92මසන-පැන]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce à¶¸à·\93ඩà·\92යà·\8fවිකි නිකුතුව තැපැල් ලැයිස්තුව]',
 );
 
-/** Slovak (Slovenčina) */
+/** Slovak (slovenčina) */
 $messages['sk'] = array(
        '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].
@@ -15565,7 +15759,7 @@ $messages['sk'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list nových verzií MediaWiki]',
 );
 
-/** Slovenian (Slovenščina)
+/** Slovenian (slovenščina)
  * @author Dbc334
  */
 $messages['sl'] = array(
@@ -15806,7 +16000,7 @@ $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].
@@ -15817,7 +16011,7 @@ $messages['sq'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWiki-t]',
 );
 
-/** Serbian (Cyrillic script) (‪Српски (ћирилица)‬)
+/** Serbian (Cyrillic script) (‪српски (ћирилица)‬)
  * @author Rancher
  */
 $messages['sr-ec'] = array(
@@ -15836,7 +16030,7 @@ $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-continue' => 'Nastavi →',
        'config-page-language' => 'Jezik',
@@ -15884,7 +16078,7 @@ $messages['su'] = array(
        '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.",
 );
 
-/** Swedish (Svenska)
+/** Swedish (svenska)
  * @author Skalman
  * @author WikiPhoenix
  */
@@ -16105,7 +16299,7 @@ $messages['te'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce మీడియావికీ సాఫ్టువేరు కొత్త వెర్షను విడుదలల గురించి తెలిపే మెయిలింగు లిస్టు]',
 );
 
-/** Tetum (Tetun)
+/** Tetum (tetun)
  * @author MF-Warburg
  */
 $messages['tet'] = array(
@@ -16113,7 +16307,7 @@ $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 Роҳнамои Корбарон] барои истифодаи нармафзори вики кӯмак бигиред.
@@ -16469,7 +16663,7 @@ $messages['tr'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-posta listesi]',
 );
 
-/** Tatar (Cyrillic script) (Татарча)
+/** Tatar (Cyrillic script) (татарча)
  * @author KhayR
  */
 $messages['tt-cyrl'] = array(
@@ -16482,7 +16676,7 @@ $messages['tt-cyrl'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'ның яңа версияләре турында хәбәрләр яздырып алу].",
 );
 
-/** Tatar (Latin script) (Tatarça)
+/** Tatar (Latin script) (tatarça)
  * @author Don Alessandro
  */
 $messages['tt-latn'] = array(
@@ -16515,7 +16709,7 @@ $messages['ug-arab'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki تارقاتقان ئېلخەت تىزىملىكى]',
 );
 
-/** Ukrainian (Українська)
+/** Ukrainian (українська)
  * @author Ahonc
  * @author Alex Khimich
  * @author Diemon.ukr
@@ -16623,7 +16817,7 @@ $messages['ur'] = array(
        'mainpagetext' => "'''میڈیاوکی کو کامیابی سے چالو کردیا گیا ہے۔.'''",
 );
 
-/** Uzbek (O'zbek) */
+/** Uzbek (Oʻzbek) */
 $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.
@@ -16635,7 +16829,7 @@ $messages['uz'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki yangi versiyasi chiqqanda xabar berish ro'yxati]",
 );
 
-/** Vèneto (Vèneto)
+/** vèneto (vèneto)
  * @author Vajotwo
  */
 $messages['vec'] = array(
@@ -16651,7 +16845,7 @@ I seguenti cołegamenti i xé en łengua inglese:
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list anunsi MediaWiki]",
 );
 
-/** Veps (Vepsan kel')
+/** Veps (Vepsän kel’)
  * @author Игорь Бродский
  */
 $messages['vep'] = array(
@@ -16698,7 +16892,7 @@ $messages['vro'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postilist, minka andas teedäq MediaWiki vahtsist kujõst].',
 );
 
-/** Walloon (Walon) */
+/** Walloon (walon) */
 $messages['wa'] = array(
        'mainpagetext' => "'''Li programe Wiki a stî astalé a l' idêye.'''",
 );
@@ -16807,7 +17001,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 PhiLiP
@@ -17248,7 +17442,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]',
 );
 
-/** Traditional Chinese (‪中文(繁體)‬)
+/** Traditional Chinese (‪中文(繁體)‬)
  * @author Hzy980512
  * @author Mark85296341
  */
@@ -17676,7 +17870,7 @@ $3
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
 );
 
-/** Chinese (Hong Kong) (‪中文(香港)‬)
+/** Chinese (Hong Kong) (‪中文(香港)‬)
  * @author Mark85296341
  */
 $messages['zh-hk'] = array(
@@ -17688,7 +17882,7 @@ $messages['zh-hk'] = array(
 * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
 );
 
-/** Chinese (Taiwan) (‪中文(台灣)‬) */
+/** Chinese (Taiwan) (‪中文(台灣)‬) */
 $messages['zh-tw'] = array(
        'mainpagedocfooter' => '請參閱 [//meta.wikimedia.org/wiki/Help:Contents 使用者手冊] 以獲得使用此 wiki 軟體的訊息!
 
index 9ed486c..bbc6b64 100644 (file)
  */
 class LocalSettingsGenerator {
 
-       private $extensions = array();
-       private $values = array();
-       private $groupPermissions = array();
-       private $dbSettings = '';
-       private $safeMode = false;
+       protected $extensions = array();
+       protected $values = array();
+       protected $groupPermissions = array();
+       protected $dbSettings = '';
+       protected $safeMode = false;
 
        /**
         * @var Installer
         */
-       private $installer;
+       protected $installer;
 
        /**
         * Constructor.
@@ -166,7 +166,7 @@ class LocalSettingsGenerator {
        /**
         * @return String
         */
-       private function buildMemcachedServerList() {
+       protected function buildMemcachedServerList() {
                $servers = $this->values['_MemCachedServers'];
 
                if( !$servers ) {
@@ -187,7 +187,7 @@ class LocalSettingsGenerator {
        /**
         * @return String
         */
-       private function getDefaultText() {
+       protected function getDefaultText() {
                if( !$this->values['wgImageMagickConvertCommand'] ) {
                        $this->values['wgImageMagickConvertCommand'] = '/usr/bin/convert';
                        $magic = '#';
index 5bbe642..4f31195 100644 (file)
@@ -161,7 +161,7 @@ class WebInstaller extends Installer {
                                'Content-Disposition: attachment; filename="LocalSettings.php"'
                        );
 
-                       $ls = new LocalSettingsGenerator( $this );
+                       $ls = InstallerOverrides::getLocalSettingsGenerator( $this );
                        $rightsProfile = $this->rightsProfiles[$this->getVar( '_RightsProfile' )];
                        foreach( $rightsProfile as $group => $rightsArr ) {
                                $ls->setGroupRights( $group, $rightsArr );
index 076e23f..eacf9a8 100644 (file)
@@ -58,7 +58,7 @@ class Interwiki {
         * Fetch an Interwiki object
         *
         * @param $prefix String: interwiki prefix to use
-        * @return Interwiki Object, or null if not valid
+        * @return Interwiki|null|bool
         */
        static public function fetch( $prefix ) {
                global $wgContLang;
index f59848d..04df226 100644 (file)
@@ -26,7 +26,7 @@
 class LogEventsList {
        const NO_ACTION_LINK = 1;
        const NO_EXTRA_USER_LINKS = 2;
-       const USE_REVDEL_CHECKBOXES = 3;
+       const USE_REVDEL_CHECKBOXES = 4;
 
        /**
         * @var Skin
@@ -106,16 +106,14 @@ class LogEventsList {
                $month = '', $filter = null, $tagFilter='' ) {
                global $wgScript, $wgMiserMode;
 
-               $action = $wgScript;
                $title = SpecialPage::getTitleFor( 'Log' );
-               $special = $title->getPrefixedDBkey();
 
                // For B/C, we take strings, but make sure they are converted...
                $types = ($types === '') ? array() : (array)$types;
 
                $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
 
-               $html = Html::hidden( 'title', $special );
+               $html = Html::hidden( 'title', $title->getPrefixedDBkey() );
 
                // Basic selectors
                $html .= $this->getTypeMenu( $types ) . "\n";
@@ -148,7 +146,7 @@ class LogEventsList {
                $html = Xml::fieldset( wfMsg( 'log' ), $html );
 
                // Form wrapping
-               $html = Xml::tags( 'form', array( 'action' => $action, 'method' => 'get' ), $html );
+               $html = Xml::tags( 'form', array( 'action' => $wgScript, 'method' => 'get' ), $html );
 
                $this->out->addHTML( $html );
        }
@@ -173,12 +171,11 @@ class LogEventsList {
                        $hideVal = 1 - intval($val);
                        $query[$queryKey] = $hideVal;
 
-                       $link = Linker::link(
+                       $link = Linker::linkKnown(
                                $this->getDisplayTitle(),
                                $messages[$hideVal],
                                array(),
-                               $query,
-                               array( 'known', 'noclasses' )
+                               $query
                        );
 
                        $links[$type] = wfMsgHtml( "log-show-hide-{$type}", $link );
@@ -384,7 +381,7 @@ class LogEventsList {
                if( self::typeAction( $row, 'move', 'move', 'move' ) && !empty( $paramArray[0] ) ) {
                        $destTitle = Title::newFromText( $paramArray[0] );
                        if( $destTitle ) {
-                               $revert = Linker::link(
+                               $revert = Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Movepage' ),
                                        $this->message['revertmove'],
                                        array(),
@@ -393,8 +390,7 @@ class LogEventsList {
                                                'wpNewTitle' => $title->getPrefixedDBkey(),
                                                'wpReason'   => wfMsgForContent( 'revertmove' ),
                                                'wpMovetalk' => 0
-                                       ),
-                                       array( 'known', 'noclasses' )
+                                       )
                                );
                                $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
                        }
@@ -405,30 +401,23 @@ class LogEventsList {
                        } else {
                                $viewdeleted = $this->message['undeletelink'];
                        }
-                       $revert = Linker::link(
+                       $revert = Linker::linkKnown(
                                SpecialPage::getTitleFor( 'Undelete' ),
                                $viewdeleted,
                                array(),
-                               array( 'target' => $title->getPrefixedDBkey() ),
-                               array( 'known', 'noclasses' )
+                               array( 'target' => $title->getPrefixedDBkey() )
                         );
                        $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
                // Show unblock/change block link
                } elseif( self::typeAction( $row, array( 'block', 'suppress' ), array( 'block', 'reblock' ), 'block' ) ) {
-                       $revert = Linker::link(
+                       $revert = Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Unblock', $row->log_title ),
-                                       $this->message['unblocklink'],
-                                       array(),
-                                       array(),
-                                       'known'
+                                       $this->message['unblocklink']
                                ) .
                                $this->message['pipe-separator'] .
-                               Linker::link(
+                               Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Block', $row->log_title ),
-                                       $this->message['change-blocklink'],
-                                       array(),
-                                       array(),
-                                       'known'
+                                       $this->message['change-blocklink']
                                );
                                $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
                // Show change protection link
@@ -452,7 +441,7 @@ class LogEventsList {
                        $revert = ' ' . wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
                // Show unmerge link
                } elseif( self::typeAction( $row, 'merge', 'merge', 'mergehistory' ) ) {
-                       $revert = Linker::link(
+                       $revert = Linker::linkKnown(
                                SpecialPage::getTitleFor( 'MergeHistory' ),
                                $this->message['revertmerge'],
                                array(),
@@ -460,8 +449,7 @@ class LogEventsList {
                                        'target' => $paramArray[0],
                                        'dest' => $title->getPrefixedDBkey(),
                                        'mergepoint' => $paramArray[1]
-                               ),
-                               array( 'known', 'noclasses' )
+                               )
                        );
                        $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
                // If an edit was hidden from a page give a review link to the history
@@ -475,7 +463,7 @@ class LogEventsList {
                                // $paramArray[1] is a CSV of the IDs
                                $query = $paramArray[0];
                                // Link to each hidden object ID, $paramArray[1] is the url param
-                               $revert = Linker::link(
+                               $revert = Linker::linkKnown(
                                        $revdel,
                                        $this->message['revdel-restore'],
                                        array(),
@@ -483,8 +471,7 @@ class LogEventsList {
                                                'target' => $title->getPrefixedText(),
                                                'type' => 'logging',
                                                'ids' => $query
-                                       ),
-                                       array( 'known', 'noclasses' )
+                                       )
                                );
                                $revert = wfMessage( 'parentheses' )->rawParams( $revert )->escaped();
                        }
index 6c4d8b7..5142a41 100644 (file)
@@ -6,6 +6,21 @@
  * since this file will not be executed during request startup for a compiled
  * MediaWiki.
  *
+ * 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 UtfNormal
  */
index f478fa9..691bfaa 100644 (file)
@@ -1,7 +1,22 @@
 #!/usr/bin/php
 <?php
 /**
- * Other tests for the unicode normalization module
+ * Other tests for the unicode normalization module.
+ *
+ * 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 UtfNormal
index 2b26640..e6ba042 100644 (file)
@@ -60,20 +60,6 @@ abstract class BagOStuff {
         */
        abstract public function get( $key );
 
-       /**
-        * Get an associative array containing the item for each of the given keys.
-        * Each item will be false if it does not exist.
-        * @param $keys Array List of strings
-        * @return Array
-        */
-       public function getMulti( array $keys ) {
-               $res = array();
-               foreach ( $keys as $key ) {
-                       $res[$key] = $this->get( $key );
-               }
-               return $res;
-       }
-
        /**
         * Set an item.
         * @param $key string
@@ -135,6 +121,22 @@ abstract class BagOStuff {
 
        /* *** Emulated functions *** */
 
+       /**
+        * Get an associative array containing the item for each of the keys that have items.
+        * @param $keys Array List of strings
+        * @return Array
+        */
+       public function getMulti( array $keys ) {
+               $res = array();
+               foreach ( $keys as $key ) {
+                       $val = $this->get( $key );
+                       if ( $val !== false ) {
+                               $res[$key] = $val;
+                       }
+               }
+               return $res;
+       }
+
        /**
         * @param $key string
         * @param $value mixed
@@ -142,10 +144,10 @@ abstract class BagOStuff {
         * @return bool success
         */
        public function add( $key, $value, $exptime = 0 ) {
-               if ( !$this->get( $key ) ) {
+               if ( $this->get( $key ) === false ) {
                        return $this->set( $key, $value, $exptime );
                }
-               return true;
+               return false; // key already set
        }
 
        /**
@@ -157,7 +159,7 @@ abstract class BagOStuff {
                if ( $this->get( $key ) !== false ) {
                        return $this->set( $key, $value, $exptime );
                }
-               return true;
+               return false; // key not already set
        }
 
        /**
index d03771e..63ad4de 100644 (file)
@@ -28,7 +28,7 @@
  * for systems that don't have it.
  *
  * On construction you can pass array( 'dir' => '/some/path' ); as a parameter
- * to override the default DBA files directory (wgTmpDirectory).
+ * to override the default DBA files directory (wfTempDir()).
  *
  * @ingroup Cache
  */
@@ -39,8 +39,7 @@ class DBABagOStuff extends BagOStuff {
                global $wgDBAhandler;
 
                if ( !isset( $params['dir'] ) ) {
-                       global $wgTmpDirectory;
-                       $params['dir'] = $wgTmpDirectory;
+                       $params['dir'] = wfTempDir();
                }
 
                $this->mFile = $params['dir']."/mw-cache-" . wfWikiID();
index 3c26487..65d736a 100644 (file)
  * @file
  * @ingroup Cache
  */
+
 /**
  * A wrapper class for the PECL memcached client
- * 
+ *
  * @ingroup Cache
  */
 class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
@@ -37,7 +37,7 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
         *   - compress_threshold:  The minimum size an object must be before it is compressed
         *   - timeout:             The read timeout in microseconds
         *   - connect_timeout:     The connect timeout in seconds
-        *   - serializer:          May be either "php" or "igbinary". Igbinary produces more compact 
+        *   - serializer:          May be either "php" or "igbinary". Igbinary produces more compact
         *                          values, but serialization is much slower unless the php.ini option
         *                          igbinary.compact_strings is off.
         */
@@ -45,7 +45,14 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                $params = $this->applyDefaultParams( $params );
 
                if ( $params['persistent'] ) {
-                       $this->client = new Memcached( __CLASS__ );
+                       // The pool ID must be unique to the server/option combination.
+                       // The Memcached object is essentially shared for each pool ID.
+                       // We can only resuse a pool ID if we keep the config consistent.
+                       $this->client = new Memcached( md5( serialize( $params ) ) );
+                       if ( count( $this->client->getServerList() ) ) {
+                               wfDebug( __METHOD__ . ": persistent Memcached object already loaded.\n" );
+                               return; // already initialized; don't add duplicate servers
+                       }
                } else {
                        $this->client = new Memcached;
                }
@@ -54,8 +61,8 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                        $params['serializer'] = 'php';
                }
 
-               // The compression threshold is an undocumented php.ini option for some 
-               // reason. There's probably not much harm in setting it globally, for 
+               // The compression threshold is an undocumented php.ini option for some
+               // reason. There's probably not much harm in setting it globally, for
                // compatibility with the settings for the PHP client.
                ini_set( 'memcached.compression_threshold', $params['compress_threshold'] );
 
@@ -65,10 +72,10 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                $this->client->setOption( Memcached::OPT_RECV_TIMEOUT, $params['timeout'] );
                $this->client->setOption( Memcached::OPT_POLL_TIMEOUT, $params['timeout'] / 1000 );
 
-               // Set libketama mode since it's recommended by the documentation and 
+               // Set libketama mode since it's recommended by the documentation and
                // is as good as any. There's no way to configure libmemcached to use
                // hashes identical to the ones currently in use by the PHP client, and
-               // even implementing one of the libmemcached hashes in pure PHP for 
+               // even implementing one of the libmemcached hashes in pure PHP for
                // forwards compatibility would require MWMemcached::get_sock() to be
                // rewritten.
                $this->client->setOption( Memcached::OPT_LIBKETAMA_COMPATIBLE, true );
@@ -80,7 +87,7 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                                break;
                        case 'igbinary':
                                if ( !Memcached::HAVE_IGBINARY ) {
-                                       throw new MWException( __CLASS__.': the igbinary extension is not available ' . 
+                                       throw new MWException( __CLASS__.': the igbinary extension is not available ' .
                                                'but igbinary serialization was requested.' );
                                }
                                $this->client->setOption( Memcached::OPT_SERIALIZER, Memcached::SERIALIZER_IGBINARY );
@@ -88,10 +95,11 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                        default:
                                throw new MWException( __CLASS__.': invalid value for serializer parameter' );
                }
+               $servers = array();
                foreach ( $params['servers'] as $host ) {
-                       list( $ip, $port ) = IP::splitHostAndPort( $host );
-                       $this->client->addServer( $ip, $port );
+                       $servers[] = IP::splitHostAndPort( $host ); // (ip, port)
                }
+               $this->client->addServers( $servers );
        }
 
        /**
@@ -174,12 +182,12 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
        }
 
        /**
-        * Check the return value from a client method call and take any necessary 
-        * action. Returns the value that the wrapper function should return. At 
+        * Check the return value from a client method call and take any necessary
+        * action. Returns the value that the wrapper function should return. At
         * present, the return value is always the same as the return value from
-        * the client, but some day we might find a case where it should be 
+        * the client, but some day we might find a case where it should be
         * different.
-        * 
+        *
         * @param $key The key used by the caller, or false if there wasn't one.
         * @param $result The return value
         */
@@ -220,8 +228,8 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                return $this->checkResult( false, $result );
        }
 
-       /* NOTE: there is no cas() method here because it is currently not supported 
-        * by the BagOStuff interface and other BagOStuff subclasses, such as 
+       /* NOTE: there is no cas() method here because it is currently not supported
+        * by the BagOStuff interface and other BagOStuff subclasses, such as
         * SqlBagOStuff.
         */
 }
index e504887..209975b 100644 (file)
@@ -87,25 +87,34 @@ class SqlBagOStuff extends BagOStuff {
         * @return DatabaseBase
         */
        protected function getDB() {
+               global $wgDebugDBTransactions;
                if ( !isset( $this->db ) ) {
                        # If server connection info was given, use that
                        if ( $this->serverInfo ) {
+                               if ( $wgDebugDBTransactions ) {
+                                       wfDebug( sprintf( "Using provided serverInfo for SqlBagOStuff\n" ) );
+                               }
                                $this->lb = new LoadBalancer( array(
                                        'servers' => array( $this->serverInfo ) ) );
                                $this->db = $this->lb->getConnection( DB_MASTER );
                                $this->db->clearFlag( DBO_TRX );
                        } else {
-                               # We must keep a separate connection to MySQL in order to avoid deadlocks
-                               # However, SQLite has an opposite behaviour.
-                               # @todo Investigate behaviour for other databases
-                               if ( wfGetDB( DB_MASTER )->getType() == 'sqlite' ) {
-                                       $this->db = wfGetDB( DB_MASTER );
-                               } else {
+                               /*
+                                * We must keep a separate connection to MySQL in order to avoid deadlocks
+                                * However, SQLite has an opposite behaviour. And PostgreSQL needs to know
+                                * if we are in transaction or no
+                                */
+                               if ( wfGetDB( DB_MASTER )->getType() == 'mysql' ) {
                                        $this->lb = wfGetLBFactory()->newMainLB();
                                        $this->db = $this->lb->getConnection( DB_MASTER );
                                        $this->db->clearFlag( DBO_TRX );
+                               } else {
+                                       $this->db = wfGetDB( DB_MASTER );
                                }
                        }
+                       if ( $wgDebugDBTransactions ) {
+                               wfDebug( sprintf( "Connection %s will be used for SqlBagOStuff\n", $this->db ) );
+                       }
                }
 
                return $this->db;
index fa734b4..4beb8fd 100644 (file)
@@ -2859,7 +2859,8 @@ class Parser {
                                $value = $pageLang->formatNum( SiteStats::edits() );
                                break;
                        case 'numberofviews':
-                               $value = $pageLang->formatNum( SiteStats::views() );
+                               global $wgDisableCounters;
+                               $value = !$wgDisableCounters ? $pageLang->formatNum( SiteStats::views() ) : '';
                                break;
                        case 'currenttimestamp':
                                $value = wfTimestamp( TS_MW, $ts );
@@ -4401,7 +4402,7 @@ class Parser {
 
                $p1 = "/\[\[(:?$nc+:|:|)($tc+?)( ?\\($tc+\\))\\|]]/";           # [[ns:page (context)|]]
                $p4 = "/\[\[(:?$nc+:|:|)($tc+?)( ?($tc+))\\|]]/";           # [[ns:page(context)|]]
-               $p3 = "/\[\[(:?$nc+:|:|)($tc+?)( ?\\($tc+\\)|)($tc+|)\\|]]/"; # [[ns:page (context), context|]]
+               $p3 = "/\[\[(:?$nc+:|:|)($tc+?)( ?\\($tc+\\)|)((?:, |,)$tc+|)\\|]]/"; # [[ns:page (context), context|]]
                $p2 = "/\[\[\\|($tc+)]]/";                                      # [[|page]]
 
                # try $p1 first, to turn "[[A, B (C)|]]" into "[[A, B (C)|A, B]]"
index 9e88494..b3d7e75 100644 (file)
@@ -713,12 +713,23 @@ class ResourceLoader {
                                // Styles
                                $styles = array();
                                if ( $context->shouldIncludeStyles() ) {
-                                       // If we are in debug mode, we'll want to return an array of URLs
+                                       // If we are in debug mode without &only= set, we'll want to return an array of URLs
                                        // See comment near shouldIncludeScripts() for more details
                                        if ( $context->getDebug() && !$context->getOnly() && $module->supportsURLLoading() ) {
                                                $styles = $module->getStyleURLsForDebug( $context );
                                        } else {
                                                $styles = $module->getStyles( $context );
+                                               // Minify CSS before embedding in mw.loader.implement call
+                                               // (unless in debug mode)
+                                               if ( !$context->getDebug() ) {
+                                                       foreach ( $styles as $media => $style ) {
+                                                               if ( is_string( $style ) ) {
+                                                                       $styles[$media] = $this->filter( 'minify-css', $style );
+                                                               }
+                                                       }
+                                               }
+                                               // Combine styles for all media types
+                                               $styles = array( '' => self::makeCombinedStyles( $styles ) );
                                        }
                                }
 
@@ -737,23 +748,18 @@ class ResourceLoader {
                                                }
                                                break;
                                        case 'styles':
-                                               $out .= self::makeCombinedStyles( $styles );
+                                               $out .= $styles['']; // Code above has set $styles['']
                                                break;
                                        case 'messages':
                                                $out .= self::makeMessageSetScript( new XmlJsCode( $messagesBlob ) );
                                                break;
                                        default:
-                                               // Minify CSS before embedding in mw.loader.implement call
-                                               // (unless in debug mode)
-                                               if ( !$context->getDebug() ) {
-                                                       foreach ( $styles as $media => $style ) {
-                                                               if ( is_string( $style ) ) {
-                                                                       $styles[$media] = $this->filter( 'minify-css', $style );
-                                                               }
-                                                       }
-                                               }
-                                               $out .= self::makeLoaderImplementScript( $name, $scripts, $styles,
-                                                       new XmlJsCode( $messagesBlob ) );
+                                               $out .= self::makeLoaderImplementScript(
+                                                       $name,
+                                                       $scripts,
+                                                       $styles,
+                                                       new XmlJsCode( $messagesBlob )
+                                               );
                                                break;
                                }
                        } catch ( Exception $e ) {
index 4eb38f6..b823f1d 100644 (file)
@@ -39,14 +39,16 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
 
        /**
         * @param $context ResourceLoaderContext
-        * @return string Javascript code
+        * @return string: Javascript code
         */
        public function getScript( ResourceLoaderContext $context ) {
                global $wgContLang;
 
                return Xml::encodeJsCall( 'mw.language.setData', array(
                        $wgContLang->getCode(),
-                       array( 'grammarForms' => $this->getSiteLangGrammarForms() )
+                       array(
+                               'grammarForms' => $this->getSiteLangGrammarForms()
+                       )
                ) );
        }
 
@@ -62,13 +64,14 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
                $hash = md5( serialize( $forms ) );
 
                $result = $cache->get( $key );
-               if ( is_array( $result ) ) {
-                       if ( $result['hash'] === $hash ) {
-                               return $result['timestamp'];
-                       }
+               if ( is_array( $result ) && $result['hash'] === $hash ) {
+                       return $result['timestamp'];
                }
                $timestamp = wfTimestamp();
-               $cache->set( $key, array( 'hash' => $hash, 'timestamp' => $timestamp ) );
+               $cache->set( $key, array(
+                       'hash' => $hash,
+                       'timestamp' => $timestamp,
+               ) );
                return $timestamp;
        }
 
@@ -76,6 +79,6 @@ class ResourceLoaderLanguageDataModule extends ResourceLoaderModule {
         * @return array
         */
        public function getDependencies() {
-               return array( 'mediawiki.language' );
+               return array( 'mediawiki.language.init' );
        }
 }
index c63fcf7..6ceadff 100644 (file)
@@ -216,12 +216,13 @@ class RevDel_RevisionItem extends RevDel_Item {
         * @return string
         */
        protected function getRevisionLink() {
-               $date = $this->list->getLanguage()->userTimeAndDate(
-                       $this->revision->getTimestamp(), $this->list->getUser() );
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->revision->getTimestamp(), $this->list->getUser() ) );
+
                if ( $this->isDeleted() && !$this->canViewContent() ) {
                        return $date;
                }
-               return Linker::link(
+               return Linker::linkKnown(
                        $this->list->title,
                        $date,
                        array(),
@@ -242,7 +243,7 @@ class RevDel_RevisionItem extends RevDel_Item {
                        return $this->list->msg( 'diff' )->escaped();
                } else {
                        return
-                               Linker::link(
+                               Linker::linkKnown(
                                        $this->list->title,
                                        $this->list->msg( 'diff' )->escaped(),
                                        array(),
@@ -250,17 +251,14 @@ class RevDel_RevisionItem extends RevDel_Item {
                                                'diff' => $this->revision->getId(),
                                                'oldid' => 'prev',
                                                'unhide' => 1
-                                       ),
-                                       array(
-                                               'known',
-                                               'noclasses'
                                        )
                                );
                }
        }
 
        public function getHTML() {
-               $difflink = wfMessage( 'parentheses' )->rawParams( $this->getDiffLink() );
+               $difflink = $this->list->msg( 'parentheses' )
+                       ->rawParams( $this->getDiffLink() )->escaped();
                $revlink = $this->getRevisionLink();
                $userlink = Linker::revUserLink( $this->revision );
                $comment = Linker::revComment( $this->revision );
@@ -364,30 +362,39 @@ class RevDel_ArchiveItem extends RevDel_RevisionItem {
        }
 
        protected function getRevisionLink() {
-               $undelete = SpecialPage::getTitleFor( 'Undelete' );
-               $date = $this->list->getLanguage()->userTimeAndDate(
-                       $this->revision->getTimestamp(), $this->list->getUser() );
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->revision->getTimestamp(), $this->list->getUser() ) );
+
                if ( $this->isDeleted() && !$this->canViewContent() ) {
                        return $date;
                }
-               return Linker::link( $undelete, $date, array(),
+
+               return Linker::link(
+                       SpecialPage::getTitleFor( 'Undelete' ),
+                       $date,
+                       array(),
                        array(
                                'target' => $this->list->title->getPrefixedText(),
                                'timestamp' => $this->revision->getTimestamp()
-                       ) );
+                       )
+               );
        }
 
        protected function getDiffLink() {
                if ( $this->isDeleted() && !$this->canViewContent() ) {
                        return $this->list->msg( 'diff' )->escaped();
                }
-               $undelete = SpecialPage::getTitleFor( 'Undelete' );
-               return Linker::link( $undelete, $this->list->msg( 'diff' )->escaped(), array(),
+
+               return Linker::link(
+                       SpecialPage::getTitleFor( 'Undelete' ),
+                       $this->list->msg( 'diff' )->escaped(),
+                       array(),
                        array(
                                'target' => $this->list->title->getPrefixedText(),
                                'diff' => 'prev',
                                'timestamp' => $this->revision->getTimestamp()
-                       ) );
+                       )
+               );
        }
 }
 
@@ -598,30 +605,31 @@ class RevDel_FileItem extends RevDel_Item {
         * @return string
         */
        protected function getLink() {
-               $date = $this->list->getLanguage()->userTimeAndDate(
-                       $this->file->getTimestamp(), $this->list->getUser() );
-               if ( $this->isDeleted() ) {
-                       # Hidden files...
-                       if ( !$this->canViewContent() ) {
-                               $link = $date;
-                       } else {
-                               $revdelete = SpecialPage::getTitleFor( 'Revisiondelete' );
-                               $link = Linker::link(
-                                       $revdelete,
-                                       $date, array(),
-                                       array(
-                                               'target' => $this->list->title->getPrefixedText(),
-                                               'file'   => $this->file->getArchiveName(),
-                                               'token'  => $this->list->getUser()->getEditToken(
-                                                       $this->file->getArchiveName() )
-                                       )
-                               );
-                       }
-                       return '<span class="history-deleted">' . $link . '</span>';
-               } else {
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->file->getTimestamp(), $this->list->getUser() ) );
+
+               if ( !$this->isDeleted() ) {
                        # Regular files...
-                       return Xml::element( 'a', array( 'href' => $this->file->getUrl() ), $date );
+                       return Html::rawElement( 'a', array( 'href' => $this->file->getUrl() ), $date );
                }
+
+               # Hidden files...
+               if ( !$this->canViewContent() ) {
+                       $link = $date;
+               } else {
+                       $link = Linker::link(
+                               SpecialPage::getTitleFor( 'Revisiondelete' ),
+                               $date,
+                               array(),
+                               array(
+                                       'target' => $this->list->title->getPrefixedText(),
+                                       'file'   => $this->file->getArchiveName(),
+                                       'token'  => $this->list->getUser()->getEditToken(
+                                               $this->file->getArchiveName() )
+                               )
+                       );
+               }
+               return '<span class="history-deleted">' . $link . '</span>';
        }
        /**
         * Generate a user tool link cluster if the current user is allowed to view it
@@ -745,14 +753,15 @@ class RevDel_ArchivedFileItem extends RevDel_FileItem {
        }
 
        protected function getLink() {
-               $date = $this->list->getLanguage()->userTimeAndDate(
-                       $this->file->getTimestamp(), $this->list->getUser() );
-               $undelete = SpecialPage::getTitleFor( 'Undelete' );
-               $key = $this->file->getKey();
+               $date = htmlspecialchars( $this->list->getLanguage()->userTimeAndDate(
+                       $this->file->getTimestamp(), $this->list->getUser() ) );
+
                # Hidden files...
                if( !$this->canViewContent() ) {
                        $link = $date;
                } else {
+                       $undelete = SpecialPage::getTitleFor( 'Undelete' );
+                       $key = $this->file->getKey();
                        $link = Linker::link( $undelete, $date, array(),
                                array(
                                        'target' => $this->list->title->getPrefixedText(),
@@ -885,7 +894,7 @@ class RevDel_LogItem extends RevDel_Item {
                        array(),
                        array( 'page' => $title->getPrefixedText() )
                );
-               $loglink = wfMessage( 'parentheses' )->rawParams( $loglink );
+               $loglink = $this->list->msg( 'parentheses' )->rawParams( $loglink )->escaped();
                // User links and action text
                $action = $formatter->getActionText();
                // Comment
index 7b59b93..32eb2e7 100644 (file)
  * computations here. This function should returns the HTML to be cached.
  * It should not add anything to the PageOutput object!
  *
- * @since 1.20
+ * 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.
  *
- * @file SpecialCachedPage.php
- * @ingroup SpecialPage
+ * 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
  *
- * @licence GNU GPL v2 or later
+ * @file
+ * @ingroup SpecialPage
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ * @since 1.20
  */
 abstract class SpecialCachedPage extends SpecialPage implements ICacheHelper {
 
@@ -166,4 +178,4 @@ abstract class SpecialCachedPage extends SpecialPage implements ICacheHelper {
                }
        }
 
-}
\ No newline at end of file
+}
index f6482ef..2b88325 100644 (file)
@@ -136,6 +136,15 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                        $oldpassMsg = 'oldpassword';
                        $submitMsg = 'resetpass-submit-loggedin';
                }
+               $extraFields = array();
+               wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
+               $prettyFields = array(
+                                       array( 'wpName', 'username', 'text', $this->mUserName ),
+                                       array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
+                                       array( 'wpNewPassword', 'newpassword', 'password', null ),
+                                       array( 'wpRetype', 'retypenew', 'password', null ),
+                               );
+               $prettyFields = array_merge( $prettyFields, $extraFields );
                $this->getOutput()->addHTML(
                        Xml::fieldset( $this->msg( 'resetpass_header' )->text() ) .
                        Xml::openElement( 'form',
@@ -149,12 +158,7 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                        Html::hidden( 'returnto', $this->getRequest()->getVal( 'returnto' ) ) . "\n" .
                        $this->msg( 'resetpass_text' )->parseAsBlock() . "\n" .
                        Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
-                       $this->pretty( array(
-                               array( 'wpName', 'username', 'text', $this->mUserName ),
-                               array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
-                               array( 'wpNewPassword', 'newpassword', 'password', null ),
-                               array( 'wpRetype', 'retypenew', 'password', null ),
-                       ) ) . "\n" .
+                       $this->pretty( $prettyFields ) . "\n" .
                        $rememberMe .
                        "<tr>\n" .
                                "<td></td>\n" .
index 1b7494f..49aa7e6 100644 (file)
@@ -235,7 +235,9 @@ class SpecialContributions extends SpecialPage {
                        $links = $this->getLanguage()->pipeList( $tools );
 
                        // Show a note if the user is blocked and display the last block log entry.
-                       if ( $userObj->isBlocked() ) {
+                       // Do not expose the autoblocks, since that may lead to a leak of accounts' IPs,
+                       // and also this will display a totally irrelevant log entry as a current block.
+                       if ( $userObj->isBlocked() && $userObj->getBlock()->getType() != Block::TYPE_AUTO ) {
                                $out = $this->getOutput(); // showLogExtract() wants first parameter by reference
                                LogEventsList::showLogExtract(
                                        $out,
@@ -439,7 +441,7 @@ class SpecialContributions extends SpecialPage {
                                'target',
                                $this->opts['target'],
                                'text',
-                               array( 'size' => '20', 'required' => '', 'class' => 'mw-input' ) +
+                               array( 'size' => '40', 'required' => '', 'class' => 'mw-input' ) +
                                        ( $this->opts['target'] ? array() : array( 'autofocus' )
                                )
                        ) . ' '
index 3d43831..67f6d68 100644 (file)
@@ -475,7 +475,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                                $title = Title::makeTitleSafe( $namespace, $dbkey );
                                if ( $this->checkTitle( $title, $namespace, $dbkey ) ) {
                                        $text = $this->buildRemoveLine( $title );
-                                       $fields['TitlesNs'.$namespace]['options'][$text] = $title->getEscapedText();
+                                       $fields['TitlesNs'.$namespace]['options'][$text] = htmlspecialchars( $title->getPrefixedText() );
                                        $count++;
                                }
                        }
index 284b85a..ddab164 100644 (file)
@@ -197,7 +197,7 @@ class ImageListPager extends TablePager {
                                $thumb = $file->transform( array( 'width' => 180, 'height' => 360 ) );
                                return $thumb->toHtml( array( 'desc-link' => true ) );
                        case 'img_timestamp':
-                               return htmlspecialchars( $this->getLanguage()->timeanddate( $value, true ) );
+                               return htmlspecialchars( $this->getLanguage()->userTimeAndDate( $value, $this->getUser() ) );
                        case 'img_name':
                                static $imgfile = null;
                                if ( $imgfile === null ) $imgfile = $this->msg( 'imgfile' )->text();
index 7a3f407..8eee22d 100644 (file)
@@ -174,7 +174,7 @@ class SpecialLog extends SpecialPage {
                $s .= Html::hidden( 'type', 'logging' ) . "\n";
                $button = Html::element( 'button',
                        array( 'type' => 'submit', 'class' => "deleterevision-log-submit mw-log-deleterevision-button" ),
-                       $this->msg( 'showhideselectedversions' )->text()
+                       $this->msg( 'showhideselectedlogentries' )->text()
                ) . "\n";
                $s .= $button . $formcontents . $button;
                $s .= Html::closeElement( 'form' );
index b193a1c..46a35c4 100644 (file)
@@ -96,6 +96,7 @@ class MIMEsearchPage extends QueryPage {
                );
 
                $download = Linker::makeMediaLinkObj( $nt, $this->msg( 'download' )->escaped() );
+               $download = $this->msg( 'parentheses' )->rawParams( $download )->escaped();
                $lang = $this->getLanguage();
                $bytes = htmlspecialchars( $lang->formatSize( $result->img_size ) );
                $dimensions = $this->msg( 'widthheight' )->numParams( $result->img_width,
@@ -103,7 +104,7 @@ class MIMEsearchPage extends QueryPage {
                $user = Linker::link( Title::makeTitle( NS_USER, $result->img_user_text ), htmlspecialchars( $result->img_user_text ) );
                $time = htmlspecialchars( $lang->userTimeAndDate( $result->img_timestamp, $this->getUser() ) );
 
-               return "($download) $plink . . $dimensions . . $bytes . . $user . . $time";
+               return "$download $plink . . $dimensions . . $bytes . . $user . . $time";
        }
 
        /**
index 7fbe910..b5fb0dd 100644 (file)
@@ -252,9 +252,11 @@ class SpecialMergeHistory extends SpecialPage {
                $ts = wfTimestamp( TS_MW, $row->rev_timestamp );
                $checkBox = Xml::radio( 'mergepoint', $ts, false );
 
+               $user = $this->getUser();
+
                $pageLink = Linker::linkKnown(
                        $rev->getTitle(),
-                       htmlspecialchars( $this->getLanguage()->timeanddate( $ts ) ),
+                       htmlspecialchars( $this->getLanguage()->userTimeAndDate( $ts, $user ) ),
                        array(),
                        array( 'oldid' => $rev->getId() )
                );
@@ -263,7 +265,7 @@ class SpecialMergeHistory extends SpecialPage {
                }
 
                # Last link
-               if( !$rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
+               if( !$rev->userCan( Revision::DELETED_TEXT, $user ) ) {
                        $last = $this->message['last'];
                } elseif( isset( $this->prevId[$row->rev_id] ) ) {
                        $last = Linker::linkKnown(
@@ -285,10 +287,8 @@ class SpecialMergeHistory extends SpecialPage {
                }
                $comment = Linker::revComment( $rev );
 
-               $revisionRow = $this->msg( 'mergehistory-revisionrow' )->rawParams( $checkBox, $last, $pageLink, $userLink, $stxt, $comment)->escaped();
-               $revisionRow .= "<li>" . $line . "</li>";
-
-               return $revisionRow;
+               return Html::rawElement( 'li', array(),
+                       $this->msg( 'mergehistory-revisionrow' )->rawParams( $checkBox, $last, $pageLink, $userLink, $stxt, $comment )->escaped() );
        }
 
        function merge() {
index 4c32c30..1798e8f 100644 (file)
@@ -345,7 +345,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                        $this->msg( 'parentheses' )->rawParams( $histLink )->escaped() );
 
                $length = Html::element( 'span', array( 'class' => 'mw-newpages-length' ),
-                               '[' . $this->msg( 'nbytes' )->numParams( $result->length )->text() . ']'
+                       $this->msg( 'brackets' )->params( $this->msg( 'nbytes' )->numParams( $result->length )->text() )
                );
 
                $ulink = Linker::revUserTools( $rev );
index 803f03e..9f84804 100644 (file)
@@ -56,7 +56,13 @@ class PopularPagesPage extends QueryPage {
         */
        function formatResult( $skin, $result ) {
                global $wgContLang;
-               $title = Title::makeTitle( $result->namespace, $result->title );
+
+               $title = Title::makeTitleSafe( $result->namespace, $result->title );
+               if( !$title ) {
+                       return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ),
+                               Linker::getInvalidTitleDescription( $this->getContext(), $result->namespace, $result->title ) );
+               }
+
                $link = Linker::linkKnown(
                        $title,
                        htmlspecialchars( $wgContLang->convert( $title->getPrefixedText() ) )
index 730969d..c37bb1d 100644 (file)
@@ -196,7 +196,8 @@ class SpecialPrefixindex extends SpecialAllpages {
                                                $link = ($s->page_is_redirect ? '<div class="allpagesredirect">' : '' ) .
                                                        Linker::linkKnown(
                                                                $t,
-                                                               htmlspecialchars( $t->getText() )
+                                                               htmlspecialchars( $t->getText() ),
+                                                               $s->page_is_redirect ? array( 'class' => 'mw-redirect' ) : array()
                                                        ) .
                                                        ($s->page_is_redirect ? '</div>' : '' );
                                        } else {
index d089c73..83c7235 100644 (file)
@@ -420,7 +420,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        $out .= Xml::closeElement( 'form' ) . "\n";
                        // Show link to edit the dropdown reasons
                        if( $this->getUser()->isAllowed( 'editinterface' ) ) {
-                               $title = Title::makeTitle( NS_MEDIAWIKI, 'revdelete-reason-dropdown' );
+                               $title = Title::makeTitle( NS_MEDIAWIKI, 'Revdelete-reason-dropdown' );
                                $link = Linker::link(
                                        $title,
                                        $this->msg( 'revdelete-edit-reasonlist' )->escaped(),
index 079130f..3344436 100644 (file)
@@ -899,27 +899,7 @@ class SpecialSearch extends SpecialPage {
                        ) .
                        Xml::element( 'legend', null, $this->msg('powersearch-legend' )->text() ) .
                        Xml::tags( 'h4', null, $this->msg( 'powersearch-ns' )->parse() ) .
-                       Xml::tags(
-                               'div',
-                               array( 'id' => 'mw-search-togglebox' ),
-                               Xml::label( $this->msg( 'powersearch-togglelabel' )->text(), 'mw-search-togglelabel' ) .
-                                       Xml::element(
-                                               'input',
-                                               array(
-                                                       'type'=>'button',
-                                                       'id' => 'mw-search-toggleall',
-                                                       'value' => $this->msg( 'powersearch-toggleall' )->text()
-                                               )
-                                       ) .
-                                       Xml::element(
-                                               'input',
-                                               array(
-                                                       'type'=>'button',
-                                                       'id' => 'mw-search-togglenone',
-                                                       'value' => $this->msg( 'powersearch-togglenone' )->text()
-                                               )
-                                       )
-                       ) .
+                       Html::element( 'div', array( 'id' => 'mw-search-togglebox' ) ) .
                        Xml::element( 'div', array( 'class' => 'divider' ), '', false ) .
                        implode( Xml::element( 'div', array( 'class' => 'divider' ), '', false ), $showSections ) .
                        $hidden .
index 654d5b7..79c051a 100644 (file)
@@ -1166,7 +1166,7 @@ class SpecialUndelete extends SpecialPage {
        private function formatRevisionRow( $row, $earliestLiveTime, $remaining ) {
                $rev = Revision::newFromArchiveRow( $row,
                        array( 'page' => $this->mTargetObj->getArticleID() ) );
-               $stxt = '';
+               $revTextSize = '';
                $ts = wfTimestamp( TS_MW, $row->ar_timestamp );
                // Build checkboxen...
                if( $this->mAllowed ) {
@@ -1215,13 +1215,15 @@ class SpecialUndelete extends SpecialPage {
                // Revision text size
                $size = $row->ar_len;
                if( !is_null( $size ) ) {
-                       $stxt = Linker::formatRevisionSize( $size );
+                       $revTextSize = Linker::formatRevisionSize( $size );
                }
                // Edit summary
                $comment = Linker::revComment( $rev );
                // Revision delete links
                $revdlink = Linker::getRevDeleteLink( $user, $rev, $this->mTargetObj );
-               return "<li>$checkBox $revdlink ($last) $pageLink . . $userLink $stxt $comment</li>";
+
+               $revisionRow = $this->msg( 'undelete-revisionrow' )->rawParams( $checkBox, $revdlink, $last, $pageLink , $userLink, $revTextSize, $comment )->escaped();
+               return "<li>$revisionRow</li>";
        }
 
        private function formatFileRow( $row ) {
index 1fa14ff..6052d09 100644 (file)
@@ -1,7 +1,28 @@
 <?php
 /**
- * Implements Special:UploadStash
+ * Implements Special:UploadStash.
  *
+ * 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 SpecialPage
+ * @ingroup Upload
+ */
+
+/**
  * Web access for files temporarily stored by UploadStash.
  *
  * For example -- files that were uploaded with the UploadWizard extension are stored temporarily
  *
  * Since this is based on the user's session, in effect this creates a private temporary file area.
  * However, the URLs for the files cannot be shared.
- *
- * @file
- * @ingroup SpecialPage
- * @ingroup Upload
  */
-
 class SpecialUploadStash extends UnlistedSpecialPage {
        // UploadStash
        private $stash;
index 3837e27..ded2721 100644 (file)
@@ -1261,6 +1261,10 @@ class LoginForm extends SpecialPage {
         * @return string
         */
        function makeLanguageSelectorLink( $text, $lang ) {
+               if( $this->getLanguage()->getCode() == $lang ) {
+                       // no link for currently used language
+                       return htmlspecialchars( $text );
+               }
                $attr = array( 'uselang' => $lang );
                if( $this->mType == 'signup' ) {
                        $attr['type'] = 'signup';
index 2b4dc95..5a71ccb 100644 (file)
@@ -167,7 +167,8 @@ class SpecialVersion extends SpecialPage {
                        $version = $wgVersion;
                } elseif ( $gitInfo ) {
                        $shortSha1 = substr( $gitInfo, 0, 7 );
-                       $version = "$wgVersion ($shortSha1)";
+                       $shortSha1 = wfMessage( 'parentheses' )->params( $shortSha1 )->escaped();
+                       $version = "$wgVersion $shortSha1";
                } elseif ( $flags === 'nodb' ) {
                        $version = "$wgVersion (r{$svnInfo['checkout-rev']})";
                } else {
@@ -615,8 +616,8 @@ class SpecialVersion extends SpecialPage {
                        $list = $list[0];
                }
                if( is_object( $list ) ) {
-                       $class = get_class( $list );
-                       return "($class)";
+                       $class = wfMessage( 'parentheses' )->params( get_class( $list ) )->escaped();
+                       return $class;
                } elseif ( !is_array( $list ) ) {
                        return $list;
                } else {
@@ -625,7 +626,7 @@ class SpecialVersion extends SpecialPage {
                        } else {
                                $class = $list[0];
                        }
-                       return "($class, {$list[1]})";
+                       return wfMessage( 'parentheses' )->params( "$class, {$list[1]}" )->escaped();
                }
        }
 
index 656f5d0..b531f2a 100644 (file)
@@ -1,6 +1,21 @@
 <?php
 /**
- * Internationalisation code
+ * Internationalisation code.
+ *
+ * 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 Language
@@ -241,6 +256,7 @@ class Language {
         *
         * @param $code string
         *
+        * @throws MWException
         * @since 1.18
         * @return bool
         */
@@ -3672,6 +3688,9 @@ class Language {
        /**
         * Get the RFC 3066 code for this language object
         *
+        * NOTE: The return value of this function is NOT HTML-safe and must be escaped with
+        * htmlspecialchars() or similar
+        *
         * @return string
         */
        public function getCode() {
@@ -3681,6 +3700,10 @@ class Language {
        /**
         * Get the code in Bcp47 format which we can use
         * inside of html lang="" tags.
+        *
+        * NOTE: The return value of this function is NOT HTML-safe and must be escaped with
+        * htmlspecialchars() or similar.
+        *
         * @since 1.19
         * @return string
         */
@@ -4093,7 +4116,7 @@ class Language {
         * @param $title Title object to link
         * @param $offset Integer offset parameter
         * @param $limit Integer limit parameter
-        * @param $query String optional URL query parameter string
+        * @param $query array|String optional URL query parameter string
         * @param $atend Bool optional param for specified if this is the last page
         * @return String
         */
index 7a37826..06ef711 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Language names.
+ *
+ * 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 Language
+ */
+
 /**
   * These determine things like interwikis, language selectors, and so on.
   * Safe to change without running scripts on the respective sites.
        'ug-latn' => 'Uyghurche', # Uyghur (Latin script)
        'uk' => 'українська', # Ukrainian
        'ur' => 'اردو',     # Urdu
-       'uz' => 'Oʻzbek',      # Uzbek
+       'uz' => 'Oʻzbekcha',   # Uzbek
        've' => 'Tshivenda',            # Venda
        'vec' => 'vèneto',     # Venetian
        'vep' => 'Vepsän kel’',      # Veps
index 29ae9c1..4c39c26 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Amharic (አማርኛ) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Amharic (አማርኛ)
  *
index 95e7639..cc6b85c 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Arabic (العربية)
+/**
+ * Arabic (العربية) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Arabic (العربية)
+ *
+ * @ingroup Language
  */
 class LanguageAr extends Language {
 
index 947e656..0956dc4 100644 (file)
@@ -1,8 +1,31 @@
 <?php
-/** Azerbaijani (Azərbaycan)
-  *
-  * @ingroup Language
-  */
+/**
+ * Azerbaijani (Azərbaycan) specific code.
+ *
+ * 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 Language
+ */
+
+/**
+ * Azerbaijani (Azərbaycan)
+ *
+ * @ingroup Language
+ */
 class LanguageAz extends Language {
 
        /**
index 7d881ac..b5b5966 100644 (file)
@@ -1,17 +1,38 @@
 <?php
-/** Belarusian normative (Беларуская мова)
-  *
-  * This is still the version from Be-x-old, only duplicated for consistency of
-  * plural and grammar functions. If there are errors please send a patch.
-  *
-  * @ingroup Language
-  *
-  * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
-  * @see http://be.wikipedia.org/wiki/Talk:LanguageBe.php
-  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
-  * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
-  */
+/**
+ * Belarusian normative (Беларуская мова) specific code.
+ *
+ * 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
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
+ * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
+ * @ingroup Language
+ */
 
+/**
+ * Belarusian normative (Беларуская мова)
+ *
+ * This is still the version from Be-x-old, only duplicated for consistency of
+ * plural and grammar functions. If there are errors please send a patch.
+ *
+ * @ingroup Language
+ * @see http://be.wikipedia.org/wiki/Talk:LanguageBe.php
+ */
 class LanguageBe extends Language {
 
        /**
index 0e07a71..b781d7a 100644 (file)
@@ -1,14 +1,35 @@
 <?php
-/** Belarusian in Taraškievica orthography (Беларуская тарашкевіца)
-  *
-  * @ingroup Language
-  *
-  * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
-  * @see http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php
-  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
-  * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
-  */
+/**
+ * Belarusian in Taraškievica orthography (Беларуская тарашкевіца) specific code.
+ *
+ * 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
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
+ * @license http://www.gnu.org/copyleft/fdl.html GNU Free Documentation License
+ * @ingroup Language
+ */
 
+/**
+ * Belarusian in Taraškievica orthography (Беларуская тарашкевіца)
+ *
+ * @ingroup Language
+ * @see http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php
+ */
 class LanguageBe_tarask extends Language {
        /**
         * Plural form transformations
index 9ccb9a8..d735c7a 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Bulgarian (Български) specific code.
+ *
+ * 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 Language
+ */
 
-/** Bulgarian (Български)
+/**
+ * Bulgarian (Български)
  *
  * @ingroup Language
  */
index 46e4418..0eaf2ff 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Bihari (भोजपुरी) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Bihari (भोजपुरी)
  *
index 7c13037..0929641 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Bosnian (bosanski) specific code.
+ *
+ * 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 Language
+ */
 
-/** Bosnian (bosanski)
+/**
+ * Bosnian (bosanski)
  *
  * @ingroup Language
  */
index f50a7e7..49c4756 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Czech (čeština [subst.], český [adj.], česky [adv.]) specific code.
+ *
+ * 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 Language
+ */
 
-/** Czech (čeština [subst.], český [adj.], česky [adv.])
+/**
+ * Czech (čeština [subst.], český [adj.], česky [adv.])
  *
  * @ingroup Language
  */
index af42d2c..bfa95cf 100644 (file)
@@ -1,6 +1,28 @@
 <?php
-
-/** Old Church Slavonic (Ѩзыкъ словѣньскъ)
+/**
+ * Old Church Slavonic (Ѩзыкъ словѣньскъ) specific code.
+ *
+ * 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 Language
+ */
+/**
+ * Old Church Slavonic (Ѩзыкъ словѣньскъ)
  *
  * @ingroup Language
  */
index 1b0863a..9c28279 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Welsh (Cymraeg)
+/**
+ * Welsh (Cymraeg) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Welsh (Cymraeg)
+ *
+ * @ingroup Language
  */
 class LanguageCy extends Language {
 
index 1fae25c..b8ed7fc 100644 (file)
@@ -1,6 +1,29 @@
 <?php
+/**
+ * Lower Sorbian (Dolnoserbski) specific code.
+ *
+ * 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
+ * @author Niklas Laxström
+ * @ingroup Language
+ */
 
-/** Lower Sorbian (Dolnoserbski)
+/**
+ * Lower Sorbian (Dolnoserbski)
  *
  * @ingroup Language
  */
index af058a3..3c16248 100644 (file)
@@ -1,9 +1,31 @@
 <?php
+/**
+ * Esperanto (Esperanto) specific code.
+ *
+ * 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
+ * @author Brion Vibber <brion@pobox.com>
+ * @ingroup Language
+ */
 
-/** Esperanto (Esperanto)
+/**
+ * Esperanto (Esperanto)
  *
  * @ingroup Language
- * @author Brion Vibber <brion@pobox.com>
  */
 class LanguageEo extends Language {
        /**
index b469dec..1a9f286 100644 (file)
@@ -1,9 +1,30 @@
 <?php
-
-/** Estonian (Eesti)
+/**
+ * Estonian (Eesti) specific code.
+ *
+ * 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 Language
+ */
+
+/**
+ * Estonian (Eesti)
  *
+ * @ingroup Language
  */
 class LanguageEt extends Language {
        /**
index 7156b65..1865cc5 100644 (file)
@@ -1,10 +1,31 @@
 <?php
-
-/** Finnish (Suomi)
+/**
+ * Finnish (Suomi) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Finnish (Suomi)
+ *
+ * @ingroup Language
  */
 class LanguageFi extends Language {
 
index 3e7c970..edbe1fb 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * French (Français) specific code.
+ *
+ * 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 Language
+ */
 
-/** French (Français)
+/**
+ * French (Français)
  *
  * @ingroup Language
  */
index 43050e1..cb9fa04 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Irish (Gaeilge) specific code.
+ *
+ * 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 Language
+ */
 
-/** Irish (Gaeilge)
+/**
+ * Irish (Gaeilge)
  *
  * @ingroup Language
  */
index 99b4c29..4fd41cf 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Gan Chinese specific code.
+ *
+ * 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 Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageZh.php' );
index 737cdda..f042b02 100644 (file)
@@ -1,10 +1,32 @@
 <?php
-/** Scots Gaelic (Gàidhlig)
+/**
+ * Scots Gaelic (Gàidhlig) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Raimond Spekking
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Scots Gaelic (Gàidhlig)
+ *
+ * @ingroup Language
  */
 class LanguageGd extends Language {
 
index 4defffd..70b80ad 100644 (file)
@@ -1,10 +1,31 @@
 <?php
-
-/** Manx (Gaelg)
+/**
+ * Manx (Gaelg) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Manx (Gaelg)
+ *
+ * @ingroup Language
  */
 class LanguageGv extends Language {
 
index 87483c6..22be1de 100644 (file)
@@ -1,11 +1,31 @@
 <?php
+/**
+ * Hebrew (עברית) specific code.
+ *
+ * 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
+ * @author Rotem Liss
+ * @ingroup Language
+ */
 
 /**
  * Hebrew (עברית)
  *
  * @ingroup Language
- *
- * @author Rotem Liss
  */
 class LanguageHe extends Language {
 
index 53a0fc1..6a2302c 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Hindi (हिन्दी) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Hindi (हिन्दी)
  *
index e18c8d3..a0e9a87 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Croatian (hrvatski)
-  *
-  * @ingroup Language
-  */
+/**
+ * Croatian (hrvatski) specific code.
+ *
+ * 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 Language
+ */
 
+/**
+ * Croatian (hrvatski)
+ *
+ * @ingroup Language
+ */
 class LanguageHr extends Language {
 
        /**
index 1b67aa0..965ea6a 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Upper Sorbian (Hornjoserbsce)
+/**
+ * Upper Sorbian (Hornjoserbsce) specific code.
  *
+ * 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 Language
  */
 
+/**
+ * Upper Sorbian (Hornjoserbsce)
+ *
+ * @ingroup Language
+ */
 class LanguageHsb extends Language {
 
        /**
index dbb6f5b..1f4d45c 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Hungarian (magyar) specific code.
+ *
+ * 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 Language
+ */
 
-/** Hungarian localisation for MediaWiki
+/**
+ * Hungarian localisation for MediaWiki
  *
  * @ingroup Language
  */
index c14106c..9c15595 100644 (file)
@@ -1,9 +1,31 @@
 <?php
+/**
+ * Armenian (Հայերեն) specific code.
+ *
+ * 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
+ * @author Ruben Vardanyan (Me@RubenVardanyan.com)
+ * @ingroup Language
+ */
 
-/** Armenian (Հայերեն)
+/**
+ * Armenian (Հայերեն)
  *
  * @ingroup Language
- * @author Ruben Vardanyan (Me@RubenVardanyan.com)
  */
 class LanguageHy extends Language {
 
index 72f6af1..090d626 100644 (file)
@@ -1,24 +1,39 @@
 <?php
 /**
-  * @addtogroup Language
-  */
-
-/*
-* Conversion script between Latin and Syllabics for Inuktitut.
-* - Syllabics -> lowercase Latin
-* - lowercase/uppercase Latin -> Syllabics
-*
-*
-* Based on:
-*   - http://commons.wikimedia.org/wiki/Image:Inuktitut.png
-*   - LanguageSr.php
-*
-* @ingroup Language
-*/
+ * Inuktitut specific code.
+ *
+ * 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 Language
+ */
+
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 
 /**
+ * Conversion script between Latin and Syllabics for Inuktitut.
+ * - Syllabics -> lowercase Latin
+ * - lowercase/uppercase Latin -> Syllabics
+ *
  *
+ * Based on:
+ *   - http://commons.wikimedia.org/wiki/Image:Inuktitut.png
+ *   - LanguageSr.php
+ *
+ * @ingroup Language
  */
 class IuConverter extends LanguageConverter {
 
index 510a397..9c6314c 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Japanese (日本語) specific code.
+ *
+ * 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 Language
+ */
 
 /**
  * Japanese (日本語)
index 22e8946..a397bc0 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Karakalpak (Qaraqalpaqsha) specific code.
+ *
+ * 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 Language
+ */
 
-/** Karakalpak (Qaraqalpaqsha)
+/**
+ * Karakalpak (Qaraqalpaqsha)
  *
  * @ingroup Language
  */
index c2a3d24..7eb0b6c 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Kazakh (Қазақша) specific code.
+ *
+ * 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 Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageKk_cyrl.php' );
@@ -11,8 +32,8 @@ define( 'KK_L_LC', 'aäbcçdeéfgğhıiïjklmnñoöpqrsştuüvwxyýz' ); # Kazak
 define( 'H_HAMZA', 'ٴ' ); # U+0674 ARABIC LETTER HIGH HAMZA
 // define( 'ZWNJ', '‌' ); # U+200C ZERO WIDTH NON-JOINER
 
-/** Kazakh (Қазақша)
- * converter routines
+/**
+ * Kazakh (Қазақша) converter routines
  *
  * @ingroup Language
  */
index 30f74e6..081a20f 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Kazakh (Қазақша)
+/**
+ * Kazakh (Қазақша) specific code.
  *
+ * 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 Language
  */
 
+/**
+ * Kazakh (Қазақша)
+ *
+ * @ingroup Language
+ */
 class LanguageKk_cyrl extends Language {
 
        # Convert from the nominative form of a noun to some other case
index 105e6ed..71d67a7 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Khmer (ភាសាខ្មែរ)
+/**
+ * Kazakh (Қазақша) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Khmer (ភាសាខ្មែរ)
+ *
+ * @ingroup Language
  */
 class LanguageKm extends Language {
 
index dc37656..074ad13 100644 (file)
@@ -1,10 +1,31 @@
 <?php
-
-/** Ripuarian (Ripoarėsh)
+/**
+ * Ripuarian (Ripoarėsh) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Purodha Blissenbach
+ * @ingroup Language
+ */
+
+/**
+ * Ripuarian (Ripoarėsh)
+ *
+ * @ingroup Language
  */
 class LanguageKsh extends Language {
        static $familygender = array(
index 81bf6ee..18c8564 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Kurdish specific code.
+ *
+ * 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 Language
+ */
+
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageKu_ku.php' );
 
index e433292..2381de5 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Kurdish specific code.
+ *
+ * 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 Language
+ */
 
-/** Kurdish
+/**
+ * Kurdish
  *
  * @ingroup Language
  */
index 657ac6e..ba0f140 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Latin (lingua Latina) specific code.
+ *
+ * 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 Language
+ */
 
-/** Latin (lingua Latina)
+/**
+ * Latin (lingua Latina)
  *
  * @ingroup Language
  */
index b96cf61..d7329d5 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Lingala (Lingála) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Lingala (Lingála)
  *
index af38b6a..ac4ebda 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Lithuanian (Lietuvių) specific code.
+ *
+ * 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 Language
+ */
 
-/** Lithuanian (Lietuvių)
+/**
+ * Lithuanian (Lietuvių)
  *
  * @ingroup Language
  */
index 8a78303..e76f6f9 100644 (file)
@@ -1,13 +1,33 @@
 <?php
-
-/** Latvian (Latviešu)
+/**
+ * Latvian (Latviešu) specific code.
  *
- * @ingroup Language
+ * 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.
  *
- * @author Niklas Laxström
+ * 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
+ * @author Niklas Laxström
  * @copyright Copyright © 2006, Niklas Laxström
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @ingroup Language
+ */
+
+/**
+ * Latvian (Latviešu)
+ *
+ * @ingroup Language
  */
 class LanguageLv extends Language {
        /**
index 111dda3..ace0a4c 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Malagasy (Malagasy) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Malagasy (Malagasy)
  *
index 4e3b576..968fe26 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Macedonian (Македонски) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Macedonian (Македонски)
  *
index aeca362..ec3ea54 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Malayalam (മലയാളം) specific code.
+ *
+ * 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 Language
+ */
 
 /**
  * Malayalam (മലയാളം)
index 2fa48e9..bf8a10d 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Moldavian (Молдовеняскэ) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Moldavian (Молдовеняскэ)
  *
index 5cf40ce..68bd7ca 100644 (file)
@@ -1,12 +1,32 @@
 <?php
-
-/** Maltese (Malti)
+/**
+ * Maltese (Malti) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Niklas Laxström
+ * @ingroup Language
  */
 
+/**
+ * Maltese (Malti)
+ *
+ * @ingroup Language
+ */
 class LanguageMt extends Language {
 
        /**
@@ -25,4 +45,4 @@ class LanguageMt extends Language {
                else $index = 3;
                return $forms[$index];
        }
-}
\ No newline at end of file
+}
index b12e458..1d117dd 100644 (file)
@@ -1,10 +1,31 @@
 <?php
-
-/** Burmese (Myanmasa)
+/**
+ * Burmese (Myanmasa) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Niklas Laxström, 2008
+ * @ingroup Language
+ */
+
+/**
+ * Burmese (Myanmasa)
+ *
+ * @ingroup Language
  */
 class LanguageMy extends Language {
 
@@ -19,4 +40,4 @@ class LanguageMy extends Language {
                 */
                return $_;
        }
-}
\ No newline at end of file
+}
index 4026332..0c08675 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Northern Sotho (Sesotho sa Leboa) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Northern Sotho (Sesotho sa Leboa)
  *
index f3b5d8a..a808840 100644 (file)
@@ -1,8 +1,29 @@
 <?php
-
-/** Ossetian (Ирон)
+/**
+ * Ossetian (Ирон) specific code.
+ *
+ * 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
  * @author Soslan Khubulov
+ * @ingroup Language
+ */
+
+/**
+ * Ossetian (Ирон)
  *
  * @ingroup Language
  */
index b64ee98..68bf020 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Polish (polski) specific code.
+ *
+ * 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 Language
+ */
 
-/** Polish (polski)
+/**
+ * Polish (polski)
  *
  * @ingroup Language
  */
index 6798b24..8e2115c 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Dummy language that return the message names.
+ *
+ * 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 Language
+ */
+
 /**
  * For all translated messages, this returns the name of the message bracketed.
  * This does not affect untranslated messages.
index ce3e515..0db2ec0 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Romanian (Română) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Romanian (Română)
  *
index b5371d2..6407e15 100644 (file)
@@ -1,11 +1,33 @@
 <?php
+/**
+ * Russian (русский язык) specific code.
+ *
+ * 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 Language
+ */
 
-/** Russian (русский язык)
-  *
-  * You can contact Alexander Sigachov (alexander.sigachov at Googgle Mail)
-  *
-  * @ingroup Language
-  */
+/**
+ * Russian (русский язык)
+ *
+ * You can contact Alexander Sigachov (alexander.sigachov at Googgle Mail)
+ *
+ * @ingroup Language
+ */
 class LanguageRu extends Language {
 
        /**
index a66957f..25b61c3 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Northern Sami (Sámegiella) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Northern Sami (Sámegiella)
  *
index d47863d..0c74e45 100644 (file)
@@ -1,9 +1,31 @@
 <?php
-/** Samogitian (Žemaitėška)
+/**
+ * Samogitian (Žemaitėška) specific code.
  *
- * @ingroup Language
+ * 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
  * @author Niklas Laxström
+ * @ingroup Language
+ */
+
+/**
+ * Samogitian (Žemaitėška)
+ *
+ * @ingroup Language
  */
 class LanguageSgs extends Language {
 
index 139ad0b..1fcddfc 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Serbo-Croatian (Srpskohrvatski / Српскохрватски) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Serbo-Croatian (Srpskohrvatski / Српскохрватски)
  *
index 08a06d6..ab34440 100644 (file)
@@ -1,24 +1,39 @@
 <?php
 /**
-  * @addtogroup Language
-  */
-
-/*
-* Conversion script between Latin and Tifinagh for Tachelhit.
-* - Tifinagh -> lowercase Latin
-* - lowercase/uppercase Latin -> Tifinagh
-*
-*
-* Based on:
-*   - http://en.wikipedia.org/wiki/Shilha_language
-*   - LanguageSr.php
-*
-* @ingroup Language
-*/
+ * Shilha specific code.
+ *
+ * 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 Language
+ */
+
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 
 /**
+ * Conversion script between Latin and Tifinagh for Tachelhit.
+ * - Tifinagh -> lowercase Latin
+ * - lowercase/uppercase Latin -> Tifinagh
+ *
  *
+ * Based on:
+ *   - http://en.wikipedia.org/wiki/Shilha_language
+ *   - LanguageSr.php
+ *
+ * @ingroup Language
  */
 class ShiConverter extends LanguageConverter {
 
index eac25f4..b1da70e 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Slovak (Slovenčina) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Slovak (Slovenčina)
  *
index 3e2ca90..c075e51 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Slovenian (Slovenščina) specific code.
+ *
+ * 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 Language
+ */
 
-/** Slovenian (Slovenščina)
+/**
+ * Slovenian (Slovenščina)
  *
  * @ingroup Language
  */
index 72ca98a..1961871 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Southern Sami (Åarjelsaemien) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Southern Sami (Åarjelsaemien)
  *
index 1b04cb7..26d6853 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Serbian (Српски / Srpski) specific code.
+ *
+ * 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 Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageSr_ec.php' );
index 572a5f3..352e293 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Serbian (cyrillic script) specific code.
+ *
+ * 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 Language
+ */
 
 /**
  * Serbian (cyrillic script)
index 3a1f6a6..0e36d6c 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Serbian (latin script) specific code.
+ *
+ * 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 Language
+ */
 
 /**
  * Serbian (latin script)
index f73e2ba..90d5761 100644 (file)
@@ -1,9 +1,31 @@
 <?php
+/**
+ * Tajik (Тоҷикӣ) specific code.
+ *
+ * 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 Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 
 /**
  * Converts Tajiki to latin orthography
+ *
  * @ingroup Language
  */
 class TgConverter extends LanguageConverter {
index 46a776b..27331cc 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Tigrinya (ትግርኛ) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Tigrinya (ትግርኛ)
  *
index f976bed..15bce76 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Tagalog (Tagalog) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Tagalog (Tagalog)
  *
index b6acea4..6a01566 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Turkish (Türkçe) specific code.
+ *
+ * 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 Language
+ */
+
 
 /**
  * Turkish (Türkçe)
index 8bca11b..6d147c8 100644 (file)
@@ -1,6 +1,29 @@
 <?php
+/**
+ * Tyvan (Тыва дыл) specific code.
+ *
+ * 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 Language
+ */
 
-/** Tyvan localization (Тыва дыл)
+/**
+ * Tyvan localization (Тыва дыл)
+ *
  * From friends at tyvawiki.org
  *
  * @ingroup Language
index 14e5d27..ce9ed33 100644 (file)
@@ -1,6 +1,28 @@
 <?php
+/**
+ * Ukrainian (українська мова) specific code.
+ *
+ * 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 Language
+ */
 
-/** Ukrainian (українська мова)
+/**
+ * Ukrainian (українська мова)
  *
  * @ingroup Language
  */
index 4a18663..8a4aca6 100644 (file)
@@ -1,13 +1,34 @@
 <?php
 /**
- * Walloon (Walon)
+ * Walloon (Walon) specific code.
+ *
+ * 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 Language
  */
 
-# NOTE: cweri après "NOTE:" po des racsegnes so des ratournaedjes
-# k' i gn a.
-
+/**
+ * Walloon (Walon)
+ *
+ * NOTE: cweri après "NOTE:" po des racsegnes so des ratournaedjes
+ * k' i gn a.
+ *
+ * @ingroup Language
+ */
 class LanguageWa extends Language {
        /**
         * Use singular form for zero
index 5492529..aef5215 100644 (file)
@@ -1,4 +1,26 @@
 <?php
+/**
+ * Cantonese (粵語) specific code.
+ *
+ * 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 Language
+ */
+
 /**
  * Cantonese (粵語)
  *
index d69929d..96eea7c 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Chinese specific code.
+ *
+ * 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 Language
+ */
 
 require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
 require_once( dirname( __FILE__ ) . '/LanguageZh_hans.php' );
index 671a16e..d95c42e 100644 (file)
@@ -1,4 +1,25 @@
 <?php
+/**
+ * Simplified Chinese specific code.
+ *
+ * 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 Language
+ */
 
 /**
  * Simplified Chinese
index 1643661..f3413ab 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Abanima
  * @author Csisc
  */
 
@@ -434,7 +435,7 @@ $1',
 'lineno' => 'سطر $1:',
 'compareselectedversions' => 'قارن بين النسختين المختارتين',
 'editundo' => 'تراجع',
-'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة|مراجعتان متوسطتان غير معروضتان|$1 مراجعات متوسطة غير معروضة|$1 مراجعة متوسطة غير معروضة}} أجراها {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
+'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتين أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
 
 # Search results
 'searchresults' => 'el resultats',
index 0aeeae0..0818bdc 100644 (file)
@@ -43,6 +43,9 @@ $namespaceAliases = array(
        'Espezial' => NS_SPECIAL,
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $magicWords = array(
        'redirect'                => array( '0', '#ENDRECERA', '#REENDRECERA', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ),
        'namespace'               => array( '1', 'ESPACIODENOMBRES', 'ESPACIODENOMBRE', 'NAMESPACE' ),
@@ -2075,7 +2078,7 @@ Contacto con l\'editor:
 correu-e: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Si no visita a pachina, no recibirá mas notificacions de futuros cambios cambios. 
+Si no visita a pachina, no recibirá mas notificacions de futuros cambios cambios.
 Tamién puet cambiar o modo de notificación d\'as pachinas que cosira en a suya lista de seguimiento.
 Atentament,
 O servicio de notificacions d\'o prochecto {{SITENAME}}
@@ -2145,7 +2148,7 @@ Torne t'a pachina anterior, recargue a pachina y torne a prebar alavez.",
 
 # Protect
 'protectlogpage' => 'Rechistro de proteccions de pachinas',
-'protectlogtext' => "Contino s'amuestra una lista de cambios en a protección d'as pachinas. 
+'protectlogtext' => "Contino s'amuestra una lista de cambios en a protección d'as pachinas.
 Se veiga a [[Special:ProtectedPages|lista de pachinas protechitas]] ta conoixer a lista de proteccions de pachinas actualment operacional.",
 'protectedarticle' => "s'ha protechito [[$1]]",
 'modifiedarticleprotection' => 's\'ha cambiato o livel de protección de "[[$1]]"',
@@ -3478,7 +3481,7 @@ Tamién puede fer servir o [[Special:EditWatchlist|editor estándar]].",
 'version-license' => 'Licencia',
 'version-poweredby-credits' => "Iste wiki funciona gracias a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'atros',
-'version-license-info' => "MediaWiki ye software libre, puet redistribuyir-lo y/u modificar-lo baixo os terminos d'a Licencia Publica Cheneral GNU publicada por a Free Software Foundation, ya siga d'a suya versión 2 u (a la suya esleción) qualsiquier versión posterior. 
+'version-license-info' => "MediaWiki ye software libre, puet redistribuyir-lo y/u modificar-lo baixo os terminos d'a Licencia Publica Cheneral GNU publicada por a Free Software Foundation, ya siga d'a suya versión 2 u (a la suya esleción) qualsiquier versión posterior.
 
 MediaWiki se distribuye con l'asperanza d'estar d'utilidat, pero SIN GARRA GUARANCIA; nian a guarancia implicita de COMERCIALIZACIÓN u ADEQUACIÓN TA UNA FINALIDAT DETERMINADA. En trobará más detalles en a Licencia Publica General GNU.
 
index 1fd86e5..86f78d2 100644 (file)
@@ -370,6 +370,7 @@ $specialPageAliases = array(
        'Filepath'                  => array( 'مسار_ملف' ),
        'Import'                    => array( 'استيراد' ),
        'Invalidateemail'           => array( 'تعطيل_البريد_الإلكتروني' ),
+       'JavaScriptTest'            => array( 'اختبار_جافا_سكريبت' ),
        'BlockList'                 => array( 'قائمة_المنع', 'عرض_المنع', 'قائمة_منع_أيبي' ),
        'LinkSearch'                => array( 'بحث_الوصلات' ),
        'Listadmins'                => array( 'عرض_الإداريين' ),
@@ -1256,6 +1257,7 @@ $2
 'expansion-depth-exceeded-category' => 'الصفحات التي حدث فيها تجاوز عمق التوسيع',
 'expansion-depth-exceeded-warning' => 'الصفحة تجاوزت عمق التوسيع',
 'parser-unstrip-loop-warning' => 'حلقة معراة تم الكشف عنها',
+'parser-unstrip-recursion-limit' => 'تعدى حد العودية Unstrip  ($1)',
 
 # "Undo" feature
 'undo-success' => 'يمكن استرجاع التعديل.
@@ -1444,7 +1446,7 @@ $1",
 'compareselectedversions' => 'قارن بين النسختين المختارتين',
 'showhideselectedversions' => 'أظهر/أخف المراجعات المختارة',
 'editundo' => 'تراجع',
-'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة|مراجعتان متوسطتان غير معروضتان|$1 مراجعات متوسطة غير معروضة|$1 مراجعة متوسطة غير معروضة}} أجراها {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
+'diff-multi' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتين أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} {{PLURAL:$2||مستخدم واحد|مستخدمان|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
 'diff-multi-manyusers' => '({{PLURAL:$1||مراجعة واحدة متوسطة غير معروضة أجراها|مراجعتان متوسطتان غير معروضتان أجراهما|$1 مراجعات متوسطة غير معروضة أجراها|$1 مراجعة متوسطة غير معروضة أجراها}} أكثر من {{PLURAL:$2||مستخدم واحد|مستخدمين|$2 مستخدمين|$2 مستخدمًا|$2 مستخدم}}.)',
 
 # Search results
@@ -2345,6 +2347,7 @@ $1',
 باستطاعتك جعل القائمة أكثر تحديداً، وذلك باختيار نوع السجل واسم المستخدم (حساس لحالة الحروف)، أو الصفحة المتأثرة (أيضاً حساس لحالة الحروف).',
 'logempty' => 'لا توجد مدخلات مطابقة في السجل.',
 'log-title-wildcard' => 'ابحث عن عناوين تبدأ بهذا النص',
+'showhideselectedlogentries' => 'إطهار/إخفاء سجلات الدخول المختارة',
 
 # Special:AllPages
 'allpages' => 'كل الصفحات',
@@ -2823,7 +2826,7 @@ $1',
 'unblockip' => 'رفع المنع عن المستخدم',
 'unblockiptext' => 'استخدم الاستمارة أدناه لاسترجاع صلاحية الكتابة الخاصة بعنوان أيبي أو مستخدم تم سحبها منه مسبقا.',
 'ipusubmit' => 'ارفع هذا المنع',
-'unblocked' => '[[User:$1|$1]] تم رفع منعه',
+'unblocked' => '[[User:$1|$1]] تم رفع المنع عنه',
 'unblocked-range' => 'تم إلغاء منع $1',
 'unblocked-id' => 'منع $1 تم رفعه',
 'blocklist' => 'المستخدمون الممنوعون',
@@ -2856,8 +2859,8 @@ $1',
 'change-blocklink' => 'تغيير المنع',
 'contribslink' => 'مساهمات',
 'emaillink' => 'أرسل بريدًا إلكترونيًا',
-'autoblocker' => 'تم منعك تلقائيا لأن الأيبي الخاص بك تم استخدامه مؤخراً بواسطة "[[User:$1|$1]]".
-السبب المعطى لمنع $1 هو: "$2"',
+'autoblocker' => 'تم منعك تلقائياً لأن الأيبي الخاص بك تم استخدامه مؤخراً بواسطة «[[User:$1|$1]]».
+السبب المعطى لمنع $1 هو: «$2»',
 'blocklogpage' => 'سجل المنع',
 'blocklog-showlog' => 'سبق منع هذا المستخدم.
 سجل المنع معروض بالأسفل كمرجع:',
@@ -2866,8 +2869,8 @@ $1',
 'blocklogentry' => 'منع "[[$1]]" لفترة زمنية مدتها $2 $3',
 'reblock-logentry' => 'غير إعدادات المنع ل[[$1]] بتاريخ انتهاء $2 $3',
 'blocklogtext' => 'هذا سجل بعمليات المنع ورفع المنع.
-عناوين الأيبي الممنوعة تلقائيا ليست معروضة.
-أنظر [[Special:BlockList|قائمة منع الآيبي]] لرؤية عمليات المنع المفعلة حاليا.',
+عناوين الأيبي الممنوعة تلقائياً غير معروضة.
+أنظر [[Special:BlockList|قائمة منع الآيبي]] لرؤية عمليات المنع المفعلة حالياً.',
 'unblocklogentry' => 'رفع منع $1',
 'block-log-flags-anononly' => 'المستخدمون المجهولون فقط',
 'block-log-flags-nocreate' => 'إنشاء الحسابات ممنوع',
@@ -2890,7 +2893,7 @@ $1',
 لكنه ممنوع كجزء من النطاق $2، والذي يمكن رفع المنع عنه.',
 'ip_range_invalid' => 'نطاق عناوين الأيبي المدخل غير صحيح.',
 'ip_range_toolarge' => 'لا يسمح بنطاقات المنع الأكبر من /$1',
-'blockme' => 'منعي',
+'blockme' => 'امنعني',
 'proxyblocker' => 'مانع البروكسي',
 'proxyblocker-disabled' => 'هذه الخاصية معطلة.',
 'proxyblockreason' => 'تم منع عنوان الأيبي الخاص بك لكونه بروكسي مفتوح.
index 90ae5ec..7c05478 100644 (file)
@@ -43,8 +43,10 @@ $namespaceAliases = array(
 );
 
 $specialPageAliases = array(
+       'Activeusers'               => array( 'ܡܦܠܚܢ̈ܐ_ܙܪ̄ܝܙܐ' ),
        'Allmessages'               => array( 'ܟܠ_ܐܓܪ̈ܬܐ' ),
        'Allpages'                  => array( 'ܟܠ_ܦܐܬܬ̈ܐ' ),
+       'Badtitle'                  => array( 'ܟܘܢܝܐ_ܠܐ_ܛܒܐ' ),
        'Blankpage'                 => array( 'ܦܐܬܐ_ܣܦܝܩܬܐ' ),
        'Categories'                => array( 'ܣܕܪ̈ܐ' ),
        'Contributions'             => array( 'ܫܘܬܦܘܝܬ̈ܐ' ),
@@ -58,10 +60,11 @@ $specialPageAliases = array(
        'Mycontributions'           => array( 'ܫܘܬܦܘܝܬ̈ܝ' ),
        'Mypage'                    => array( 'ܦܐܬܐ_ܕܝܠܝ' ),
        'Mytalk'                    => array( 'ܡܡܠܠܐ_ܕܝܠܝ' ),
+       'Myuploads'                 => array( 'ܐܣܩܬ̈ܐ_ܕܝܠܝ' ),
        'Newimages'                 => array( 'ܠܦܦ̈ܐ_ܚܕ̈ܬܐ', 'ܨܘܪ̈ܬܐ_ܚܕ̈ܬܬܐ' ),
        'Newpages'                  => array( 'ܦܐܬܬ̈ܐ_ܚܕ̈ܬܬܐ' ),
        'PermanentLink'             => array( 'ܐܣܘܪܐ_ܦܝܘܫܐ' ),
-       'Preferences'               => array( 'Ü\93Ü\92Ü\9dܬ̈ܐ' ),
+       'Preferences'               => array( 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܐ' ),
        'Protectedpages'            => array( 'ܦܐܬܬ̈ܐ_ܢܛܝܪ̈ܬܐ' ),
        'Protectedtitles'           => array( 'ܟܘܢܝ̈ܐ_ܢܛܝܪ̈ܐ' ),
        'Recentchanges'             => array( 'ܫܘܚܠܦ̈ܐ_ܚܕ̈ܬܐ' ),
@@ -69,6 +72,7 @@ $specialPageAliases = array(
        'Shortpages'                => array( 'ܦܐܬܬ̈ܐ_ܟܪ̈ܝܬܐ' ),
        'Specialpages'              => array( 'ܦܐܬܬ̈ܐ_ܕ̈ܝܠܢܝܬܐ' ),
        'Upload'                    => array( 'ܐܣܩ' ),
+       'Version'                   => array( 'ܨܚܚܐ' ),
        'Watchlist'                 => array( 'ܪ̈ܗܝܬܐ' ),
        'Whatlinkshere'             => array( 'ܡܐ_ܐܣܪ_ܠܗܪܟܐ' ),
 );
@@ -204,7 +208,7 @@ $messages = array(
 'qbbrowse' => 'ܡܦܐܬ',
 'qbedit' => 'ܫܚܠܦ',
 'qbpageoptions' => 'ܗܕܐ ܦܐܬܐ',
-'qbmyoptions' => 'Ü\93Ü\92Ü\9dܬÌ\88ܝ',
+'qbmyoptions' => 'Ü\95Ì\88ܦÜ\90 Ü\95Ü\9dÜ ܝ',
 'qbspecialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
 'faq' => 'ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
 'faqpage' => 'Project:ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
@@ -330,6 +334,7 @@ $1',
 'restorelink' => '{{PLURAL:$1|ܚܕ ܫܘܚܠܦܐ ܫܝܦܐ|$1 ܫܘܚܠܦ̈ܐ ܫܝܦ̈ܐ}}',
 'site-atom-feed' => '$1 ܛܥܝܡܘܬܐ ܕܐܛܘܡ',
 'page-atom-feed' => '"$1" ܛܥܝܡܘܬܐ ܕܐܛܘܡ',
+'feed-atom' => 'ܐܛܘܡ',
 'red-link-title' => '$1 (ܦܐܬܐ ܗܕܐ ܠܝܬ)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
@@ -352,7 +357,7 @@ $1',
 'error' => 'ܦܘܕܐ',
 'databaseerror' => 'ܦܘܕܐ ܒܐܣ ܝܕ̈ܥܬܐ',
 'missingarticle-rev' => '(ܬܢܝܬܐ#: $1)',
-'missingarticle-diff' => '(ܦܪÜ\9dÜ«Ü\98ܬܐ: $1, $2)',
+'missingarticle-diff' => '(ܦÜ\98ܪܫܐ: $1, $2)',
 'internalerror' => 'ܦܘܕܐ ܓܘܝܐ',
 'internalerror_info' => 'ܦܘܕܐ ܓܘܝܐ: $1',
 'badtitle' => 'ܟܘܢܝܐ ܠܐ ܛܒܐ',
@@ -377,14 +382,14 @@ $1',
 ܚܕ ܟܡܐ ܡܢ ܕ̈ܦܐ ܡܬܚܙܝܢ ܐܝܟ ܕܗܘ ܐܢܬ ܥܠܝܠܐ ܥܕܡܐ ܕܐܣܦܩܬ ܠܕ̈ܦܐ ܠܒܝܟ̈ܐ ܕܡܦܐܬܢܐ ܕܝܠܟ",
 'welcomecreation' => '== ܒܫܝܢܐ, $1! ==
 ܐܬܒܪܝ ܚܘܫܒܢܟ.
-Ü Ü\90 Ü¢Ü«Ü\90 Ü\90ܢܬ Ü Ü«Ü\9aܠܦܬÜ\90 Ü\95[[Special:Preferences|Ü\93Ü\92Ü\9dܬ̈ܐ ܒ {{SITENAME}}]].',
+Ü Ü\90 Ü¢Ü«Ü\90 Ü\90ܢܬ Ü Ü«Ü\9aܠܦܬÜ\90 Ü\95[[Special:Preferences|ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܐ ܒ {{SITENAME}}]].',
 'yourname' => 'ܫܡܐ ܕܡܦܠܚܢܐ:',
 'yourpassword' => 'ܡܠܬܐ ܕܥܠܠܐ:',
 'yourpasswordagain' => 'ܟܬܘܒ ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܬܐ ܐܚܪܬܐ:',
 'remembermypassword' => 'ܕܟܘܪ ܥܠܠܬܝ ܥܠ ܡܦܐܬܢܐ ܗܢܐ (ܠܡܬܚܐ ܥܠܝܐ ܕ $1 {{PLURAL:$1|ܝܘܡܐ|ܝܘܡܬ̈ܐ}})',
 'login' => 'ܥܘܠ',
 'nav-login-createaccount' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
-'loginprompt' => 'Ü\90ܠܨÜ\90 Ü Ü¡Ü¦Ü\90ܬܢÜ\90 Ü\95Ü\9dÜ Ü\9f Ü\95ܣܡÜ\9f Ü Ü©Ü\98Ü©Ü\9dÜ\99 (cookies) Ü Ü¥Ü Ü Ü¬Ü\90 Ü  {{SITENAME}}.',
+'loginprompt' => 'Ü\90ܠܨÜ\90 Ü Ü¡Ü¦Ü\90ܬܢÜ\90 Ü\95Ü\9dÜ Ü\9f Ü\95ܣܡÜ\9f Ü Ü©Ü\98Ü©Ü\9dÜ\99 (cookies) Ü Ü¥Ü Ü Ü¬Ü\90 Ü\92 {{SITENAME}}.',
 'userlogin' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
 'userloginnocreate' => 'ܥܘܠ',
 'logout' => 'ܦܠܘܛ',
@@ -446,7 +451,7 @@ $1',
 
 # Edit pages
 'summary' => 'ܦܣܝܩܬ̈ܐ ܕܫܘܚܠܦܐ:',
-'subject' => 'Ü¡Ü Ü\98Ü\90Ü\90¦ÜªÜ«Ü\93Ü¢ܐ ܪܫܝܐ:',
+'subject' => 'Ü¡Ü Ü\98Ü\90Ü\90¡Ü\98ܢܥܐ ܪܫܝܐ:',
 'minoredit' => 'ܗܢܐ ܗܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
 'watchthis' => 'ܪܗܝ ܦܐܬܐ ܗܕܐ',
 'savearticle' => 'ܠܒܘܟ ܕܦܐ',
@@ -512,9 +517,9 @@ $1',
 'last' => 'ܩܕܡ',
 'page_first' => 'ܩܕܡܝܐ',
 'page_last' => 'ܐܚܪܝܐ',
-'histlegend' => "Ü\93Ü\92Ü\9dÜ\90 Ü\95ܦܪÜ\9dÜ«Ü\98ܬÜ\90: Ü\93Ü\92Ü\9d Ü£Ü¢Ü\95Ì\88Ü\98Ü©Ü\90 Ü\95ܬܢÜ\9dܬÌ\88Ü\90 Ü Ü¦Ü\98Ü\9aÜ¡Ü\90 Ü\98Ü\95Ü\98Ü« '''Enter''' Ü\90Ü\98 '''ܦÜ\9aÜ\98Ü¡ Ü\92Ü\9dܬ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ'''.<br />
-Ü©Ü Ü\9dÜ\95Ü\90: '''({{int:cur}})''' = Ü¦ÜªÜ\9dÜ«Ü\98ܬܐ ܥܡ ܬܢܝܬܐ ܗܫܝܬܐ,
-'''({{int:last}})''' = Ü¦ÜªÜ\9dÜ«Ü\98ܬܐ ܥܡ ܬܢܝܬܐ ܩܕܝܡܬܐ, '''{{int:minoreditletter}}''' = ܫܘܚܠܦܐ ܙܥܘܪܐ.",
+'histlegend' => "Ü\93Ü\92Ü\9dÜ\90 Ü\95ܦÜ\98ܪܫÜ\90: Ü\93Ü\92Ü\9d Ü£Ü¢Ü\95Ì\88Ü\98Ü©Ü\90 Ü\95ܬܢÜ\9dܬÌ\88Ü\90 Ü Ü¦Ü\98Ü\9aÜ¡Ü\90 Ü\98Ü\95Ü\98Ü« '''Enter''' Ü\90Ü\98 '''ܦÜ\9aÜ\98Ü¡ Ü\92Ü\9dÜ¢Ü\9d ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ'''.<br />
+Ü©Ü Ü\9dÜ\95Ü\90: '''({{int:cur}})''' = Ü¦Ü\98ܪܫܐ ܥܡ ܬܢܝܬܐ ܗܫܝܬܐ,
+'''({{int:last}})''' = Ü¦Ü\98ܪܫܐ ܥܡ ܬܢܝܬܐ ܩܕܝܡܬܐ, '''{{int:minoreditletter}}''' = ܫܘܚܠܦܐ ܙܥܘܪܐ.",
 'history-fieldset-title' => 'ܡܦܐܬ ܬܫܥܝܬܐ',
 'history-show-deleted' => 'ܫܝܦܬ̈ܐ ܒܠܚܘܕ',
 'histfirst' => 'ܩܕܝܡ ܟܠ',
@@ -567,6 +572,9 @@ $1',
 
 # Diffs
 'history-title' => '"$1": ܬܫܥܝܬܐ ܕܬܢܝܬܐ',
+'difference-title' => '«$1»: ܦܘܪܫܐ ܒܝܢܝ ܬܢܝܬ̈ܐ',
+'difference-title-multipage' => '«$1» ܘ«$2»: ܦܘܪܫܐ ܒܝܢܝ ܬܢܝܬ̈ܐ',
+'difference-multipage' => '(ܦܘܪܫܐ ܒܝܢܝ ܕ̈ܦܐ)',
 'lineno' => 'ܣܪܛܐ $1:',
 'compareselectedversions' => 'ܦܚܘܡ ܒܝܬ ܬܪܝܢ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
 'showhideselectedversions' => 'ܚܘܝ/ܛܫܝ ܬܢܝܬ̈ܐ ܓܒܝܬ̈ܐ',
@@ -575,8 +583,8 @@ $1',
 'diff-multi-manyusers' => '({{PLURAL:$1|One ܚܕܐ ܬܢܝܬܐ ܡܨܥܝܬܐ|$1 ܬܢܝܬ̈ܐ ܡܨܥܝܬ̈ܐ}} ܒܝܕ ܝܬܝܪ ܡܢ $2 {{PLURAL:$2|ܚܕ ܡܦܠܚܢܐ ܠܐ ܓܠܝܚܬܐ|ܡܦܠܚܢ̈ܐ ܠܐ ܓܠܝܚܬ̈ܐ}})',
 
 # Search results
-'searchresults' => 'ܦܠÜ\9bÌ\88Ü\90 Ü\95Ü\92Ü\98ܨÜ\9dÜ\90',
-'searchresults-title' => 'ܦܠÜ\9bÌ\88Ü\90 Ü\95Ü\92Ü\98ܨÜ\9dÜ\90 Ü¥Ü  "$1"',
+'searchresults' => 'ܦܠܛ̈ܐ ܕܒܨܝܐ',
+'searchresults-title' => 'ܦܠܛ̈ܐ ܕܒܨܝܐ ܥܠ "$1"',
 'searchresulttext' => 'ܠܝܬܝܪ ܝܕ̈ܥܬܐ ܥܠ ܒܨܝܐ ܒ {{SITENAME}}, ܚܙܝ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => 'ܒܨܐ ܐܢܬ ܥܠ \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ܟܠ ܦܐܬܬ̈ܐ ܕܫܪܝܢ ܒ"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ܟܠ ܦܐܬܬ̈ܐ ܕܐܣܪܝܢ ܥܡ "$1"]])',
 'searchsubtitleinvalid' => "ܒܨܐ ܐܢܬ ܥܠ '''$1'''",
@@ -590,7 +598,7 @@ $1',
 'nextn-title' => '$1 {{PLURAL:$1|ܦܠܛܐ ܐܚܪܢܐ|ܦܠܛ̈ܐ ܐܚܪ̈ܢܐ}}',
 'shown-title' => 'ܚܘܝ $1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܠܟܠ ܦܐܬܐ',
 'viewprevnext' => 'ܚܘܝ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\92Ü\98ܨÜ\9dÜ\90',
+'searchmenu-legend' => 'ܓܒܝܬ̈ܐ ܕܒܨܝܐ',
 'searchmenu-exists' => "'''ܐܝܬ ܦܐܬܐ ܒܫܡ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ'''",
 'searchmenu-new' => "'''ܒܪܝ ܦܐܬܐ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ!'''",
 'searchhelp-url' => 'Help:ܚܒܝܫܬ̈ܐ',
@@ -625,20 +633,20 @@ $1',
 'powersearch-togglelabel' => 'ܓܒܝ:',
 'powersearch-toggleall' => 'ܟܠ',
 'powersearch-togglenone' => 'ܠܐ ܡܕܡ',
-'search-external' => 'Ü\92Ü\98ܨÜ\9dÜ\90 Ü\92ܪÜ\9dÜ\90',
+'search-external' => 'ܒܨܝܐ ܒܪܝܐ',
 
 # Quickbar
 'qbsettings-none' => 'ܠܐ ܡܕܡ',
 
 # Preferences page
-'preferences' => 'Ü\93Ü\92Ü\9dܬ̈ܐ',
-'mypreferences' => 'Ü\93Ü\92Ü\9dܬ̈ܝ',
+'preferences' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܐ',
+'mypreferences' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܝ',
 'prefs-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ:',
 'prefsnologin' => 'ܠܝܬܝܟ ܥܠܝܠܐ',
 'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
 'prefs-skin' => 'ܓܠܕܐ',
 'skin-preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
-'datedefault' => 'Ü Ü\90 Ü\93Ü\92Ü\9dܬܐ',
+'datedefault' => 'Ü Ü\90 Ü¨Ü\92Ü\9dÜ¢Ü\9dÜ\98ܬܐ',
 'prefs-datetime' => 'ܣܝܩܘܡܐ ܘܙܒܢܐ',
 'prefs-personal' => 'ܦܘܓܪܦܐ ܕܡܦܠܚܢܐ',
 'prefs-rc' => 'ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ',
@@ -658,7 +666,7 @@ $1',
 'resultsperpage' => 'ܡܢܝܢܐ ܕܦܠܛ̈ܐ ܒܕܦܐ:',
 'recentchangesdays' => 'ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ:',
 'recentchangescount' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ ܠܚܙܝܐ ܪܫܐܝܬ:',
-'savedprefs' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\9dÜ ܟ ܐܬܠܒܟܘ.',
+'savedprefs' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬÌ\88ܟ ܐܬܠܒܟܘ.',
 'timezonelegend' => 'ܙܘܢܐ ܙܒܢܝܐ:',
 'localtime' => 'ܥܕܢܐ ܕܘܟܬܝܐ:',
 'timezoneregion-africa' => 'ܐܦܪܝܩܐ',
@@ -670,7 +678,7 @@ $1',
 'timezoneregion-europe' => 'ܐܘܪܘܦܐ',
 'timezoneregion-indian' => 'ܐܘܩܝܢܘܣ ܗܢܕܘܝܐ',
 'timezoneregion-pacific' => 'ܐܘܩܝܢܘܣ ܫܩܛܝܐ',
-'prefs-searchoptions' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\92Ü\98ܨÜ\9dÜ\90',
+'prefs-searchoptions' => 'ܓܒܝܬ̈ܐ ܕܒܨܝܐ',
 'prefs-namespaces' => 'ܚܩܠܬ̈ܐ',
 'defaultns' => 'ܐܘ ܒܨܝ ܒܚܩܠܬ̈ܐ ܗܢܝܢ',
 'prefs-files' => 'ܠܦܦ̈ܐ',
@@ -699,9 +707,9 @@ $1',
 'prefs-advancedrendering' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
 'prefs-advancedsearchoptions' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
 'prefs-advancedwatchlist' => 'ܓܒܝܬ̈ܐ ܡܬܩܕ̈ܡܢܐ',
-'prefs-displayrc' => 'Ü\9aÜ\98Ü\9d Ü\93Ü\92Ü\9dܬÌ\88ܐ',
-'prefs-displaysearchoptions' => 'Ü\9aÜ\98Ü\9d Ü\93Ü\92Ü\9dܬÌ\88ܐ',
-'prefs-displaywatchlist' => 'Ü\9aÜ\98Ü\9d Ü\93Ü\92Ü\9dܬÌ\88ܐ',
+'prefs-displayrc' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\9aÜ\98Ü\98Ü\9dܐ',
+'prefs-displaysearchoptions' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\9aÜ\98Ü\98Ü\9dܐ',
+'prefs-displaywatchlist' => 'Ü\93Ü\92Ü\9dܬÌ\88Ü\90 Ü\95Ü\9aÜ\98Ü\98Ü\9dܐ',
 'prefs-diffs' => 'ܦܪ̈ܝܫܘܝܬܐ',
 
 # User rights
@@ -774,7 +782,7 @@ $1',
 'action-delete' => 'ܫܝܦܬܐ ܕܦܐܬܐ ܗܕܐ',
 'action-deleterevision' => 'ܫܝܦܬܐ ܕܬܢܝܬܐ ܗܕܐ',
 'action-deletedhistory' => 'ܚܙܝܬܐ ܕܬܫܥܝܬܐ ܫܝܦܬܐ ܕܦܐܬܐ ܗܕܐ',
-'action-browsearchive' => 'Ü\92Ü\98ܨÜ\9dÜ\90 Ü¥Ü  Ü¦Ü\90ܬܬÌ\88Ü\90 Ü«Ü\9dܦܬÌ\88Ü\90',
+'action-browsearchive' => 'ܒܨܝܐ ܥܠ ܦܐܬܬ̈ܐ ܫܝܦܬ̈ܐ',
 'action-undelete' => 'ܠܐ ܫܘܦ ܦܐܬܐ ܗܕܐ',
 'action-suppressionlog' => 'ܚܙܝܬܐ ܕܗܢܐ ܣܓܠܐ ܦܪܨܘܦܝܐ',
 'action-block' => 'ܚܪܡܬܐ ܕܡܦܠܚܢܐ ܗܢܐ ܡܢ ܫܚܠܦܬܐ',
@@ -796,7 +804,7 @@ $1',
 'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ',
 'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ',
 'rclinks' => 'ܚܘܝ $1 ܫܘܚܠܦ̈ܐ ܐܚܪ̈ܝܐ ܒ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ<br />$3',
-'diff' => 'ܦܪÜ\9dÜ«Ü\98ܬܐ',
+'diff' => 'ܦÜ\98ܪܫܐ',
 'hist' => 'ܬܫܥܝܬܐ',
 'hide' => 'ܛܫܝ',
 'show' => 'ܚܘܝ',
@@ -857,6 +865,7 @@ $1',
 'http-read-error' => 'HTTP ܦܘܕܐ ܒܩܪܝܬܐ.',
 'http-curl-error' => 'ܦܘܕܐ ܒܫܟܚܐ ܕURL: $1',
 
+'license-header' => 'ܦܣܣܐ',
 'license-nopreview' => '(ܠܝܬ ܚܝܪܐ ܩܕܡܝܐ)',
 'upload_source_file' => ' (ܠܦܦܐ ܥܠ ܚܫܘܒܬܐ ܕܝܠܟ)',
 
@@ -928,8 +937,9 @@ $1',
 'randomredirect-nopages' => 'ܠܝܬ ܨܘܝܒ̈ܐ ܒܚܩܠܐ ܕ"$1".',
 
 # Statistics
+'statistics' => 'ܡܢܝܢܘܬ',
 'statistics-pages' => 'ܦܐܬܬ̈ܐ',
-'statistics-users-active' => 'ܡܦܠÜ\9aÜ¢Ì\88Ü\90 Ü\9fÜ«Ü\9dܪÌ\88ܐ',
+'statistics-users-active' => 'ܡܦܠÜ\9aÜ¢Ì\88Ü\90 Ü\99ܪÌ\84Ü\9dÜ\99ܐ',
 
 'disambiguations' => 'ܦܐܬܬ̈ܐ ܐܣܝܪ̈ܬܐ ܒܦܐܬܬ̈ܐ ܕܬܘܚܡܐ ܐܚܪܢܐ',
 'disambiguationspage' => 'Template:ܬܘܚܡܐ ܐܚܪܢܐ',
@@ -1044,7 +1054,7 @@ $1',
 'listusers-blocked' => '(ܚܪܝܡܐ)',
 
 # Special:ActiveUsers
-'activeusers' => 'Ü¡Ü\9fܬÜ\92Ü\98ܬÜ\90 Ü\95Ü\97Ü\95Ì\88Ü¡Ü\90 Ü\9fÜ«Ü\9dܪÌ\88ܐ',
+'activeusers' => 'Ü¡Ü\9fܬÜ\92Ü\98ܬÜ\90 Ü\95Ü\97Ü\95Ì\88Ü¡Ü\90 Ü\99ܪÌ\84Ü\9dÜ\99ܐ',
 'activeusers-count' => '$1 {{PLURAL:$1|ܫܘܚܠܦܐ ܚܕܬܐ|ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ}} ܒ {{PLURAL:$3|ܝܘܡܐ ܐܚܪܝܐ|$3 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ}}',
 'activeusers-from' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܕܫܪܐ ܥܡ:',
 'activeusers-hidebots' => 'ܛܫܝ ܒܘܬ̈ܐ (bots)',
@@ -1068,7 +1078,7 @@ $1',
 'listgrouprights-removegroup-self-all' => 'ܠܚܝ ܟܠ ܟܢܘܫܬ̈ܐ ܡܢ ܚܘܫܒܢܗ ܕܝܠܢܝܐ',
 
 # E-mail user
-'mailnologin' => 'Ü Ü\9dܬ Ü¦ÜªÜ«Ü\93Ü¢ܐ',
+'mailnologin' => 'Ü Ü\9dܬ Ü¡Ü\98ܢܥÜ\90 Ü Ü«Ü\98Ü\95ܪܐ',
 'emailuser' => 'ܫܕܪ ܐܓܪܬܐ ܠܗܢܐ ܡܦܠܚܢܐ',
 'emailpage' => 'ܫܕܪ ܐܓܪܬܐ ܒܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܠܡܦܠܚܢܐ',
 'defemailsubject' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ  ܡܢ ܡܦܠܚܢܐ "$1"',
@@ -1099,7 +1109,7 @@ $1',
 'unwatch' => 'ܠܐ ܪܗܝ',
 'unwatchthispage' => 'ܟܠܝ ܪܗܝܐ',
 'wlshowlast' => 'ܚܘܝ $1 ܫܥܬ̈ܐ $2 ܝܘܡܬ̈ܐ ܐܚܪ̈ܝܐ $3',
-'watchlist-options' => 'Ü\93Ü\92Ü\9dܬ̈ܐ ܕܪ̈ܗܝܬܐ',
+'watchlist-options' => 'ܨÜ\92Ü\9dÜ¢Ü\9dÜ\98ܬ̈ܐ ܕܪ̈ܗܝܬܐ',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'ܪܗܝܐ...',
@@ -1116,8 +1126,8 @@ $1',
 # Delete
 'deletepage' => 'ܫܘܦ ܦܐܬܐ',
 'confirm' => 'ܚܬܬ',
-'excontent' => "ܚܒܝܫܬ̈ܐ ܗܘܬ: '$1'",
-'excontentauthor' => "ܚܒܝܫܬ̈ܐ ܗܘܬ: '$1' (ܘܫܘܬܦܢܐ ܝܚܝܕܝܐ ܗܘܐ '[[Special:Contributions/$2|$2]]')",
+'excontent' => "ܚܒܝܫܬ̈ܐ ܗܘ̈ܝ: '$1'",
+'excontentauthor' => "ܚܒܝܫܬ̈ܐ ܗܘ̈ܝ: '$1' (ܘܫܘܬܦܢܐ ܝܚܝܕܝܐ ܗܘܐ '[[Special:Contributions/$2|$2]]')",
 'exblank' => 'ܦܐܬܐ ܣܦܝܩܬܐ ܗܘܐ',
 'delete-confirm' => 'ܫܘܦ "$1"',
 'delete-legend' => 'ܫܘܦ',
@@ -1133,6 +1143,7 @@ $1',
 # Rollback
 'rollbacklink' => 'ܐܦܢܝ',
 'editcomment' => "ܦܣܝܩܬ̈ܐ ܕܫܘܚܠܦܐ ܗܘܐ: \"''\$1''\".",
+'revertpage' => 'ܐܗܦܟ ܫܘܚܠܦ̈ܐ ܒܝܕ [[Special:Contributions/$2|$2]] ([[User talk:$2|ܡܡܠܐ]]) ܠܬܢܝܬܐ ܐܚܪܝܬܐ ܒܝܕ [[User:$1|$1]]',
 
 # Edit tokens
 'sessionfailure-title' => 'ܡܘܬܒܐ ܠܐ ܢܨܚܬ',
@@ -1149,14 +1160,14 @@ $1',
 'protect-fallback' => 'ܒܥܝ "$1" ܦܣܣܐ',
 'protect-level-autoconfirmed' => 'ܚܪܘܡ ܡܦܠܚܢ̈ܐ ܚܕ̈ܬܐ ܘܠܐ ܥܠܝܠ̈ܐ',
 'protect-level-sysop' => 'ܡܕܒܪ̈ܢܐ ܒܠܚܘܕ',
-'protect-expiring' => 'ܦܪܩ ܒ $1 (UTC)',
-'protect-expiry-indefinite' => 'Ü\95Ü Ü\90 Ü£Ü\9f',
+'protect-expiring' => 'ܬܦܪÜ\98ܩ ܒ $1 (UTC)',
+'protect-expiry-indefinite' => 'ܠܥܠܡ',
 'protect-othertime' => 'ܥܕܢܐ ܐܚܪܬܐ:',
 'protect-othertime-op' => 'ܥܕܢܐ ܐܚܪܬܐ',
 'protect-otherreason' => 'ܥܠܬܐ ܐܚܪܬܐ/ܢܩܝܦܬܐ:',
 'protect-otherreason-op' => 'ܥܠܬܐ ܐܚܪܬܐ',
 'protect-edit-reasonlist' => 'ܫܚܠܦ ܥܠܬܐ ܕܢܛܪܐ',
-'protect-expiry-options' => '1 Ü«Ü¥Ü¬Ü\90:1 hour,1 Ü\9dÜ\98Ü¡Ü\90:1 day,1 Ü«Ü\92Ü\98Ü¥Ü\90:1 week,2 Ü«Ü\92Ü\98Ü¥Ì\88Ü\90:2 weeks,1 Ü\9dܪÜ\9aÜ\90:1 month,3 Ü\9dܪÌ\88Ü\9aÜ\90:3 months,6 Ü\9dܪÌ\88Ü\9aÜ\90:6 months,1 Ü«Ü¢Ü¬Ü\90:1 year,Ü\95Ü Ü\90 Ü£Ü\9f:infinite',
+'protect-expiry-options' => '1 Ü«Ü¥Ü¬Ü\90:1 hour,1 Ü\9dÜ\98Ü¡Ü\90:1 day,1 Ü«Ü\92Ü\98Ü¥Ü\90:1 week,2 Ü«Ü\92Ü\98Ü¥Ì\88Ü\90:2 weeks,1 Ü\9dܪÜ\9aÜ\90:1 month,3 Ü\9dܪÌ\88Ü\9aÜ\90:3 months,6 Ü\9dܪÌ\88Ü\9aÜ\90:6 months,1 Ü«Ü¢Ü¬Ü\90:1 year,ܠܥܠܡ:infinite',
 'restriction-type' => 'ܦܣܣܐ:',
 'minimum-size' => 'ܡܬܚܐ ܬܚܬܝܐ  ܕܥܓܪܐ',
 'maximum-size' => 'ܡܬܚܐ ܥܠܝܐ ܕܥܓܪܐ',
@@ -1221,6 +1232,7 @@ $1',
 'sp-contributions-userrights' => 'ܕܘܒܪܐ ܕܙܕ̈ܩܐ ܕܡܦܠܚܢܐ',
 'sp-contributions-search' => 'ܒܨܝ ܫܘܬܦܘܝܬ̈ܐ',
 'sp-contributions-username' => 'ܐܝ ܦܝ (IP) ܐܘ ܫܡܐ ܕܡܦܠܚܢܐ:',
+'sp-contributions-toponly' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܕܗܢܘܢ ܬܢܝܬ̈ܐ ܐܚܪ̈ܝܬܐ ܒܠܚܘܕ',
 'sp-contributions-submit' => 'ܒܨܝ',
 
 # What links here
@@ -1251,7 +1263,7 @@ $1',
 'ipbreasonotherlist' => 'ܥܠܬܐ ܐܚܪܬܐ',
 'ipbsubmit' => 'ܚܪܘܡ ܡܦܠܚܢܐ ܗܢܐ',
 'ipbother' => 'ܥܕܢܐ ܐܚܪܬܐ',
-'ipboptions' => '2 Ü«Ü¥Ü¬Ì\88Ü\90:2 hours,1 Ü\9dÜ\98Ü¡Ü\90:1 day,3 Ü\9dÜ\98ܡܬÌ\88Ü\90:3 days,1 Ü«Ü\92Ü\98Ü¥Ü\90:1 week,2 Ü«Ü\92Ü\98Ü¥Ì\88Ü\90:2 weeks,1 Ü\9dܪÜ\9aÜ\90:1 month,3 Ü\9dܪÌ\88Ü\9aÜ\90:3 months,6 Ü\9dܪÌ\88Ü\9aÜ\90:6 months,1 Ü«Ü¢Ü¬Ü\90:1 year,Ü\95Ü Ü\90 Ü£Ü\9f:infinite',
+'ipboptions' => '2 Ü«Ü¥Ü¬Ì\88Ü\90:2 hours,1 Ü\9dÜ\98Ü¡Ü\90:1 day,3 Ü\9dÜ\98ܡܬÌ\88Ü\90:3 days,1 Ü«Ü\92Ü\98Ü¥Ü\90:1 week,2 Ü«Ü\92Ü\98Ü¥Ì\88Ü\90:2 weeks,1 Ü\9dܪÜ\9aÜ\90:1 month,3 Ü\9dܪÌ\88Ü\9aÜ\90:3 months,6 Ü\9dܪÌ\88Ü\9aÜ\90:6 months,1 Ü«Ü¢Ü¬Ü\90:1 year,ܠܥܠܡ:infinite',
 'ipbotheroption' => 'ܐܚܪܢܐ',
 'ipbotherreason' => 'ܥܠܬܐ ܐܚܪܬܐ/ܢܩܝܦܬܐ:',
 'ipbhidename' => 'ܛܫܝ ܫܡܐ ܕܡܦܠܚܢܐ ܡܢ ܫܘܚܠܦ̈ܐ ܘܡܟܬܒܘܬ̈ܐ',
@@ -1268,7 +1280,7 @@ $1',
 'ipblocklist-legend' => 'ܐܫܟܚ ܡܦܠܚܢܐ ܡܚܪܡܐ',
 'ipblocklist-submit' => 'ܒܨܝ',
 'ipblocklist-localblock' => 'ܚܪܡܐ ܕܘܟܬܢܝܐ',
-'infiniteblock' => 'Ü\95Ü Ü\90 Ü£Ü\9f',
+'infiniteblock' => 'ܠܥܠܡ',
 'anononlyblock' => 'ܠܐ ܝܕ̈ܝܥܐ ܒܠܚܘܕ',
 'ipblocklist-empty' => 'ܣܓܠܐ ܕܚܪܡܐ ܣܦܝܩܐ.',
 'blocklink' => 'ܚܪܘܡ',
@@ -1346,6 +1358,17 @@ Do you want to change the settings?',
 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|ܬܢܝܬܐ |ܬܢܝܬ̈ܐ}}',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|ܬܢܝܬܐ |ܬܢܝܬ̈ܐ}} ܡܢ $2',
 
+# Tooltip help for the actions
+'tooltip-pt-preferences' => 'Your preferences',
+'tooltip-pt-login' => 'ܛܒ ܐܢܬ ܕܣܓܠ ܥܠܠܐ، ܐܠܐ ܗܢܐ ܠܘ ܐܠܨܝܐ',
+'tooltip-pt-logout' => 'ܦܠܛܐ',
+'tooltip-ca-talk' => 'ܡܡܠܠܐ ܥܠ ܚܒܝܫܬܐ ܕܦܐܬܐ',
+'tooltip-ca-protect' => 'ܢܛܘܪ ܗܕܐ ܦܐܬܐ',
+'tooltip-ca-delete' => 'ܫܘܦ ܦܐܬܐ ܗܕܐ',
+'tooltip-n-randompage' => 'ܦܬܘܟ ܡܓܠܬܐ ܚܘܝܚܬܐ',
+'tooltip-t-emailuser' => 'ܫܕܪ ܐܓܪܬܐ ܠܗܢܐ ܡܦܠܚܢܐ',
+'tooltip-save' => 'ܠܒܘܟ ܫܘܚܠܦܟ',
+
 # Attribution
 'anonymous' => '{{PLURAL:$1|ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ|ܡܦܠܚܢ̈ܐ ܠܐ ܝܕ̈ܝܥܐ}} ܕ {{SITENAME}}',
 'siteuser' => '{{SITENAME}} ܡܦܠܚܢܐ $1',
@@ -1393,7 +1416,7 @@ $1',
 'exif-filesource' => 'ܡܒܘܥܐ ܕܠܦܦܐ',
 'exif-gpsspeedref' => 'ܚܕܝܘܬܐ ܕܩܠܘܠܘܬܐ',
 'exif-gpstrack' => 'ܨܘܒܐ ܕܫܘܢܝܐ',
-'exif-gpsimgdirectionref' => 'Ü\93Ü\92Ü\9dܬÜ\90 Ü\95ܨÜ\98Ü\92Ü\90 Ü\95Ü«Ü\98Ü¢Ü\9dܐ',
+'exif-gpsimgdirectionref' => 'Ü¡Ü\92Ü\98Ü¥Ü\90 Ü\95ܨÜ\98Ü\92Ü\90 Ü\95ܨÜ\98ܪܬܐ',
 'exif-gpsimgdirection' => 'ܨܘܒܐ ܕܨܘܪܬܐ',
 'exif-languagecode' => 'ܠܫܢܐ',
 
@@ -1494,6 +1517,7 @@ $1',
 # Watchlist editing tools
 'watchlisttools-view' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܕ̈ܡܝܐ',
 'watchlisttools-edit' => 'ܚܙܝ ܘܫܚܠܦ ܪ̈ܗܝܬܐ',
+'watchlisttools-raw' => 'ܫܚܠܦ ܪ̈ܗܝܬܐ ܦܛܝܪ̈ܬܐ',
 
 # Special:Version
 'version' => 'ܨܚܚܐ',
@@ -1546,6 +1570,7 @@ $1',
 'htmlform-selectorother-other' => 'ܐܚܪܢܐ',
 
 # New logging system
+'logentry-delete-delete' => '$1 ܫܦ ܕܦܐ ܕ $3',
 'logentry-move-move' => '$1 ܫܢܐ ܕܦܐ ܕ $3 ܠ $4',
 'logentry-move-move-noredirect' => '$1 ܫܢܐ ܕܦܐ ܕ $3 ܠ $4 ܕܠܐ ܫܒܩܐ ܕܕܦܐ ܕܨܘܝܒܐ',
 'logentry-move-move_redir' => '$1 ܫܢܐ ܕܦܐ ܕ $3 ܠ $4 ܕܐܝܬܘܗܝ ܗܘܐ ܕܦܐ ܕܨܘܝܒܐ',
@@ -1553,6 +1578,7 @@ $1',
 'logentry-newusers-newusers' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ',
 'logentry-newusers-create' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ',
 'logentry-newusers-create2' => '$1 ܒܪܐ ܚܘܫܒܢܐ ܕܡܦܠܚܢܐ $3',
+'logentry-newusers-autocreate' => 'ܚܘܫܒܢܐ $1 ܐܬܒܪܝ ܝܬܐܝܬ',
 'newuserlog-byemail' => 'ܡܠܬܐ ܕܥܠܠܐ ܐܫܬܕܪܬ ܒܝܕ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
 
 # Feedback
index 8e90cd9..dd00e1c 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Araucanian (Mapudungun)
+/** Araucanian (mapudungun)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 4c9e237..5c322b5 100644 (file)
@@ -166,7 +166,7 @@ $magicWords = array(
        'revisiontimestamp'       => array( '1', 'طابع_وقت_المراجعة', 'REVISIONTIMESTAMP' ),
        'revisionuser'            => array( '1', 'مستخدم_المراجعة', 'REVISIONUSER' ),
        'plural'                  => array( '0', 'جمع:', 'PLURAL:' ),
-       'fullurl'                 => array( '0', 'مسار_كامل:', 'عنوان_كامل:', 'FULLURL:' ),
+       'fullurl'                 => array( '0', 'مسار_كامل:', 'FULLURL:' ),
        'fullurle'                => array( '0', 'عنوان_كامل:', 'مسار_كامل:', 'FULLURLE:' ),
        'lcfirst'                 => array( '0', 'عنوان_كبير:', 'LCFIRST:' ),
        'ucfirst'                 => array( '0', 'عنوان_صغير:', 'UCFIRST:' ),
index 40a1649..c8f87e1 100644 (file)
@@ -495,7 +495,9 @@ $2',
 'titleprotected' => "[[User:$1|$1]] সদস্যজনে এই শিৰোণামাৰ লিখনী লিখা ৰোধ কৰিছে ।
 ইয়াৰ কাৰণ হৈছে ''$2'' ।",
 'filereadonlyerror' => '"$1" ফাইলটোক পৰিৱৰ্তন কৰিব পৰা নগ\'ল কাৰণ ফাইল ভঁৰাল "$2" কেৱল পঢ়িব পৰা অৱস্থাত আছে।
-দৰ্শোৱা কাৰণ হৈছে "\'\'$3\'\'"।',
+যিজন প্ৰশাসকে এইটো বন্ধ কৰিছে তেওঁ দৰ্শোৱা কাৰণ হৈছে: \'\'$3\'\'।',
+'invalidtitle-knownnamespace' => 'নামস্থান "$2" আৰু পাঠ্য "$3" থকা অবৈধ শিৰোনাম',
+'invalidtitle-unknownnamespace' => 'অজ্ঞাত নামস্থান সংখ্যা $1 আৰু পাঠ্য "$2" থকা অবৈধ শিৰোনাম',
 
 # Virus scanner
 'virus-badscanner' => "ভুল কনফিগাৰেচন: অজ্ঞাত ভাইৰাছ স্কেনাৰ: ''$1''",
@@ -787,6 +789,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'note' => "'''টোকা:'''",
 'previewnote' => "'''মনত ৰাখিব এয়া মাথোন প্ৰাক্‌দৰ্শনহে।'''
 আপোনাৰ সালসলনিসমূহ এতিয়াও সংৰক্ষণ কৰা হোৱা নাই!",
+'continue-editing' => 'সম্পাদনা জাৰী ৰাখক',
 'previewconflict' => 'এই প্ৰাকদৰ্শনে ওপৰৰ সম্পাদনা ক্ষেত্ৰৰ লেখা সাঁচি ৰাখিলে যেনেকুৱা দেখা যাব তেনেকুৱা দেখাইছে ।',
 'session_fail_preview' => "'''দুঃখিত! চেচন ডাটা হেৰাই যোৱাৰ কাৰণে আপোনাৰ সম্পাদনা কৃতকাৰ্য্য নহ'ল ।'''
 অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক ।
@@ -887,6 +890,12 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'parser-template-loop-warning' => 'সাঁচ লুপ চিহ্নিত কৰা হৈছে: [[$1]]',
 'parser-template-recursion-depth-warning' => 'সাঁচৰ পুনৰাবৃত্তি গভীৰতা সীমা ($1) তকৈ অধিক হৈছে',
 'language-converter-depth-warning' => 'ভাষা পৰিৱৰ্তকৰ গভীৰতা সীমাই ($1) অতিক্ৰম কৰিছে',
+'node-count-exceeded-category' => "ন'ড-গণনা বেছি হোৱা পৃষ্ঠাসমূহ",
+'node-count-exceeded-warning' => "পৃষ্ঠাৰ ন'ড-গণনা বেছি হৈছে",
+'expansion-depth-exceeded-category' => 'বিস্তৃতি গভীৰতা বেছি হোৱা পৃষ্ঠা',
+'expansion-depth-exceeded-warning' => 'পৃষ্ঠাখনৰ বিস্তৃতি গভীৰতা বেছি হৈছে',
+'parser-unstrip-loop-warning' => 'আন্‌ষ্ট্ৰীপ লুপ চিনাক্ত কৰা হৈছে',
+'parser-unstrip-recursion-limit' => 'আন্‌ষ্ট্ৰিপ ৰিকাৰ্ছন সীমা অতিক্ৰম হৈছে ($1)',
 
 # "Undo" feature
 'undo-success' => 'এই সম্পাদনা পূৰ্ববৎ কৰিব পাৰি ।
@@ -1068,6 +1077,8 @@ $1",
 
 # Diffs
 'history-title' => '"$1" ৰ সংশোধনৰ ইতিহাস',
+'difference-title' => '"$1"ৰ বিভিন্ন সংধোধনৰ মাজৰ পাৰ্থক্যসমূহ',
+'difference-title-multipage' => '"$1" আৰু "$2" পৃষ্ঠাৰ মাজৰ পাৰ্থক্যসমূহ',
 'difference-multipage' => '(পৃষ্ঠাসমূহৰ মাজত তফাৎ)',
 'lineno' => '$1 নং শাৰীঃ',
 'compareselectedversions' => 'নিৰ্বাচিত কৰা সংকলন সমূহৰ মাজত পাৰ্থক্য চাওক',
@@ -1165,6 +1176,7 @@ $1",
 'prefs-beta' => 'বিটা বৈশিষ্টসমূহ',
 'prefs-datetime' => 'তাৰিখ আৰু সময়',
 'prefs-labs' => 'পৰীক্ষাগাৰ বৈশিষ্টসমূহ',
+'prefs-user-pages' => 'সদস্য পৃষ্ঠাসমূহ',
 'prefs-personal' => 'সদস্যৰ বিৱৰণ',
 'prefs-rc' => 'শেহতীয়া সাল-সলনি',
 'prefs-watchlist' => 'লক্ষ্য তালিকা',
@@ -1631,13 +1643,14 @@ URL টোৰ বৈধতা বিচাৰ কৰি পুনৰ চেষ
 'backend-fail-closetemp' => "অস্থায়ী ফাইল বন্ধ কৰিব পৰা নগ'ল।",
 'backend-fail-read' => "$1 ফাইলটো পঢ়িব পৰা নগ'ল",
 'backend-fail-create' => "$1 ফাইলটো সৃষ্টি কৰিব পৰা নগ'ল।",
-'backend-fail-maxsize' => "$1 ফাইলটো সৃষ্টি কৰিব পৰা নগ'ল কিয়নো ইয়াৰ আকাৰ {{PLURAL:$2|$2 বাইটতকৈ|$2 বাইটতকৈ}} বেছি।",
+'backend-fail-maxsize' => "$1 ফাইলটো সৃষ্টি কৰিব পৰা নগ'ল কিয়নো ইয়াৰ আকাৰ {{PLURAL:$2|এক বাইটতকৈ|$2 বাইটতকৈ}} বেছি।",
 'backend-fail-readonly' => 'ষ্ট\'ৰেজ বেক্‌এণ্ড "$1"ক কেৱল পঢ়িব পৰা যায়। ইয়াৰ কাৰণ হ\'ল: "$2"',
 'backend-fail-synced' => '"$1" ফাইলটো আভ্যন্তৰীণ ষ্ট\'ৰেজ বেক্‌এণ্ডৰ লগত অসঙ্গত অৱস্থাত আছে',
 'backend-fail-connect' => '"$1" ষ্ট\'ৰেজ বেক্‌এণ্ডৰ লগত সম্পৰ্ক স্থাপন কৰিব পৰা নগ\'ল।',
 'backend-fail-internal' => 'ষ্ট\'ৰেজ বেক্‌এণ্ড "$1"ত এক অজ্ঞাত ত্ৰুটী ঘটিছে।',
 'backend-fail-contenttype' => '"$1"ত সাঁচি থ\'বলৈ ফাইলটোৰ সমল প্ৰকাৰ স্থিৰ কৰিব পৰা নগ\'ল।',
 'backend-fail-batchsize' => "$1টা ফাইল {{PLURAL:$1|কাৰ্যৰ|কাৰ্যৰ}} ষ্ট'ৰেজ বেকএ'ণ্ড দিয়া হৈছে; সীমা হৈছে $2টা {{PLURAL:$2|কাৰ্য|কাৰ্য}}।",
+'backend-fail-usable' => "অপৰ্যাপ্ত অনুমতি বা হেৰোৱা নিৰ্দেশিকা/সমলৰ বাবে $1 ফাইলটো লিখিব পৰা নগ'ল।",
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'ষ্ট\'ৰেজ বেকএ\'ণ্ড "$1"ৰ বাবে জাৰ্ণাল তথ্যকোষৰ লগত সংযোগ স্থাপন নহ\'ল।',
@@ -1962,6 +1975,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 আপুনি ল’গৰ প্ৰকাৰ, সদস্যৰ নাম বা পৃষ্ঠাখনৰ নাম নিৰ্বাচন কৰি প্ৰদৰ্শনটোৰ আকাৰ সৰু কৰিব পাৰে ।',
 'logempty' => 'কোনো মিল থকা আইটেম লগত নাই ।',
 'log-title-wildcard' => 'এই পাঠেৰে আৰম্ভ হোৱা শিৰোনামাসমূহ অনুসন্ধান কৰক',
+'showhideselectedlogentries' => "নিৰ্বাচিত ল'গ ভুক্তি দেখুৱাওক/লুকুৱাওক",
 
 # Special:AllPages
 'allpages' => 'সকলোবোৰ পৃষ্ঠা',
@@ -1982,6 +1996,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'allpages-hide-redirects' => 'পুনঃনিৰ্দেশ লুকুৱাওক',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => "আপুনি এই পৃষ্ঠাৰ আগেয়ে জমা কৰি থোৱা বা কেশ্ব‌ড সংস্কৰণ এটা চাই আছে যিটো $1 পৰ্যন্ত পুৰণা হ'ব পাৰে।",
+'cachedspecial-viewing-cached-ts' => "আপুনি এই পৃষ্ঠাৰ আগেয়ে জমা কৰি থোৱা বা কেশ্ব‌ড সংস্কৰণ এটা চাই আছে যিখন সম্পূৰ্ণভাৱে প্ৰকৃত নহ'বও পাৰে।",
 'cachedspecial-refresh-now' => 'শেহতীয়া পাঠ্য',
 
 # Special:Categories
@@ -2851,6 +2867,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'spambot_username' => 'মিডিয়াৱিকি স্পাম পৰিষ্কাৰ কাৰ্য্য',
 'spam_reverting' => '$1 -লে সংযোগ নথকা সৰ্বশেষ পুনৰীক্ষনলে উভতি যোৱা',
 'spam_blanking' => 'সকলো পুনৰীক্ষনৰ $1 -লে সংযোগ আছিল, ৰিক্ত কৰা হৈছে',
+'spam_deleting' => 'সকলো পুনৰীক্ষণৰ $1লৈ সংযোগ আছিল, বিলোপ কৰা হৈছে',
 
 # Info page
 'pageinfo-title' => '"$1" ৰ তথ্য',
@@ -3557,6 +3574,9 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 'version-software' => 'ইনষ্টল কৰা ছফ্টৱেৰ',
 'version-software-product' => 'সামগ্ৰী',
 'version-software-version' => 'সংস্কৰণ',
+'version-entrypoints' => 'প্ৰৱেশ পইণ্ট ইউআৰএল',
+'version-entrypoints-header-entrypoint' => 'প্ৰৱেশ পইণ্ট',
+'version-entrypoints-header-url' => 'ইউআৰএল',
 
 # Special:FilePath
 'filepath' => 'ফাইল পথ',
index c8940ce..1cf1a95 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Asturian (Asturianu)
+/** Asturian (asturianu)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -11,6 +11,7 @@
  * @author Kaganer
  * @author Mikel
  * @author Remember the dot
+ * @author Savh
  * @author Xuacu
  * @author לערי ריינהארט
  */
@@ -1748,7 +1749,7 @@ Hai disponible una [[Special:WhatLinksHere/$2|llista completa]].",
 'sharedupload-desc-there' => 'Esti ficheru ye de $1 y puen usalu otros proyeutos.
 Llee la [páxina de descripción del ficheru $2] pa más información.',
 'sharedupload-desc-here' => "Esti ficheru ye de $1 y puen usalu otros proyeutos.
-La descripción de la [páxina de descripción del ficheru $2] s'amuesa darréu.",
+La descripción de la [$2 páxina de descripción del ficheru] s'amuesa darréu.",
 'sharedupload-desc-edit' => "Esti ficheru ye de $1 y se pue usar n'otros proyeutos.
 Seique quieras camudar la descripción de la so [páxina de descripción de ficheru $2] allí.",
 'sharedupload-desc-create' => "Esti ficheru ye de $1 y se pue usar n'otros proyeutos.
index 0e235c3..bc72730 100644 (file)
@@ -125,30 +125,30 @@ $messages = array(
 'monday' => 'Дүшәмбе',
 'tuesday' => 'Шишәмбе',
 'wednesday' => 'Шаршамбы',
-'thursday' => 'Ð\9aеÑ\81еаÒ\99на',
+'thursday' => 'Кесаҙна',
 'friday' => 'Йома',
 'saturday' => 'Шәмбе',
-'sun' => 'Йәкшәмбе',
-'mon' => 'Дүшәмбе',
-'tue' => 'Шишәмбе',
-'wed' => 'Шаршамбы',
-'thu' => 'Кесеаҙна',
-'fri' => 'Ð\99ома',
-'sat' => 'Шәмбе',
-'january' => 'ғинуар',
-'february' => 'февраль',
-'march' => 'март',
-'april' => 'апрель',
-'may_long' => 'май',
-'june' => 'июнь',
-'july' => 'июль',
-'august' => 'август',
-'september' => 'сентябрь',
-'october' => 'октябрь',
-'november' => 'ноябрь',
-'december' => 'декабрь',
-'january-gen' => 'ғинуар',
-'february-gen' => 'февраль',
+'sun' => 'Йш',
+'mon' => 'Дш',
+'tue' => 'Шш',
+'wed' => 'Шр',
+'thu' => 'Кс',
+'fri' => 'Ð\99м',
+'sat' => 'Шб',
+'january' => 'ғинуар (һыуығай)',
+'february' => 'февраль (шаҡай)',
+'march' => 'март (буранай)',
+'april' => 'апрель (алағарай)',
+'may_long' => 'май (һабанай)',
+'june' => 'июнь (һөтай)',
+'july' => 'июль (майай)',
+'august' => 'август (урағай)',
+'september' => 'сентябрь (һарысай)',
+'october' => 'октябрь (ҡарасай)',
+'november' => 'ноябрь (ҡырпағай)',
+'december' => 'декабрь (аҡъюлай)',
+'january-gen' => 'ғинуар (һыуығай)',
+'february-gen' => 'февраль (шаҡай)',
 'march-gen' => 'март',
 'april-gen' => 'апрель',
 'may-gen' => 'май',
@@ -157,8 +157,8 @@ $messages = array(
 'august-gen' => 'август',
 'september-gen' => 'сентябрь',
 'october-gen' => 'октябрь',
-'november-gen' => 'ноябрь',
-'december-gen' => 'декабрь',
+'november-gen' => 'ноябрь (ҡырпағай)',
+'december-gen' => 'декабрь (аҡъюлай)',
 'jan' => 'ғин',
 'feb' => 'фев',
 'mar' => 'мар',
@@ -274,7 +274,7 @@ $messages = array(
 'mediawikipage' => 'Хәбәрҙәр битен ҡарарға',
 'templatepage' => 'Ҡалып битен ҡарарға',
 'viewhelppage' => 'Ярҙам битен ҡарарға',
-'categorypage' => 'Ð\9aаÑ\82егоÑ\80иÑ\8f битен ҡарарға',
+'categorypage' => 'ТөÑ\80көм битен ҡарарға',
 'viewtalkpage' => 'Фекер алышыу битен ҡарарға',
 'otherlanguages' => 'Башҡа телдәрҙә',
 'redirectedfrom' => '($1 битенән йүнәлтелде)',
@@ -450,9 +450,9 @@ $2',
 'ns-specialprotected' => '«{{ns:special}}» исем арауығындағы биттәрҙе үҙгәртеп булмай.',
 'titleprotected' => "Был исем менән бит яһау [[User:$1|$1]] тарафынан тыйылған.
 Белдерелгән сәбәп: ''$2''.",
-'filereadonlyerror' => "«$1» файлын үҙгәртеп булмай, сөнки «$2» һаҡлағысы «уҡыу өсөн генә» тәртибенде.
+'filereadonlyerror' => "«$1» файлын үҙгәртеп булмай, сөнки «$2» һаҡлағысы «уҡыу өсөн генә» тәртибендә.
 
£Ñ\81Ñ\82ановивÑ\88ий Ñ\8dÑ\82оÑ\82 Ñ\80ежим Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80 Ð¾Ñ\81Ñ\82авил Ñ\81ледÑ\83Ñ\8eÑ\89ее Ñ\80азÑ\8aÑ\8fÑ\81нение: «''$3''».",
\91Ñ\8bл Ñ\81иклÓ\99Ò¯Ò\99е Ð¸Ð½Ð´ÐµÑ\80гÓ\99н Ñ\85аким Ð±Ð¸Ñ\80гÓ\99н Ð°Ò£Ð»Ð°Ñ\82ма:«''$3''».",
 
 # Virus scanner
 'virus-badscanner' => "Көйләү хатаһы: Билдәһеҙ вирустар сканеры: ''$1''",
@@ -1097,6 +1097,7 @@ $1",
 'prefs-beta' => 'Бета версияһы мөмкинлектәре',
 'prefs-datetime' => 'Көн һәм ваҡыт',
 'prefs-labs' => 'Һынау өсөн мөмкинлектәр',
+'prefs-user-pages' => 'Ҡатнашыусы бите',
 'prefs-personal' => 'Шәхси мәғлүмәттәр',
 'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
 'prefs-watchlist' => 'Күҙәтеү исемлеге',
@@ -3667,9 +3668,9 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|секунд|секунд}}',
-'duration-minutes' => 'минут',
-'duration-hours' => 'сәғәт',
-'duration-days' => 'көн',
+'duration-minutes' => '$1 {{PLURAL:$1|минут|минут}}',
+'duration-hours' => '$1 {{PLURAL:$1|сәғәт|сәғәт}}',
+'duration-days' => '$1 {{PLURAL:$1|көн|көн}}',
 'duration-weeks' => '$1 {{PLURAL:$1|аҙна|аҙналар|аҙна}}',
 'duration-years' => '$1 {{PLURAL:$1|йыл|йылдар}}',
 'duration-decades' => '$1 {{PLURAL:$1|ун көнлөк|ун көнлөктәр}}',
index bf0d2ec..abc9f75 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Belarusian (Ð\91еларуская)
+/** Belarusian (беларуская)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -14,6 +14,7 @@
  * @author Maksim L.
  * @author Mienski
  * @author Prima klasy4na
+ * @author Renessaince
  * @author Riwnodennyk
  * @author Urhixidur
  * @author Wizardist
@@ -365,7 +366,7 @@ $1',
 'collapsible-expand' => 'Паказаць',
 'thisisdeleted' => 'Паказаць ці аднавіць $1?',
 'viewdeleted' => 'Ці паказаць $1?',
-'restorelink' => '{{PLURAL:$1|адна сцёртая праўка|$1 сцёртых правак}}',
+'restorelink' => '$1 {{PLURAL:$1|сцёртая праўка|сцёртых правак}}',
 'feedlinks' => 'Струмень:',
 'feed-invalid' => 'Недапушчальны тып струмяня навін.',
 'feed-unavailable' => 'Няма струмянёў навін',
@@ -714,10 +715,10 @@ $2
 'newarticle' => '(Новы)',
 'newarticletext' => 'Вы перайшлі да старонкі, якой яшчэ няма, і таму трапілі сюды. Каб пачаць новую старонку, пішыце яе тэкст у ніжэйпаказаным акне рэдагавання (падрабязнасці бач у [[{{MediaWiki:Helppage}}|даведцы]]). Калі вы тут выпадкова, проста націсніце "назад" у браўзеры.',
 'anontalkpagetext' => "----''Гэта старонка размовы з ананімным удзельнікам, які або не мае свайго рахунку, або ім не карыстаўся. Таму дзеля яго ці яе ідэнтыфікацыі мы мусім выкарыстаць лічбавы Адрас IP. Такі адрас IP могуць дзяліць між сабою некалькі асоб. Калі вы ананімны ўдзельнік, і лічыце, што атрымліваеце няслушныя заўвагі,[[Special:UserLogin/signup|стварыце рахунак]] або [[Special:UserLogin|акажыцеся]], каб вас больш не блыталі з іншымі ананімнымі ўдзельнікамі.''",
-'noarticletext' => 'СÑ\82аÑ\80онка Ð½Ðµ Ñ\9eÑ\82Ñ\80Ñ\8bмлÑ\96вае Ñ\82Ñ\8dкÑ\81Ñ\82Ñ\83. Ð\92Ñ\8b Ð¼Ð¾Ð¶Ð°Ñ\86е [[Special:Search/{{PAGENAME}}|паÑ\88Ñ\83каÑ\86Ñ\8c Ð³Ñ\8dÑ\82акай Ð½Ð°Ð·Ð²Ñ\8b]] ў іншых старонках ці <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах],
+'noarticletext' => 'СÑ\82аÑ\80онка Ð½Ðµ Ñ\9eÑ\82Ñ\80Ñ\8bмлÑ\96вае Ñ\82Ñ\8dкÑ\81Ñ\82Ñ\83. Ð\92Ñ\8b Ð¼Ð¾Ð¶Ð°Ñ\86е [[Special:Search/{{PAGENAME}}|паÑ\88Ñ\83каÑ\86Ñ\8c Ð³Ñ\8dÑ\82кÑ\83Ñ\8e Ð½Ð°Ð·Ð²Ñ\83]] ў іншых старонках ці <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах],
 або [{{fullurl:{{FULLPAGENAME}}|action=edit}} папрацаваць з гэтай старонкай]</span>.',
 'noarticletext-nopermission' => 'Старонка не ўтрымлівае тэксту.
\92Ñ\8b Ð¼Ð¾Ð¶Ð°Ñ\86е [[Special:Search/{{PAGENAME}}|паÑ\88Ñ\83каÑ\86Ñ\8c Ð³Ñ\8dÑ\82акай Ð½Ð°Ð·Ð²Ñ\8b]] ў іншых старонках,
\92Ñ\8b Ð¼Ð¾Ð¶Ð°Ñ\86е [[Special:Search/{{PAGENAME}}|паÑ\88Ñ\83каÑ\86Ñ\8c Ð³Ñ\8dÑ\82кÑ\83Ñ\8e Ð½Ð°Ð·Ð²Ñ\83]] ў іншых старонках,
 ці <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах]</span>.',
 'userpage-userdoesnotexist' => 'Рахунак удзельніка "<nowiki>$1</nowiki>" не зарэгістраваны. Праверце, ці вы жадаеце стварыць або паправіць гэтую старонку.',
 'userpage-userdoesnotexist-view' => 'Уліковы запіс удзельніка " $1 "не зарэгістраваны.',
index 149aec0..fc00a41 100644 (file)
@@ -264,9 +264,9 @@ $messages = array(
 'tog-usenewrc' => 'Выкарыстоўваць удасканалены сьпіс апошніх зьменаў (патрабуе JavaScript)',
 'tog-numberheadings' => 'Аўтаматычная нумарацыя загалоўкаў',
 'tog-showtoolbar' => 'Паказваць панэль інструмэнтаў рэдагаваньня (патрабуе JavaScript)',
-'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным шчоўканьні (JavaScript)',
+'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным пстрыку (JavaScript)',
 'tog-editsection' => 'Дазволіць рэдагаваньне асобных сэкцыяў па спасылках [рэдагаваць]',
-'tog-editsectiononrightclick' => 'Рэдагаваць сэкцыі па правым шчоўканьні мышкай на загалоўку (JavaScript)',
+'tog-editsectiononrightclick' => 'Рэдагаваць сэкцыі па правым пстрыку на загалоўку (патрабуе JavaScript)',
 'tog-showtoc' => 'Паказваць зьмест (для старонак з колькасьцю сэкцый болей за 3)',
 'tog-rememberpassword' => 'Запомніць мяне ў гэтым браўзэры (ня больш за $1 {{PLURAL:$1|дзень|дні|дзён}})',
 'tog-watchcreations' => 'Дадаваць у мой сьпіс назіраньня старонкі, якія я буду ствараць',
@@ -1030,6 +1030,8 @@ $2
 'node-count-exceeded-warning' => 'Старонка перавысіла дазволеную колькасьць вузлоў',
 'expansion-depth-exceeded-category' => 'Старонкі зь перавышанай глыбінёй уключэньня',
 'expansion-depth-exceeded-warning' => 'Старонка перавысіла дазволеную глыбіню ўключэньняў',
+'parser-unstrip-loop-warning' => 'Вызначаная незачыненая пятля',
+'parser-unstrip-recursion-limit' => 'Перавышанае абмежаваньне глыбіні рэкурсіі ($1)',
 
 # "Undo" feature
 'undo-success' => 'Рэдагаваньне можа быць адмененае. Калі ласка, параўнайце адрозьненьні паміж вэрсіямі, каб упэўніцца, што гэта адпаведныя зьмены, а потым запішыце зьмены для сканчэньня рэдагаваньня.',
@@ -1188,7 +1190,7 @@ $1",
 'mergehistory-go' => "Паказаць вэрсіі, якія магчыма аб'яднаць",
 'mergehistory-submit' => "Аб'яднаць гісторыі рэдагаваньняў",
 'mergehistory-empty' => "Няма гісторыі рэдагаваньняў, якую магчыма аб'яднаць.",
-'mergehistory-success' => "$3 {{PLURAL:$3|вэрсія|вэрсіі|вэрсій}} з [[:$1]] пасьпяхова аб'яднаныя ў [[:$2]].",
+'mergehistory-success' => '$3 {{PLURAL:$3|вэрсія|вэрсіі|вэрсіяў}} з [[:$1]] пасьпяхова аб’яднаныя ў [[:$2]].',
 'mergehistory-fail' => "Не атрымалася аб'яднаць гісторыі старонак. Калі ласка, праверце парамэтры старонкі і часу.",
 'mergehistory-no-source' => 'Не існуе крынічнай старонкі $1.',
 'mergehistory-no-destination' => 'Не існуе мэтавай старонкі $1.',
@@ -1483,12 +1485,12 @@ $1",
 'right-writeapi' => 'выкарыстаньне API для запісаў',
 'right-delete' => 'выдаленьне старонак',
 'right-bigdelete' => 'Выдаленьне старонак зь вялікімі гісторыямі',
-'right-deleterevision' => 'выдаленьне і аднаўленьне асобных вэрсій старонак',
+'right-deleterevision' => 'выдаленьне і аднаўленьне асобных вэрсіяў старонак',
 'right-deletedhistory' => 'прагляд выдаленай гісторыі старонак без доступу да выдаленага тэксту',
 'right-deletedtext' => 'прагляд выдаленага тэксту і зьменаў паміж выдаленымі вэрсіямі старонак',
 'right-browsearchive' => 'пошук выдаленых старонак',
 'right-undelete' => 'аднаўленьне старонак',
-'right-suppressrevision' => 'прагляд і аднаўленьне вэрсій схаваных ад адміністратараў',
+'right-suppressrevision' => 'прагляд і аднаўленьне вэрсіяў, схаваных ад адміністратараў',
 'right-suppressionlog' => 'прагляд прыватных журналаў',
 'right-block' => 'блякаваньне іншых удзельнікаў ад рэдагаваньняў',
 'right-blockemail' => 'блякаваньне іншых ўдзельнікаў ад дасылкі электроннай пошты',
@@ -2013,7 +2015,7 @@ $1',
 'ncategories' => '$1 {{PLURAL:$1|катэгорыя|катэгорыі|катэгорыяў}}',
 'nlinks' => '$1 {{PLURAL:$1|спасылка|спасылкі|спасылак}}',
 'nmembers' => '$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}}',
-'nrevisions' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}}',
+'nrevisions' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'nviews' => '$1 {{PLURAL:$1|прагляд|прагляды|праглядаў}}',
 'nimagelinks' => 'Выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}',
 'ntransclusions' => 'выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}',
@@ -2093,6 +2095,7 @@ $1',
 Вы можаце адфільтраваць вынікі па тыпе журналу, удзельніку ці старонцы.',
 'logempty' => 'Падобных запісаў у журнале няма.',
 'log-title-wildcard' => 'Шукаць назвы, якія пачынаюцца з гэтага тэксту',
+'showhideselectedlogentries' => 'Паказаць/схаваць выбраныя запісы ў журнале',
 
 # Special:AllPages
 'allpages' => 'Усе старонкі',
@@ -2320,9 +2323,9 @@ $UNWATCHURL
 ** Парушэньне аўтарскіх правоў
 ** Вандалізм',
 'delete-edit-reasonlist' => 'Рэдагаваць прычыны выдаленьня',
-'delete-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, болей за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсій}}.
+'delete-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, болей за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.
 Выдаленьне такіх старонак было забароненае, каб пазьбегнуць праблемаў у працы {{GRAMMAR:родны|{{SITENAME}}}}.',
-'delete-warning-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсій}}.
+'delete-warning-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.
 Яе выдаленьне можа выклікаць праблемы ў працы базы зьвестак {{GRAMMAR:родны|{{SITENAME}}}}; будзьце асьцярожны.',
 
 # Rollback
@@ -2423,7 +2426,7 @@ $UNWATCHURL
 'undelete-fieldset-title' => 'Аднавіць вэрсіі',
 'undeleteextrahelp' => "Для поўнага аднаўленьня гісторыі рэдагаваньня старонкі, пакіньце ўсе адзнакі нявызначнымі і націсьніце '''''{{int:undeletebtn}}'''''.
 Для частковага аднаўленьня, пазначце тыя вэрсіі старонкі, якія трэба аднавіць і націсьніце '''''{{int:undeletebtn}}'''''.",
-'undeleterevisions' => 'У архіве $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}}',
+'undeleterevisions' => 'У архіве $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'undeletehistory' => 'Калі Вы адновіце старонку, будуць адноўленыя ўсе яе вэрсіі разам з журналам падзеяў.
 Калі пасьля выдаленьня была створаная новая старонка з такой жа назвай, адноўленыя вэрсіі зьявяцца ў гісторыі перад новымі вэрсіямі.',
 'undeleterevdel' => 'Аднаўленьня не адбудзецца, калі ў яго выніку будзе выдаленая апошняя вэрсія старонкі ці файла.
@@ -2441,8 +2444,8 @@ $UNWATCHURL
 'undeletereset' => 'Скінуць',
 'undeleteinvert' => 'Адваротны выбар',
 'undeletecomment' => 'Прычына:',
-'undeletedrevisions' => '{{PLURAL:$1|адноўленая $1 вэрсія|адноўленыя $1 вэрсіі|адноўленыя $1 вэрсій}}',
-'undeletedrevisions-files' => 'адноўленыя $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}} і $2 {{PLURAL:$2|файл|файлы|файлаў}}',
+'undeletedrevisions' => '{{PLURAL:$1|адноўленая $1 вэрсія|адноўленыя $1 вэрсіі|адноўленыя $1 вэрсіяў}}',
+'undeletedrevisions-files' => 'адноўленыя $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}} і $2 {{PLURAL:$2|файл|файлы|файлаў}}',
 'undeletedfiles' => '{{PLURAL:$1|адноўлены $1 файл|адноўленыя $1 файлы|адноўленыя $1 файлаў}}',
 'cannotundelete' => 'Аднаўленьне не адбылося; нехта іншы мог пасьпець аднавіць старонку раней.',
 'undeletedpage' => "'''Старонка $1 была адноўленая'''
@@ -2829,7 +2832,7 @@ $1',
 'importtext' => 'Калі ласка, экспартуйце файл з крынічнай вікі з дапамогай [[Special:Export|прылады экспарту]].
 Захавайце яго на свой кампутар, а потым загрузіце сюды.',
 'importstart' => 'Імпартаваньне старонак…',
-'import-revision-count' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}}',
+'import-revision-count' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'importnopages' => 'Няма старонак для імпартаваньня.',
 'imported-log-entries' => '{{PLURAL:$1|Імпартаваны $1 запіс журнала|Імпартаваныя $1 запісы журнала|Імпартаваныя $1 запісаў журнала}}.',
 'importfailed' => 'Немагчыма імпартаваць: $1',
@@ -2864,9 +2867,9 @@ $1',
 'importlogpage' => 'Журнал імпартаваньняў',
 'importlogpagetext' => 'Імпартаваньне адміністратарамі старонак з гісторыяй зьменаў зь іншых вікі.',
 'import-logentry-upload' => 'імпартавана [[$1]] праз загрузку файла',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'import-logentry-interwiki' => 'імпартавана зь іншай вікі $1',
-'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсій}} з $2',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}} з $2',
 
 # JavaScriptTest
 'javascripttest' => 'Тэставаньне JavaScript',
@@ -2973,6 +2976,7 @@ $1',
 'spambot_username' => 'Чыстка спаму MediaWiki',
 'spam_reverting' => 'Адкат да апошняй вэрсіі без спасылак на $1',
 'spam_blanking' => 'Усе вэрсіі ўтрымліваюць спасылкі на $1, чыстка',
+'spam_deleting' => 'Усе вэрсіі ўтрымлівалі спасылкі на $1, выдаляем',
 
 # Info page
 'pageinfo-title' => 'Інфармацыя пра «$1»',
index 2737319..2c994a4 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Bulgarian (Ð\91ългарски)
+/** Bulgarian (български)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1271,6 +1271,7 @@ $1",
 'prefs-beta' => 'Функционалности на Бета',
 'prefs-datetime' => 'Дата и час',
 'prefs-labs' => 'Функционалности на Labs',
+'prefs-user-pages' => 'Потребителски страници',
 'prefs-personal' => 'Потребителски данни',
 'prefs-rc' => 'Последни промени',
 'prefs-watchlist' => 'Списък за наблюдение',
@@ -1703,6 +1704,7 @@ $1',
 'backend-fail-notexists' => 'Файлът $1 не съществува.',
 'backend-fail-delete' => 'Файлът $1 не може да бъде изтрит.',
 'backend-fail-alreadyexists' => 'Файлът $1 вече съществува.',
+'backend-fail-store' => 'Файлът $1 не може да бъде съхранен в $2.',
 'backend-fail-copy' => 'Файлът „$1“ не можа да бъде копиран в „$2“.',
 'backend-fail-move' => 'Файлът „$1“ не можа да бъде преместен в „$2“.',
 'backend-fail-opentemp' => 'Временният файл не може да бъде отворен.',
@@ -3490,6 +3492,7 @@ MediaWiki се разпространява с надеждата, че ще б
 'version-software' => 'Инсталиран софтуер',
 'version-software-product' => 'Продукт',
 'version-software-version' => 'Версия',
+'version-entrypoints-header-url' => 'Адрес',
 
 # Special:FilePath
 'filepath' => 'Път към файл',
index 27e6ddf..f40423a 100644 (file)
@@ -60,41 +60,87 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Tungkaran_lawas' ),
        'Badtitle'                  => array( 'Judul_nang_buruk' ),
        'Blankpage'                 => array( 'Tungkaran_kusung' ),
+       'Block'                     => array( 'Blukir_pamakai' ),
+       'Blockme'                   => array( 'Blukir_ulun' ),
        'Booksources'               => array( 'Sumbar_buku' ),
+       'BrokenRedirects'           => array( 'Paugahan_rakai' ),
        'Categories'                => array( 'Daptar_tumbung' ),
        'ChangeEmail'               => array( 'Ganti_suril' ),
+       'ChangePassword'            => array( 'Ganti_katasunduk' ),
        'ComparePages'              => array( 'Bandingakan_tungkaran' ),
        'Confirmemail'              => array( 'Kunpirmasi_suril' ),
-       'Contributions'             => array( 'Kuntribusi_pamakai' ),
+       'Contributions'             => array( 'Sumbangan_pamakai' ),
        'CreateAccount'             => array( 'Ulah_akun' ),
        'Deadendpages'              => array( 'Tungkaran_buntu' ),
-       'DeletedContributions'      => array( 'Kuntribusi_nang_dihapus' ),
-       'EditWatchlist'             => array( 'Babak_daptan_pantauan' ),
-       'Fewestrevisions'           => array( 'Parubahan_tasadikit' ),
-       'Filepath'                  => array( 'Lukasi_barakas' ),
+       'DeletedContributions'      => array( 'Sumbangan_nang_dihapus' ),
+       'Disambiguations'           => array( 'Disambiguasi' ),
+       'EditWatchlist'             => array( 'Babak_daptar_pantauan' ),
+       'Fewestrevisions'           => array( 'Paubahan_tasadikit' ),
+       'FileDuplicateSearch'       => array( 'Panggagaian_barakas_kambar' ),
+       'Filepath'                  => array( 'Andakan_barakas' ),
+       'BlockList'                 => array( 'Daptar_pamblukiran' ),
+       'LinkSearch'                => array( 'Tautan_luar' ),
        'Listadmins'                => array( 'Daptar_pambakal' ),
        'Listbots'                  => array( 'Daptar_bot' ),
        'Listfiles'                 => array( 'Daptar_barakas' ),
-       'Listgrouprights'           => array( 'Daptar_hak_kalumpuk' ),
-       'Listredirects'             => array( 'Daptar_paalihan' ),
+       'Listgrouprights'           => array( 'Daptar_hak_galambang' ),
+       'Listredirects'             => array( 'Daptar_paugahan' ),
        'Listusers'                 => array( 'Daptar_pamakai' ),
        'Log'                       => array( 'Catatan' ),
+       'Lonelypages'               => array( 'Tungkaran_yatim' ),
        'Longpages'                 => array( 'Tungkaran_panjang' ),
-       'Mostcategories'            => array( 'Tumbung_tabanyak' ),
+       'MergeHistory'              => array( 'Sajarah_panggabungan' ),
+       'MIMEsearch'                => array( 'Panggagaian_MIME' ),
+       'Mostcategories'            => array( 'Tumbung_pambanyaknya' ),
+       'Mostimages'                => array( 'Barakas_paling_dipakai' ),
        'Mostlinked'                => array( 'Tungkaran_paling_dipakai' ),
        'Mostlinkedcategories'      => array( 'Tumbung_paling_dipakai' ),
        'Mostlinkedtemplates'       => array( 'Citakan_paling_dipakai' ),
-       'Mostrevisions'             => array( 'Paubahan_tabanyak' ),
+       'Mostrevisions'             => array( 'Paubahan_pambanyaknya' ),
        'Movepage'                  => array( 'Pindahakan_tungkaran' ),
-       'Mycontributions'           => array( 'Kuntribusi_ulun' ),
+       'Mycontributions'           => array( 'Sumbangan_ulun' ),
        'Mypage'                    => array( 'Tungkaran_ulun' ),
        'Mytalk'                    => array( 'Pamandiran_ulun' ),
+       'Myuploads'                 => array( 'Unggahan_ulun' ),
        'Newimages'                 => array( 'Barakas_hanyar' ),
        'Newpages'                  => array( 'Tungkaran_hanyar' ),
+       'PermanentLink'             => array( 'Tautan_tatap' ),
+       'Popularpages'              => array( 'Tungkaran_popular' ),
+       'Preferences'               => array( 'Kakatujuan' ),
        'Protectedpages'            => array( 'Tungkaran_nang_dilindungi' ),
        'Protectedtitles'           => array( 'Judul_nang_dilindungi' ),
        'Randompage'                => array( 'Tungkaran_babarang' ),
-       'Recentchanges'             => array( 'Paubahan_tahanyar' ),
+       'Randomredirect'            => array( 'Paugahan_babarang' ),
+       'Recentchanges'             => array( 'Paubahan_pahanyarnya' ),
+       'Recentchangeslinked'       => array( 'Paubahan_tarait' ),
+       'Revisiondelete'            => array( 'Hapus_ralatan' ),
+       'RevisionMove'              => array( 'Ralatan_pamindahan' ),
+       'Search'                    => array( 'Panggagaian' ),
+       'Shortpages'                => array( 'Tungkaran_handap' ),
+       'Specialpages'              => array( 'Tungkaran_istimiwa' ),
+       'Statistics'                => array( 'Statistik' ),
+       'Tags'                      => array( 'Tag' ),
+       'Unblock'                   => array( 'Pawalangan_pamblukiran' ),
+       'Uncategorizedcategories'   => array( 'Tumbung_kada_batumbung' ),
+       'Uncategorizedimages'       => array( 'Barakas_kada_batumbung' ),
+       'Uncategorizedpages'        => array( 'Tungkaran_kada_batumbung' ),
+       'Uncategorizedtemplates'    => array( 'Citakan_kada_batumbung' ),
+       'Undelete'                  => array( 'Pawalangan_pahapusan' ),
+       'Unusedcategories'          => array( 'Tumbung_puang' ),
+       'Unusedimages'              => array( 'Barakas_kada_tapakai' ),
+       'Unusedtemplates'           => array( 'Citakan_kada_tapakai' ),
+       'Unwatchedpages'            => array( 'Tungkaran_kada_di-itihi' ),
+       'Upload'                    => array( 'Paunggahan' ),
+       'Userlogin'                 => array( 'Babuat_log' ),
+       'Userlogout'                => array( 'Kaluar_log' ),
+       'Userrights'                => array( 'Hak_pamakai' ),
+       'Wantedcategories'          => array( 'Tumbung_nang_dikahandaki' ),
+       'Wantedfiles'               => array( 'Barakas_nang_dikahandaki' ),
+       'Wantedpages'               => array( 'Tungkaran_nang_dikahandaki' ),
+       'Wantedtemplates'           => array( 'Citakan_nang_dikahandaki' ),
+       'Watchlist'                 => array( 'Daptar_itihan' ),
+       'Whatlinkshere'             => array( 'Tautan_balik' ),
+       'Withoutinterwiki'          => array( 'Kada_pakai_interwiki' ),
 );
 
 $messages = array(
index e3aa6f0..9bccafe 100644 (file)
@@ -984,6 +984,8 @@ $1",
 
 # Diffs
 'history-title' => '"$1" এর সংশোধনের ইতিহাস',
+'difference-title' => '"$1"-এর বিভিন্ন সংস্করণের মধ্যে পার্থক্য',
+'difference-title-multipage' => '"$1" ও "$2"-পাতার মধ্যে পার্থক্য',
 'difference-multipage' => 'পাতাগুলোর মধ্যে পার্থক্য',
 'lineno' => '$1 নং লাইন:',
 'compareselectedversions' => 'নির্বাচিত সংস্করণগুলো তুলনা করো',
index c9d0efc..3e4f3ee 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Breton (Brezhoneg)
+/** Breton (brezhoneg)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -601,7 +601,7 @@ Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}
 'createaccount' => 'Krouiñ ur gont nevez',
 'gotaccount' => "Ur gont zo ganeoc'h dija ? '''$1'''.",
 'gotaccountlink' => 'Kevreañ',
-'userlogin-resetlink' => "Ha disoñjet hoc'h eus ho titouroù kevreañ ?",
+'userlogin-resetlink' => "Ha disoñjet eo bet ho titouroù kevreañ ganeoc'h ?",
 'createaccountmail' => 'dre bostel',
 'createaccountreason' => 'Abeg :',
 'badretype' => 'Ne glot ket ar gerioù-tremen an eil gant egile.',
@@ -1353,7 +1353,7 @@ Ma skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset g
 'group' => 'Strollad :',
 'group-user' => 'Implijerien',
 'group-autoconfirmed' => 'Implijerien bet kadarnaet ent emgefre',
-'group-bot' => 'Botoù',
+'group-bot' => 'Robotoù',
 'group-sysop' => 'Merourien',
 'group-bureaucrat' => 'Burevidi',
 'group-suppress' => 'Dindan evezh',
@@ -2015,6 +2015,7 @@ Na zisoñjit ket e c'hall lec'hiennoù all kaout ul liamm eeun war-du ur restr b
 Gallout a rit strishaat ar mod diskwel en ur zibab ar marilh, an anv implijer (diwallit ouzh ar pennlizherennoù) pe ar bajenn a fell deoc'h (memes tra).",
 'logempty' => 'Goullo eo istor ar bajenn-mañ.',
 'log-title-wildcard' => 'Klask an titloù a grog gant an destenn-mañ',
+'showhideselectedlogentries' => 'Diskouez/kuzhat penngerioù ar marilh bet diuzet',
 
 # Special:AllPages
 'allpages' => 'An holl bajennoù',
index 88fa547..68c3e0e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Bosnian (Bosanski)
+/** Bosnian (bosanski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -61,6 +61,7 @@ $specialPageAliases = array(
        'Booksources'               => array( 'KnjizniIzvori' ),
        'BrokenRedirects'           => array( 'NedovršenaPreusmjerenja' ),
        'Categories'                => array( 'Kategorije' ),
+       'ChangeEmail'               => array( 'IzmjeniMail' ),
        'ChangePassword'            => array( 'PonistiLozinku' ),
        'ComparePages'              => array( 'UporedjivanjeStranica' ),
        'Confirmemail'              => array( 'PotvrdiEmail' ),
@@ -70,6 +71,7 @@ $specialPageAliases = array(
        'DeletedContributions'      => array( 'ObrisaniDoprinosi' ),
        'Disambiguations'           => array( 'Čvor' ),
        'DoubleRedirects'           => array( 'DvostrukaPreusmjerenja' ),
+       'EditWatchlist'             => array( 'IzmjeniPraćeniSpisak' ),
        'Emailuser'                 => array( 'EmailKorisnika' ),
        'Export'                    => array( 'Izvoz' ),
        'Fewestrevisions'           => array( 'Najmanje_uređivane_stranice' ),
@@ -522,7 +524,7 @@ $1',
 'disclaimerpage' => 'Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti',
 'edithelp' => 'Pomoć pri uređivanju stranice',
 'edithelppage' => 'Help:Uređivanje',
-'helppage' => 'Help:Sadržaj',
+'helppage' => 'Pomoć:Sadržaj',
 'mainpage' => 'Početna strana',
 'mainpage-description' => 'Početna strana',
 'policy-url' => 'Project:Pravila',
@@ -977,6 +979,7 @@ Izmjena je odbačena da bi se spriječilo uništavanje teksta stranice.
 To se događa ponekad kad korisite problematični anonimni proxy koji je baziran na web-u.'''",
 'edit_form_incomplete' => "'''Neki dijelovi uređivačkog obrasca nisu došli do servera; dvaput provjerite da su vaše izmjene nepromjenjene i pokušajte ponovno.'''",
 'editing' => 'Uređujete $1',
+'creating' => 'Pravljenje stranice $1',
 'editingsection' => 'Uređujete $1 (dio)',
 'editingcomment' => 'Uređujete $1 (nova sekcija)',
 'editconflict' => 'Sukobljenje izmjene: $1',
@@ -1046,6 +1049,7 @@ Izgleda da je obrisana.',
 'edit-no-change' => 'Vaša izmjena je ignorirana, jer nije bilo promjena teksta stranice.',
 'edit-already-exists' => 'Stranica nije mogla biti kreirana.
 Izgleda da već postoji.',
+'defaultmessagetext' => 'Uobičajeni tekst poruke',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Upozorenje: Ova stranica sadrži previše poziva opterećujućih parserskih funkcija.
@@ -1061,6 +1065,12 @@ Ovakvi argumenti se trebaju izbjegavati.',
 'parser-template-loop-warning' => 'Otkrivena kružna greška u šablonu: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Dubina uključivanja šablona prekoračena ($1)',
 'language-converter-depth-warning' => 'Prekoračena granica dubine jezičkog pretvarača ($1)',
+'node-count-exceeded-category' => 'Stranice sa prekoračenim brojem čvorova',
+'node-count-exceeded-warning' => 'Stranice koje imaju prevelik broj čvorova',
+'expansion-depth-exceeded-category' => 'Stranice koje su prekoračile dubinu proširenja',
+'expansion-depth-exceeded-warning' => 'Stranice koje su prekoračile dubinu proširenja',
+'parser-unstrip-loop-warning' => 'Pronađena petlja',
+'parser-unstrip-recursion-limit' => 'Prekoračeno ograničenje rekurzije ($1)',
 
 # "Undo" feature
 'undo-success' => 'Izmjena se može vratiti.
@@ -1238,7 +1248,9 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
 'mergelogpagetext' => 'Ispod je spisak nedavnih spajanja historija stranica.',
 
 # Diffs
-'history-title' => 'Historija izmjena stranice "$1"',
+'history-title' => 'Historija revizija "$1"',
+'difference-title' => 'Razlike između revizija od "$1"',
+'difference-title-multipage' => 'Razlika između stranica "$1" i "$2"',
 'difference-multipage' => '(Razlika između stranica)',
 'lineno' => 'Linija $1:',
 'compareselectedversions' => 'Uporedite označene verzije',
@@ -1334,6 +1346,7 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
 'prefs-beta' => 'Beta mogućnosti',
 'prefs-datetime' => 'Datum i vrijeme',
 'prefs-labs' => 'Eksperimentalne mogućnosti',
+'prefs-user-pages' => 'Korisničke stranice',
 'prefs-personal' => 'Korisnički podaci',
 'prefs-rc' => 'Podešavanja nedavnih izmjena',
 'prefs-watchlist' => 'Moji praćeni članci',
@@ -1405,6 +1418,7 @@ Ovo se ne može vratiti unazad.',
 'yourrealname' => 'Vaše pravo ime:',
 'yourlanguage' => 'Jezik:',
 'yourvariant' => 'Varijanta jezika:',
+'prefs-help-variant' => 'Vaša preferirana varijanta ili pravopis za prikaz sadržaja stranica na ovoj wiki.',
 'yournick' => 'Nadimak (za potpise):',
 'prefs-help-signature' => 'Komentari na stranicama za razgovor trebaju biti potpisani sa "<nowiki>~~~~</nowiki>" koje će biti pretvoreno u vaš potpis i vrijeme.',
 'badsig' => 'Loš sirovi potpis.
@@ -1459,7 +1473,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'userrights-no-interwiki' => 'Nemate dopuštenja da uređujete korisnička prava na drugim wikijima.',
 'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalna baza.',
 'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] sa administratorskim računom da bi ste mogli postavljati korisnička prava.',
-'userrights-notallowed' => 'Vaš korisnički račun nema privilegije da dodaje prava korisnika.',
+'userrights-notallowed' => 'Vaš račun nema privilegije da dodaje ili oduzima prava korisnika.',
 'userrights-changeable-col' => 'Grupe koje možete mijenjati',
 'userrights-unchangeable-col' => 'Grupe koje ne možete mijenjati',
 
@@ -1546,7 +1560,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'right-siteadmin' => 'Zaključavanje i otključavanje baze podataka',
 'right-override-export-depth' => 'Izvoz stranica uključujući povezane stranice do dubine od 5 linkova',
 'right-sendemail' => 'Slanje e-maila drugim korisnicima',
-'right-passwordreset' => 'Poništavanje šifre korisnika ([[Special:PasswordReset|posebna stranica]])',
+'right-passwordreset' => 'Pogledaj e-mailove za obnavljanje šifre',
 
 # User rights log
 'rightslog' => 'Zapisnik korisničkih prava',
@@ -1580,6 +1594,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'action-suppressionlog' => 'vidite ovaj privatni zapis',
 'action-block' => 'blokirate uređivanje ovog korisnika',
 'action-protect' => 'promijeniti nivo zaštite za ovu stranicu',
+'action-rollback' => 'brzo vraćanje izmjena zadnjeg korisnika koji je uređivao određenu stranicu',
 'action-import' => 'uvozite ovu stranicu iz druge wiki',
 'action-importupload' => 'uvezete ovu stranicu putem postavljanja datoteke',
 'action-patrol' => 'označite izmjene drugih kao patrolirane',
@@ -1621,6 +1636,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|korisnik|korisnika}} koji pregledaju]',
 'rc_categories' => 'Ograniči na kategorije (razdvojene sa "|")',
 'rc_categories_any' => 'Sve',
+'rc-change-size-new' => '$1 {{PLURAL:$1|bajt|bajta|bajtova}} poslije izmjene',
 'newsectionsummary' => '/* $1 */ nova sekcija',
 'rc-enhanced-expand' => 'Pokaži detalje (neophodna JavaScript)',
 'rc-enhanced-hide' => 'Sakrij detalje',
@@ -1783,11 +1799,18 @@ Ako se problem ne riješi, kontaktirajte [[Special:ListUsers/sysop|administrator
 'upload-too-many-redirects' => 'URL sadrži previše preusmjerenja',
 'upload-unknown-size' => 'Nepoznata veličina',
 'upload-http-error' => 'Desila se HTTP greška: $1',
+'upload-copy-upload-invalid-domain' => 'Kopije postavljenih datoteka nisu dostupne sa ove domene.',
 
 # File backend
+'backend-fail-stream' => 'Ne mogu emitirati datoteku $1.',
 'backend-fail-backup' => 'Ne može sigurnosno kopirati datoteku $1.',
 'backend-fail-notexists' => 'Datoteka $1 ne postoji.',
+'backend-fail-hashes' => 'Nisam našao datoteku disperzije radi usporedbe.',
+'backend-fail-notsame' => 'Već postoji različita datoteka $1.',
+'backend-fail-invalidpath' => '$1 nije valjana putanja za skladištenje.',
+'backend-fail-delete' => 'Ne može se izbrisati datoteka $1.',
 'backend-fail-alreadyexists' => 'Datoteka $1 već postoji.',
+'backend-fail-store' => 'Ne može se spremiti datoteka $1 na $2.',
 'backend-fail-read' => 'Ne mogu čitati datoteku $1.',
 'backend-fail-create' => 'Ne mogu napraviti datoteku $1.',
 
@@ -1857,9 +1880,8 @@ Možda možete pokušati kada bude manje opterećenje.',
 'upload_source_file' => ' (datoteka na Vašem računaru)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Ova specijalna stranica prikazuje sve postavljene datoteke.
-Uobičajeno je da posljednja postavljena datoteka bude prikazana na vrhu spiska.
-Klikom na zaglavlje kolone možete promjeniti način sortiranja.',
+'listfiles-summary' => 'Ova posebna stranica prikazuje sve postavljene datoteke.
+Kada je filtrirana od strane korisnika, prikazane su samo datoteke ako je korisnik postavio posljednju verziju te datoteke.',
 'listfiles_search_for' => 'Traži medije po imenu:',
 'imgfile' => 'datoteka',
 'listfiles' => 'Spisak slika',
@@ -1986,7 +2008,7 @@ Prije brisanja provjerite da li druge stranice vode na te šablone.',
 'statistics-users-active-desc' => 'Korisnici koju su izvršili akciju u toku {{PLURAL:$1|zadnjeg dana|zadnja $1 dana|zadnjih $1 dana}}',
 'statistics-mostpopular' => 'Najviše pregledane stranice',
 
-'disambiguations' => 'Stranice za čvor članke',
+'disambiguations' => 'Stranice koje vode na čvor članke',
 'disambiguationspage' => '{{ns:template}}:Čvor',
 'disambiguations-text' => "Slijedeće stranice su povezane sa '''čvor stranicom'''.
 Po pravilu, one se trebaju povezati sa konkretnim člankom.<br />
@@ -2087,7 +2109,7 @@ na kome bi se izvela ova funkcija.',
 'booksources-invalid-isbn' => 'Navedeni ISBN broj nije validan; molimo da provjerite da li je došlo do greške pri kopiranju iz prvobitnog izvora.',
 
 # Special:Log
-'specialloguserlabel' => 'Korisnik:',
+'specialloguserlabel' => 'Izvršilac:',
 'speciallogtitlelabel' => 'Cilj (naslov ili korisnik):',
 'log' => 'Protokoli',
 'all-logs-page' => 'Svi javni registri',
@@ -2130,12 +2152,13 @@ Vidi također [[Special:WantedCategories|zatražene kategorije]].',
 'sp-deletedcontributions-contribs' => 'doprinosi',
 
 # Special:LinkSearch
-'linksearch' => 'Vanjski linkovi',
+'linksearch' => 'Pretraga vanjskih linkova',
 'linksearch-pat' => 'Šema traženja:',
 'linksearch-ns' => 'Imenski prostor:',
 'linksearch-ok' => 'Traži',
-'linksearch-text' => 'Općeniti izrazi poput "*.wikipedia.org" se mogu koristiti.<br />
-Podržani protokoli: <tt>$1</tt>',
+'linksearch-text' => 'Mogu se koristiti općeniti izrazi poput "*.wikipedia.org"
+Potrebna je najmanje osnovna domena, naprimjer "*.org."<br />
+Podržani protokoli: <tt>$1</tt> (ne dodavajte bilo koji od ovih u vašu pretragu).',
 'linksearch-line' => '$1 je povezan od $2',
 'linksearch-error' => 'Džokeri se mogu pojavljivati samo na početku naziva servera.',
 
index 642f0e6..ee2dbb1 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Catalan (Català)
+/** Catalan (català)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -215,8 +215,8 @@ $messages = array(
 'tog-previewontop' => "Mostra una previsualització abans del quadre d'edició",
 'tog-previewonfirst' => 'Mostra una previsualització en la primera modificació',
 'tog-nocache' => 'Inhabilita la memòria cau de les pàgines',
-'tog-enotifwatchlistpages' => "Notifica'm per correu electrònic dels canvis a les pàgines que vigili",
-'tog-enotifusertalkpages' => "Notifica'm per correu quan hi hagi modificacions a la pàgina de discussió del meu compte d'usuari",
+'tog-enotifwatchlistpages' => "Envia'm un correu electrònic quan es modifiqui una pàgina de la meva llista de seguiment",
+'tog-enotifusertalkpages' => "Envia'm un correu electrònic quan es modifiqui la meva pàgina de discussió",
 'tog-enotifminoredits' => "Notifica'm per correu també en casos d'edicions menors",
 'tog-enotifrevealaddr' => "Mostra la meua adreça electrònica en els missatges d'avís per correu",
 'tog-shownumberswatching' => "Mostra el nombre d'usuaris que hi vigilen",
@@ -234,7 +234,7 @@ $messages = array(
 'tog-watchlisthideanons' => "Amaga a la llista les edicions d'usuaris anònims",
 'tog-watchlisthidepatrolled' => 'Amaga edicions patrullades de la llista de seguiment',
 'tog-nolangconversion' => 'Inhabilita la conversió de variants',
-'tog-ccmeonemails' => "Envia'm còpies dels missatges que enviï als altres usuaris.",
+'tog-ccmeonemails' => "Envia'm còpia dels missatges que enviï als altres usuaris",
 'tog-diffonly' => 'Amaga el contingut de la pàgina davall de la taula de diferències',
 'tog-showhiddencats' => 'Mostra les categories ocultes',
 'tog-noconvertlink' => 'Inhabilita la conversió dels títols dels enllaços',
@@ -1284,7 +1284,7 @@ A continuació es mostra un valor generat de forma aleatòria que podeu fer serv
 'timezoneregion-europe' => 'Europa',
 'timezoneregion-indian' => 'Oceà Índic',
 'timezoneregion-pacific' => 'Oceà Pacífic',
-'allowemail' => "Habilita el correu electrònic des d'altres usuaris",
+'allowemail' => 'Permet que altres usuaris puguin enviar-me correus electrònics',
 'prefs-searchoptions' => 'Preferències de la cerca',
 'prefs-namespaces' => 'Espais de noms',
 'defaultns' => 'Cerca per defecte en els següents espais de noms:',
@@ -1325,7 +1325,7 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'prefs-i18n' => 'Internacionalització',
 'prefs-signature' => 'Signatura',
 'prefs-dateformat' => 'Format de la data',
-'prefs-timeoffset' => "Duració de l'acció",
+'prefs-timeoffset' => 'Decalatge horari',
 'prefs-advancedediting' => 'Opcions avançades',
 'prefs-advancedrc' => 'Opcions avançades',
 'prefs-advancedrendering' => 'Opcions avançades',
@@ -2006,6 +2006,7 @@ Tingueu en compte que altres llocs web poden enllaçar un fitxer amb un URL dire
 Podeu reduir l'extensió seleccionant el tipus de registre, el nom d'usuari realitzador (distingeix entre majúscules i minúscules), o la pàgina objectiu (també en distingeix).",
 'logempty' => 'No hi ha cap coincidència en el registre.',
 'log-title-wildcard' => 'Cerca els títols que comencin amb aquest text',
+'showhideselectedlogentries' => 'Mostra/amaga les entrades de registre seleccionades',
 
 # Special:AllPages
 'allpages' => 'Totes les pàgines',
index a2d2d76..cf78ce7 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Sorani (کوردی)
+/** Sorani Kurdish (کوردی)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -3190,6 +3190,8 @@ $5
 'revdelete-restricted' => 'ئەو سنووری بەرگریانەی خستراوەتە سەر بەڕێوبەران',
 'revdelete-unrestricted' => 'ئەو سنووری بەرگریانەی لابردراوە لە سەر بەڕێوبەران',
 'logentry-move-move' => '$1 پەڕەی $3ی گواستەوە بۆ $4',
+'logentry-move-move-noredirect' => '$1 پەڕەی $3 گواستەوە بۆ $4 بێ بەجێھشتنی ڕەوانەکردنەوەیەک',
+'logentry-move-move_redir-noredirect' => '$1 پەڕەی $3 گواستەوە بۆ $4 لە جێگەی ڕەوانەکەرێک بە بێ بەجێھشتنی ڕەوانەکردنەوەیەک',
 'logentry-newusers-newusers' => '$1 ھەژمارێکی بەکارھێنەریی دروستکرد',
 'logentry-newusers-create' => '$1 ھەژمارێکی بەکارھێنەریی دروستکرد',
 'logentry-newusers-create2' => '$1 ھەژمارێکی بەکارھێنەریی دروستکرد $3',
index 2eb3325..8b972f7 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Czech (Ä\8cesky)
+/** Czech (Ä\8desky)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2183,6 +2183,7 @@ Uvědomte si, že jiné webové stránky mohou na soubor odkazovat pomocí pří
 Zobrazení můžete zúžit výběrem typu záznamu, uživatelského jména (záleží na velikosti písmen) nebo dotčené stránky (také záleží na velikosti písmen).',
 'logempty' => 'Protokol neobsahuje žádný odpovídající záznam.',
 'log-title-wildcard' => 'Hledat názvy začínající na tento text',
+'showhideselectedlogentries' => 'Ukázat/skrýt vybrané záznamy',
 
 # Special:AllPages
 'allpages' => 'Všechny stránky',
@@ -3068,7 +3069,8 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 'spamprotectionmatch' => 'Následující text spustil náš filtr proti spamu: $1',
 'spambot_username' => 'Systémový čistič spamu',
 'spam_reverting' => 'Revert na poslední verzi neobsahující odkazy na $1',
-'spam_blanking' => 'Všechny revize obsahovaly odkazy na $1, vyprázdněno',
+'spam_blanking' => 'Všechny verze obsahovaly odkazy na $1, vyprázdněno',
+'spam_deleting' => 'Všechny verze obsahovaly odkazy na $1, smazáno',
 
 # Info page
 'pageinfo-title' => 'Informace o "$1"',
index aaffafc..f0f7a76 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Danish (Dansk)
+/** Danish (dansk)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1171,8 +1171,8 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
 'search-result-size' => '$1 ({{PLURAL:$2|et ord|$2 ord}})',
 'search-result-category-size' => '{{PLURAL:$1|1 medlem|$1 medlemmer}} ({{PLURAL:$2|1 underkategori|$2 underkategorier}}, {{PLURAL:$3|1 fil|$3 filer}})',
 'search-result-score' => 'Relevans: $1%',
-'search-redirect' => '(omdiriger $1)',
-'search-section' => '(sektion $1)',
+'search-redirect' => '(omdirigering $1)',
+'search-section' => '(afsnit $1)',
 'search-suggest' => 'Mente du: $1',
 'search-interwiki-caption' => 'Søsterprojekter',
 'search-interwiki-default' => '{{PLURAL:$1|et resultat|$1 resultater}}:',
@@ -1994,6 +1994,7 @@ Læg mærke til at andre hjemmesider kan henvise til filen med en direkte URL, o
 Du kan afgrænse visningen ved at vælge en logtype, brugernavn eller påvirket side. Der skelnes mellem små og store bogstaver for både bruger- og sidenavne.',
 'logempty' => 'Intet passende fundet.',
 'log-title-wildcard' => 'Søg i titler som begynder med teksten',
+'showhideselectedlogentries' => 'Vis/skjul de markerede loghændelser',
 
 # Special:AllPages
 'allpages' => 'Alle sider',
@@ -2777,7 +2778,7 @@ Du kan se på kildeteksten.',
 'tooltip-ca-move' => 'Flyt denne side',
 'tooltip-ca-watch' => 'Sæt denne side på din overvågningsliste',
 'tooltip-ca-unwatch' => 'Fjern denne side fra din overvågningsliste',
-'tooltip-search' => 'Søg på denne wiki',
+'tooltip-search' => 'Søg på {{SITENAME}}',
 'tooltip-search-go' => 'Vis en side med præcis dette navn, hvis den findes',
 'tooltip-search-fulltext' => 'Søg efter sider der indeholder denne tekst',
 'tooltip-p-logo' => 'Forsiden',
index 9ddc4d5..5060f68 100644 (file)
@@ -430,7 +430,7 @@ $messages = array(
 'tog-externaleditor' => 'Externen Editor standardmäßig nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
 'tog-externaldiff' => 'Externes Programm standardmäßig für Versionsunterschiede nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
 'tog-showjumplinks' => '„Wechseln zu“-Links aktivieren',
-'tog-uselivepreview' => 'Sofortige Vorschau nutzen (benötigt JavaScript) (experimentell)',
+'tog-uselivepreview' => 'Vorschau sofort anzeigen (benötigt JavaScript) (experimentell)',
 'tog-forceeditsummary' => 'Warnen, sofern beim Speichern die Zusammenfassung fehlt',
 'tog-watchlisthideown' => 'Eigene Bearbeitungen in der Beobachtungsliste ausblenden',
 'tog-watchlisthidebots' => 'Bearbeitungen durch Bots in der Beobachtungsliste ausblenden',
@@ -1184,7 +1184,7 @@ Grund der Sperre: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Logbücher dieser Seite anzeigen',
-'nohistory' => 'Es gibt keine Versionsgeschichte für diese Seite.',
+'nohistory' => 'Zu dieser Seite ist keine Versionsgeschichte vorhanden.',
 'currentrev' => 'Aktuelle Version',
 'currentrev-asof' => 'Aktuelle Version vom $2, $3 Uhr',
 'revisionasof' => 'Version vom $2, $3 Uhr',
@@ -1445,7 +1445,7 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
 'prefs-watchlist' => 'Beobachtungsliste',
 'prefs-watchlist-days' => 'Maximale Anzahl der einbezogenen Tage:',
 'prefs-watchlist-days-max' => 'Maximal {{PLURAL:$1|ein Tag|$1 Tage}}',
-'prefs-watchlist-edits' => 'Maximale Anzahl der einbezogenen Einträge:',
+'prefs-watchlist-edits' => 'Maximale Anzahl der angezeigten Einträge:',
 'prefs-watchlist-edits-max' => 'Maximal 1.000 Einträge',
 'prefs-watchlist-token' => 'Beobachtungslisten-Token:',
 'prefs-misc' => 'Verschiedenes',
@@ -1465,7 +1465,7 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
 'resultsperpage' => 'Treffer pro Seite:',
 'stub-threshold' => 'Linkformatierung <a href="#" class="stub">kleiner Seiten</a> (in Byte):',
 'stub-threshold-disabled' => 'Deaktiviert',
-'recentchangesdays' => 'Anzahl der Tage, die die Liste der „Letzten Änderungen“ standardmäßig umfassen soll:',
+'recentchangesdays' => 'Anzahl der standardmäßig einbezogenen Tage:',
 'recentchangesdays-max' => 'Maximal $1 {{PLURAL:$1|Tag|Tage}}',
 'recentchangescount' => 'Anzahl der standardmäßig angezeigten Bearbeitungen:',
 'prefs-help-recentchangescount' => 'Dies umfasst die Liste der letzten Änderungen, die Versionsgeschichte und die Logbücher.',
@@ -2040,8 +2040,8 @@ Eine [[Special:WhatLinksHere/$2|vollständige Liste]] ist verfügbar.',
 Vielleicht möchtest du die Beschreibung auf der dortigen [$2 Dateibeschreibungsseite] bearbeiten.',
 'sharedupload-desc-create' => 'Diese Datei stammt aus $1 und kann von anderen Projekten verwendet werden.
 Vielleicht möchtest du die Beschreibung auf der dortigen [$2 Dateibeschreibungsseite] bearbeiten.',
-'filepage-nofile' => 'Es existiert keine Datei mit diesem Namen.',
-'filepage-nofile-link' => 'Es existiert keine Datei mit diesem Namen, aber du kannst [$1 diese Datei hochladen].',
+'filepage-nofile' => 'Es ist keine Datei dieses namens vorhanden.',
+'filepage-nofile-link' => 'Es ist keine Datei dieses namens vorhanden. Du kannst jedoch [$1 diese Datei hochladen].',
 'uploadnewversion-linktext' => 'Eine neue Version dieser Datei hochladen',
 'shared-repo-from' => 'aus $1',
 'shared-repo' => 'einem gemeinsam genutzten Medienarchiv',
@@ -2235,6 +2235,7 @@ Bitte prüfe, ob sie korrekt von der Quelle übertragen wurde.',
 Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seitentitels eingeschränkt werden (Groß-/Kleinschreibung muss beachtet werden).',
 'logempty' => 'Keine passenden Einträge.',
 'log-title-wildcard' => 'Titel beginnt mit …',
+'showhideselectedlogentries' => 'Ausgewählte Logbucheinträge anzeigen/verstecken',
 
 # Special:AllPages
 'allpages' => 'Alle Seiten',
@@ -2970,7 +2971,7 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 'importuploaderrortemp' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Ein temporäres Verzeichnis fehlt.',
 'import-parse-failure' => 'Fehler beim XML-Import:',
 'import-noarticle' => 'Es wurde keine zu importierende Seite angegeben!',
-'import-nonewrevisions' => 'Es sind keine neuen Versionen zum Import vorhanden, alle Versionen wurden bereits früher importiert.',
+'import-nonewrevisions' => 'Alle Versionen wurden bereits zu einem früheren Zeitpunkt importiert.',
 'xml-error-string' => '$1 Zeile $2, Spalte $3, (Byte $4): $5',
 'import-upload' => 'XML-Daten importieren',
 'import-token-mismatch' => 'Verlust der Sessiondaten. Bitte versuche es erneut.',
@@ -3126,7 +3127,8 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
 'spamprotectionmatch' => "'''Der folgende Text wurde vom Spamfilter gefunden: ''$1'''''",
 'spambot_username' => 'MediaWiki-Spam-Säuberung',
 'spam_reverting' => 'Letzte Version ohne Links zu $1 wiederhergestellt.',
-'spam_blanking' => 'Alle Versionen enthielten Links zu $1, bereinigt.',
+'spam_blanking' => 'Alle Versionen mit einem Link zu $1 wurden bereinigt.',
+'spam_deleting' => 'Alle Versionen mit einem Link zu $1 wurden gelöscht.',
 
 # Info page
 'pageinfo-title' => 'Informationen zu „$1“',
@@ -3776,8 +3778,8 @@ Bitte bestätige, dass du diese Seite wirklich neu erstellen möchten.",
 # Live preview
 'livepreview-loading' => 'Lade …',
 'livepreview-ready' => 'Laden … Fertig!',
-'livepreview-failed' => 'Die sofortige Vorschau ist nicht möglich!
-Bitte die normale Vorschau nutzen.',
+'livepreview-failed' => 'Die Vorschau kann nicht sofort angezeigt werden!
+Bitte nutze die reguläre Vorschau.',
 'livepreview-error' => 'Verbindung nicht möglich: $1 „$2“. Bitte die normale Vorschau benutzen.',
 
 # Friendlier slave lag warnings
index 6e0e6c5..125d5f7 100644 (file)
@@ -38,28 +38,234 @@ $namespaceNames = array(
 );
 
 $specialPageAliases = array(
-       'Activeusers'               => array( 'Karbereaktiv' ),
+       'Activeusers'               => array( 'KarbereAktivi', 'AktivKarberi' ),
        'Allmessages'               => array( 'MesaciPero' ),
-       'Categories'                => array( 'Kategoriy' ),
-       'Longpages'                 => array( 'PeleDergi' ),
+       'Allpages'                  => array( 'PeleyPero' ),
+       'Ancientpages'              => array( 'PeleyVereni' ),
+       'Badtitle'                  => array( 'SernameyoXırab' ),
+       'Blankpage'                 => array( 'PelaVeng', 'VengPela' ),
+       'Block'                     => array( 'Bloke', 'BlokeIP', 'BlokeKarber' ),
+       'Blockme'                   => array( 'BlokeMe' ),
+       'Booksources'               => array( 'KıtabeÇıme' ),
+       'BrokenRedirects'           => array( 'HetenayışoXırab' ),
+       'Categories'                => array( 'Kategoriye' ),
+       'ChangeEmail'               => array( 'EpostaBıvurne' ),
+       'ChangePassword'            => array( 'ParolaBıvurne', 'ParolaResetke' ),
+       'ComparePages'              => array( 'PelaPêverke' ),
+       'Confirmemail'              => array( 'EpostayAraştke' ),
+       'Contributions'             => array( 'İştiraxi' ),
+       'CreateAccount'             => array( 'HesabVırazê' ),
+       'Deadendpages'              => array( 'PelaBêgıre' ),
+       'DeletedContributions'      => array( 'İştıraxêkeBesterneyayê' ),
+       'Disambiguations'           => array( 'ManeoBin' ),
+       'DoubleRedirects'           => array( 'DıletHeteneayış' ),
+       'EditWatchlist'             => array( 'ListeyaSeyriVurnayış' ),
+       'Emailuser'                 => array( 'EpostayaKarberi' ),
+       'Export'                    => array( 'Ateberde' ),
+       'Fewestrevisions'           => array( 'TewrtaynRevizyon' ),
+       'FileDuplicateSearch'       => array( 'KopyaydosyaCıgeyrayış', 'DıletdosyaCıgeyrayış' ),
+       'Filepath'                  => array( 'RayaDosya', 'HerunaDosya', 'CayêDosya' ),
+       'Import'                    => array( 'Azeredê', 'Atewrke' ),
+       'Invalidateemail'           => array( 'TesdiqêepostaBıterknê' ),
+       'BlockList'                 => array( 'ListeyêBLoki', 'IPBloki', 'Blokeyê_IP' ),
+       'LinkSearch'                => array( 'GreCıgeyrayış' ),
+       'Listadmins'                => array( 'ListeyêXizmetkaran' ),
+       'Listbots'                  => array( 'ListeyêBotan' ),
+       'Listfiles'                 => array( 'ListeyêDosyayan', 'DosyayaListeke', 'ListeyêResiman' ),
+       'Listgrouprights'           => array( 'ListeyêHeqêGruban', 'HeqêGrubdeKarberan' ),
+       'Listredirects'             => array( 'ListeyêHetanayışi' ),
+       'Listusers'                 => array( 'ListeyêKarberan', 'KarberaListeke' ),
+       'Lockdb'                    => array( 'DBKilitke' ),
+       'Log'                       => array( 'Qeyd', 'Qeydi' ),
+       'Lonelypages'               => array( 'PeleyêBêkesi' ),
+       'Longpages'                 => array( 'PeleyeDergi' ),
+       'MergeHistory'              => array( 'RavêrdaPêtewrke' ),
+       'MIMEsearch'                => array( 'NIMECıgeyrayış' ),
+       'Mostcategories'            => array( 'TewrvêşiKategoriyıni' ),
+       'Mostimages'                => array( 'DosyeyêkeCırêvêşiGreDeyayo' ),
+       'Mostlinked'                => array( 'PeleyêkeCırêvêşiGreDeyayo' ),
+       'Mostlinkedcategories'      => array( 'KategoriyêkeCırêvêşiGreDeyayo' ),
+       'Mostlinkedtemplates'       => array( 'ŞablonêkeCırêvêşiGreDeyayo' ),
+       'Mostrevisions'             => array( 'TewrvêşiRevizyon' ),
+       'Movepage'                  => array( 'PelaAhuln' ),
        'Mycontributions'           => array( 'İştırakeMe' ),
-       'Recentchanges'             => array( 'VurnayışePeyeni' ),
+       'Mypage'                    => array( 'PelaMe' ),
+       'Mytalk'                    => array( 'PersiyeME' ),
+       'Myuploads'                 => array( 'BarkerdışeMe' ),
+       'Newimages'                 => array( 'DosyeyêNewey', 'ResimêNewey' ),
+       'Newpages'                  => array( 'PeleyeNewey' ),
+       'PasswordReset'             => array( 'ParolaReset' ),
+       'PermanentLink'             => array( 'DaimiGre' ),
+       'Popularpages'              => array( 'PeleyêPopuleri' ),
+       'Preferences'               => array( 'Tercihi' ),
+       'Prefixindex'               => array( 'SerVerole' ),
+       'Protectedpages'            => array( 'PeleyêkeStaryayê' ),
+       'Protectedtitles'           => array( 'SernameyêkeStaryayê' ),
+       'Randompage'                => array( 'Raştamê', 'PelayakeRaştamê' ),
+       'Randomredirect'            => array( 'HetenayışoRaştmae' ),
+       'Recentchanges'             => array( 'VurnayışêPeyêni' ),
+       'Recentchangeslinked'       => array( 'GreyêVurnayışêPeyêni' ),
+       'Revisiondelete'            => array( 'RevizyoniBesterne' ),
+       'RevisionMove'              => array( 'RevizyoniAhulne' ),
+       'Search'                    => array( 'Cıgeyre' ),
+       'Shortpages'                => array( 'PeleyêKılmi' ),
        'Specialpages'              => array( 'PeleyXısusi' ),
        'Statistics'                => array( 'İstatistiki' ),
        'Tags'                      => array( 'Etiketi' ),
+       'Unblock'                   => array( 'Bloqihewad' ),
+       'Uncategorizedcategories'   => array( 'KategoriyêkeKategorinêbiyê' ),
+       'Uncategorizedimages'       => array( 'DosyeyêkeKategorinêbiyê' ),
+       'Uncategorizedpages'        => array( 'PeleyêkeKategorinêbiyê' ),
+       'Uncategorizedtemplates'    => array( 'ŞablonêkeKategorinêbiyê' ),
+       'Undelete'                  => array( 'Peyserbiya' ),
+       'Unlockdb'                  => array( 'DBKlitiake' ),
+       'Unusedcategories'          => array( 'KategoriyêkeNêkaryayê' ),
+       'Unusedimages'              => array( 'DosyeyêkeNêkaryayê' ),
+       'Unusedtemplates'           => array( 'ŞablonêkeNêkaryayê' ),
+       'Unwatchedpages'            => array( 'PeleyêkeNêweyneyênê' ),
        'Upload'                    => array( 'Barke' ),
+       'UploadStash'               => array( 'BarkerdışêNımtey' ),
+       'Userlogin'                 => array( 'KarberDekewtış' ),
+       'Userlogout'                => array( 'KarberVıcyayış' ),
+       'Userrights'                => array( 'HeqêKarberan', 'SysopKerdış', 'BotKerdış' ),
        'Version'                   => array( 'Versiyon' ),
+       'Wantedcategories'          => array( 'KategoriyêkeWazênê' ),
+       'Wantedfiles'               => array( 'DosyeyêkeWazênê' ),
+       'Wantedpages'               => array( 'PeleyêkeWazênê' ),
+       'Wantedtemplates'           => array( 'ŞablonyêkeWazênê' ),
        'Watchlist'                 => array( 'Listeyseyri' ),
+       'Whatlinkshere'             => array( 'PelarêGre' ),
+       'Withoutinterwiki'          => array( 'Bêİnterwiki' ),
 );
 
 $magicWords = array(
        'redirect'                => array( '0', '#HETENAYIŞ', '#REDIRECT' ),
-       'nogallery'               => array( '0', '#GALERİÇINO', '__NOGALLERY__' ),
+       'notoc'                   => array( '0', '__ESTENÇINO__', '__NOTOC__' ),
+       'nogallery'               => array( '0', '__GALERİÇINO__', '__NOGALLERY__' ),
+       'forcetoc'                => array( '0', '__ESTENZARURET__', '__FORCETOC__' ),
+       'toc'                     => array( '0', '__ESTEN__', '__TOC__' ),
+       'noeditsection'           => array( '0', '__TİMARKERDIŞÇINO__', '__NOEDITSECTION__' ),
+       'noheader'                => array( '0', '__SERNAMEÇINO__', '__NOHEADER__' ),
+       'currentmonth'            => array( '1', 'MEWCUDAŞMİ', 'MEWCUDAŞMİ2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth1'           => array( '1', 'MEWCUDAŞMİ1', 'CURRENTMONTH1' ),
+       'currentmonthname'        => array( '1', 'NAMEYAŞMDAMEWCUD', 'CURRENTMONTHNAME' ),
+       'currentmonthnamegen'     => array( '1', 'MEWCUDAŞMACI', 'CURRENTMONTHNAMEGEN' ),
+       'currentmonthabbrev'      => array( '1', 'MEWCUDAŞMİKILMKERDIŞ', 'CURRENTMONTHABBREV' ),
+       'currentday'              => array( '1', 'MEWCUDROCE', 'CURRENTDAY' ),
+       'currentday2'             => array( '1', 'MEWCUDROCE2', 'CURRENTDAY2' ),
+       'currentdayname'          => array( '1', 'NAMEYÊMEWCUDROCE', 'CURRENTDAYNAME' ),
+       'currentyear'             => array( '1', 'MEWCUDSERRE', 'CURRENTYEAR' ),
+       'currenttime'             => array( '1', 'MEWCUDDEME', 'CURRENTTIME' ),
+       'currenthour'             => array( '1', 'MEWCUDSEHAT', 'CURRENTHOUR' ),
+       'localmonth'              => array( '1', 'WAREYAŞMİ', 'WAREYAŞMİ2', 'LOCALMONTH', 'LOCALMONTH2' ),
+       'localmonth1'             => array( '1', 'WAREYAŞMİ1', 'LOCALMONTH1' ),
+       'localmonthname'          => array( '1', 'NAMEYÊWAREYAŞMİ', 'LOCALMONTHNAME' ),
+       'localmonthnamegen'       => array( '1', 'NAMEYWAREDÊAŞMİDACI', 'LOCALMONTHNAMEGEN' ),
+       'localmonthabbrev'        => array( '1', 'WAREYAŞMİKILMKERDIŞ', 'LOCALMONTHABBREV' ),
+       'localday'                => array( '1', 'WAREYROCE', 'LOCALDAY' ),
+       'localday2'               => array( '1', 'WAREYROCE2', 'LOCALDAY2' ),
+       'localdayname'            => array( '1', 'NAMEYÊWAREYROCE', 'LOCALDAYNAME' ),
+       'localyear'               => array( '1', 'WAREYSERRE', 'LOCALYEAR' ),
+       'localtime'               => array( '1', 'WAREYDEME', 'LOCALTIME' ),
+       'localhour'               => array( '1', 'WAREYSEHAT', 'LOCALHOUR' ),
+       'numberofpages'           => array( '1', 'AMARİYAPELAN', 'NUMBEROFPAGES' ),
+       'numberofarticles'        => array( '1', 'AMARİYAWESİQAN', 'NUMBEROFARTICLES' ),
+       'numberoffiles'           => array( '1', 'AMARİYADOSYAYAN', 'NUMBEROFFILES' ),
+       'numberofusers'           => array( '1', 'AMARİYAKARBERAN', 'NUMBEROFUSERS' ),
+       'numberofactiveusers'     => array( '1', 'AMARİYAAKTİVKARBERAN', 'NUMBEROFACTIVEUSERS' ),
+       'numberofedits'           => array( '1', 'AMARİYAVURNAYIŞAN', 'NUMBEROFEDITS' ),
+       'numberofviews'           => array( '1', 'AMARİYAMOCNAYIŞAN', 'NUMBEROFVIEWS' ),
+       'pagename'                => array( '1', 'NAMEYPELA', 'PAGENAME' ),
+       'pagenamee'               => array( '1', 'NAMEYPELAA', 'PAGENAMEE' ),
+       'namespace'               => array( '1', 'CANAME', 'NAMESPACE' ),
+       'namespacee'              => array( '1', 'CANAMEE', 'NAMESPACEE' ),
+       'namespacenumber'         => array( '1', 'AMARİYACANAME', 'NAMESPACENUMBER' ),
+       'talkspace'               => array( '1', 'CAYÊWERÊNAYIŞİ', 'TALKSPACE' ),
+       'talkspacee'              => array( '1', 'CAYÊWERÊNAYIŞAN', 'TALKSPACEE' ),
+       'subjectspace'            => array( '1', 'CAYÊMESEL', 'CAYÊWESİQE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+       'subjectspacee'           => array( '1', 'CAYÊMESELAN', 'CAYÊWESİQAN', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+       'fullpagename'            => array( '1', 'NAMEYPELAPÊRO', 'FULLPAGENAME' ),
+       'fullpagenamee'           => array( '1', 'NAMEYPELAPÊRON', 'FULLPAGENAMEE' ),
+       'subpagename'             => array( '1', 'NAMEYBINPELA', 'SUBPAGENAME' ),
+       'subpagenamee'            => array( '1', 'NAMEYBINPELAA', 'SUBPAGENAMEE' ),
+       'basepagename'            => array( '1', 'NAMEYSERPELA', 'BASEPAGENAME' ),
+       'basepagenamee'           => array( '1', 'NAMEYSERPELAA', 'BASEPAGENAMEE' ),
+       'talkpagename'            => array( '1', 'NAMEYPELAWERÊNAYIŞ', 'TALKPAGENAME' ),
+       'talkpagenamee'           => array( '1', 'NAMEYPELAWERÊNAYIŞAN', 'TALKPAGENAMEE' ),
+       'subjectpagename'         => array( '1', 'NAMEYPELAMESEL', 'NAMEYPELAWESİQE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+       'subjectpagenamee'        => array( '1', 'NAMEYPELAMESELER', 'NAMEYPELAQESİQER', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
        'msg'                     => array( '0', 'MSC', 'MSG:' ),
+       'subst'                   => array( '0', 'KOPYAKE', 'ATEBERDE', 'SUBST:' ),
+       'safesubst'               => array( '0', 'EMELEYATEBERDE', 'SAFESUBST:' ),
+       'msgnw'                   => array( '0', 'MSJNW:', 'MSGNW:' ),
+       'img_thumbnail'           => array( '1', 'resmowerdı', 'werdı', 'thumbnail', 'thumb' ),
+       'img_manualthumb'         => array( '1', 'resmowerdı=$1', 'erwdı=$1', 'thumbnail=$1', 'thumb=$1' ),
+       'img_right'               => array( '1', 'raşt', 'right' ),
+       'img_left'                => array( '1', 'çep', 'left' ),
+       'img_none'                => array( '1', 'çıno', 'none' ),
+       'img_width'               => array( '1', '$1pik', '$1piksel', '$1px' ),
+       'img_center'              => array( '1', 'werte', 'miyan', 'center', 'centre' ),
+       'img_framed'              => array( '1', 'çerçeweyın', 'çerçeweya', 'çerçewe', 'framed', 'enframed', 'frame' ),
+       'img_frameless'           => array( '1', 'beçerçewe', 'frameless' ),
+       'img_page'                => array( '1', 'pela=$1', 'pela_$1', 'page=$1', 'page $1' ),
+       'img_border'              => array( '1', 'sinor', 'border' ),
+       'img_top'                 => array( '1', 'gedug', 'top' ),
+       'img_middle'              => array( '1', 'merkez', 'middle' ),
+       'img_link'                => array( '1', 'gre=$1', 'link=$1' ),
+       'int'                     => array( '0', 'İNT:', 'INT:' ),
+       'scriptpath'              => array( '0', 'RAYASCRIPTİ', 'SCRIPTPATH' ),
+       'stylepath'               => array( '0', 'TERZÊTEWRİ', 'STYLEPATH' ),
+       'grammar'                 => array( '0', 'GRAMER:', 'GRAMMAR:' ),
+       'gender'                  => array( '0', 'CİNSİYET:', 'GENDER:' ),
+       'notitleconvert'          => array( '0', '__SERNAMEVURNAYIŞÇINO__', '__SVÇ__', '__NOTITLECONVERT__', '__NOTC__' ),
+       'nocontentconvert'        => array( '0', '__ZERREVURNAYIŞÇINO__', '__ZVÇ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+       'currentweek'             => array( '1', 'MEVCUDHEFTE', 'CURRENTWEEK' ),
+       'currentdow'              => array( '1', 'MEVCUDWAREYHEFTİ', 'CURRENTDOW' ),
+       'localweek'               => array( '1', 'WAREYHEFTİ', 'LOCALWEEK' ),
+       'localdow'                => array( '1', 'WAREYROCAHEFTİ', 'LOCALDOW' ),
+       'revisionid'              => array( '1', 'NIMREYREVİZYONİ', 'REVISIONID' ),
+       'revisionday'             => array( '1', 'ROCAREVİZYONİ', 'REVISIONDAY' ),
+       'revisionday2'            => array( '1', 'ROCAREVİZYON1', 'REVISIONDAY2' ),
+       'revisionmonth'           => array( '1', 'AŞMAREVİZYONİ', 'REVISIONMONTH' ),
+       'revisionmonth1'          => array( '1', 'AŞMAREVİZYONİ1', 'REVISIONMONTH1' ),
+       'revisionyear'            => array( '1', 'SERRAREVİZYONİ', 'REVISIONYEAR' ),
+       'revisiontimestamp'       => array( '1', 'MELUMATÊREVİZYONÊDEMİ', 'REVISIONTIMESTAMP' ),
+       'revisionuser'            => array( '1', 'REVİZYONKARBER', 'REVISIONUSER' ),
+       'plural'                  => array( '0', 'ZAFEN:', 'PLURAL:' ),
+       'fullurl'                 => array( '0', 'GREPÊRO:', 'FULLURL:' ),
+       'fullurle'                => array( '0', 'GREYOPÊRON:', 'FULLURLE:' ),
+       'canonicalurl'            => array( '0', 'GREYÊKANONİK:', 'CANONICALURL:' ),
+       'canonicalurle'           => array( '0', 'GREYOKANONİK:', 'CANONICALURLE:' ),
+       'lcfirst'                 => array( '0', 'KHİLK:', 'LCFIRST:' ),
+       'ucfirst'                 => array( '0', 'BHİLK:', 'UCFIRST:' ),
+       'lc'                      => array( '0', 'KH:', 'LC:' ),
+       'uc'                      => array( '0', 'BH:', 'UC:' ),
+       'raw'                     => array( '0', 'XAM:', 'RAW:' ),
+       'displaytitle'            => array( '1', 'SERNAMEİBIMOCNE', 'DISPLAYTITLE' ),
+       'newsectionlink'          => array( '1', '__GREYÊSERNAMEDÊNEWİ__', '__NEWSECTIONLINK__' ),
+       'nonewsectionlink'        => array( '1', '__GREYÊSERNAMEDÊNEWİÇINO__', '__NONEWSECTIONLINK__' ),
+       'currentversion'          => array( '1', 'MEWCUDVERSİYON', 'CURRENTVERSION' ),
+       'currenttimestamp'        => array( '1', 'MEWCUDWAREYSEHAT', 'CURRENTTIMESTAMP' ),
+       'localtimestamp'          => array( '1', 'MALUMATÊWAREYSEHAT', 'LOCALTIMESTAMP' ),
        'language'                => array( '0', '#ZIWAN', '#LANGUAGE:' ),
+       'contentlanguage'         => array( '1', 'ZIWANÊESTİN', 'ZIWESTEN', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+       'pagesinnamespace'        => array( '1', 'PELEYÊKECADÊNAMİDEYÊ', 'PELECN', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+       'numberofadmins'          => array( '1', 'AMARİYAXİZMETKARAN', 'NUMBEROFADMINS' ),
+       'formatnum'               => array( '0', 'BABETNAYIŞ', 'FORMATNUM' ),
        'special'                 => array( '0', 'xısusi', 'special' ),
        'speciale'                => array( '0', 'xısusiye', 'speciale' ),
+       'defaultsort'             => array( '1', 'RATNAYIŞOHESBNAYIŞ', 'QESAYARATNAYIŞOHESBNAYIŞ', 'KATEGORİYARATNAYIŞOHESBNAYIŞ', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+       'filepath'                => array( '0', 'RAYADOSYA:', 'FILEPATH:' ),
        'tag'                     => array( '0', 'etiket', 'tag' ),
+       'hiddencat'               => array( '1', '__KATEGORİYANIMITİ__', '__HIDDENCAT__' ),
+       'pagesincategory'         => array( '1', 'PELEYÊKEKATEGORİDEYÊ', 'KATDÊPELEY', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesize'                => array( '1', 'EBATÊPELA', 'PAGESIZE' ),
+       'index'                   => array( '1', '__SERSIQ__', '__INDEX__' ),
+       'noindex'                 => array( '1', '__SERSIQÇINYO__', '__NOINDEX__' ),
+       'numberingroup'           => array( '1', 'GRUBDEAMARE', 'AMARİYAGRUBER', 'NUMBERINGROUP', 'NUMINGROUP' ),
+       'staticredirect'          => array( '1', '__STATİKHETENAYIŞ__', '__STATICREDIRECT__' ),
+       'protectionlevel'         => array( '1', 'SEWİYEYÊSTARE', 'PROTECTIONLEVEL' ),
+       'url_wiki'                => array( '0', 'WİKİ', 'WIKI' ),
 );
 
 $messages = array(
@@ -104,9 +310,11 @@ $messages = array(
 'tog-watchlisthideliu' => 'Lista seyrkerdışi ra vurnayışanê karberanê cıkewteyan bınımne',
 'tog-watchlisthideanons' => 'Lista seyrkerdışi ra vurnayışanê karberanê anoniman bınımne',
 'tog-watchlisthidepatrolled' => 'Lista seyrkerdışi ra vurnayışanê qontrol kerdeyan bınımne',
+'tog-nolangconversion' => 'Varyant çerx kerdışa bıqefılne',
 'tog-ccmeonemails' => 'E-posteyanê ke ez karberanê binan rê rışenan, mı rê kopya inan bırışe',
 'tog-diffonly' => 'Qıyasê versiyonan de tek ferqan bımocne, pela butıne nê',
 'tog-showhiddencats' => 'Kategoriyanê dızdine bımocne',
+'tog-noconvertlink' => 'Greyê sernami çerx kerdışi bıqefılne',
 'tog-norollbackdiff' => 'Peyserardışi ra dıme ferqi caverde',
 
 'underline-always' => 'Tım',
@@ -173,7 +381,7 @@ $messages = array(
 'dec' => 'Kan',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kategoriye|Kategoriy}}',
+'pagecategories' => '{{PLURAL:$1|Kategori|Kategoriy}}',
 'category_header' => 'Pelê ke kategoriya "$1" derê',
 'subcategories' => 'Kategoriyê bınêni',
 'category-media-header' => 'Medyawa ke kategoriya "$1" dera',
@@ -190,13 +398,14 @@ $messages = array(
 'index-category' => 'Pelê endeksıni',
 'noindex-category' => 'Pelê ke endeksıni niyê',
 'broken-file-category' => 'Peleye ke linkê Dosyayandê xelata muhtewa kenê',
+'categoryviewer-pagedlinks' => '($1) ($2)',
 
 'linkprefix' => "'''MediaWiki niya ro.'''",
 
 'about' => 'Heqa',
-'article' => 'Pela tedeesteyan',
+'article' => 'Wesiqe',
 'newwindow' => '(zerrey pençereyê dê newey de beno a)',
-'cancel' => 'Texelnayış',
+'cancel' => 'Bıterkne',
 'moredotdotdot' => 'Vêşêri...',
 'mypage' => 'Pela mı',
 'mytalk' => 'Persiyê mı',
@@ -216,19 +425,19 @@ $messages = array(
 'faqpage' => 'Project: PZP',
 
 # Vector skin
-'vector-action-addsection' => 'Qal berze cı',
+'vector-action-addsection' => 'Mesel Vırazê',
 'vector-action-delete' => 'Besterne',
 'vector-action-move' => 'Ahûln',
 'vector-action-protect' => 'Bıpawe',
 'vector-action-undelete' => 'Esterıtışi peyser bıgê',
 'vector-action-unprotect' => 'Starkerdışi bıvurne',
-'vector-simplesearch-preference' => 'Tewsiyanê cıgeyrayışiê raverberdeyan ake (Tenya vector skin de)',
+'vector-simplesearch-preference' => 'Tewsiyanê cıgeyrayışê raverberdan ake (Tenya vector skin de)',
 'vector-view-create' => 'Vıraze',
 'vector-view-edit' => 'Bıvurne',
-'vector-view-history' => 'Tarixi bımocne',
-'vector-view-view' => 'Bıwane',
+'vector-view-history' => 'Ravêrda bımocne',
+'vector-view-view' => 'Bıwanê',
 'vector-view-viewsource' => 'Çımey bıvêne',
-'actions' => 'Karê kerdey',
+'actions' => 'Kerdeni',
 'namespaces' => 'Cayê namey',
 'variants' => 'Varyanti',
 
@@ -240,10 +449,10 @@ $messages = array(
 'searchbutton' => 'Cı geyre',
 'go' => 'Şo',
 'searcharticle' => 'Şo',
-'history' => 'Tarixê pele',
-'history_short' => 'Tarix',
+'history' => 'Ravêrdena pela',
+'history_short' => 'Ravêrden',
 'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
-'printableversion' => 'Asayışê çapkerdışi',
+'printableversion' => 'Asayışo çapkerden',
 'permalink' => 'Gıreyo daimi',
 'print' => 'Çap ke',
 'view' => 'Bıvêne',
@@ -260,7 +469,7 @@ $messages = array(
 'protectthispage' => 'Ena pele bıpawe',
 'unprotect' => 'Starkerdışi bıvurne',
 'unprotectthispage' => 'Starkerdışe ena peler bıvurne',
-'newpage' => 'Pela newiye',
+'newpage' => 'Pela newi',
 'talkpage' => 'Ena pele sero werêne',
 'talkpagelinktext' => 'Mesac',
 'specialpage' => 'Pela xısusi',
@@ -303,22 +512,22 @@ $1',
 'copyrightpage' => '{{ns:project}}:Heqa telifi',
 'currentevents' => 'Veng u vac',
 'currentevents-url' => 'Project:Veng u vac',
-'disclaimers' => 'Redê mesulêti',
+'disclaimers' => 'Redê mesuliyeti',
 'disclaimerpage' => 'Project:Reddê mesuliyetê bıngey',
-'edithelp' => 'Peştdarina vurnayışi',
-'edithelppage' => 'Help:Pele çıtewr vurniyena',
-'helppage' => 'Help:Tedeestey',
+'edithelp' => 'Seni vurneyêno?',
+'edithelppage' => 'Help:Pela seni vurniyêna',
+'helppage' => 'Help:Estêni',
 'mainpage' => 'Pela Seri',
 'mainpage-description' => 'Pela Seri',
 'policy-url' => 'Project:Terzê hereketi',
 'portal' => 'Portalê cemaeti',
 'portal-url' => 'Project:Portalê cemaeti',
 'privacy' => 'Madeyê dızdine',
-'privacypage' => 'Project:Madeyê dızdine',
+'privacypage' => 'Project:Xısusiyetê nımtışi',
 
 'badaccess' => 'Xeta mısadey',
 'badaccess-group0' => 'Heqa şıma çıniya, karo ke şıma waşt, bıkerê.',
-'badaccess-groups' => 'No fealiyetê şımawo waşte tenya karberanê {{PLURAL:$2|grubi|gruban ra yewi}} rê akerdeyo: $1.',
+'badaccess-groups' => 'No fealiyeto ke şıma waşt, tenya karberanê {{PLURAL:$2|grubi|gruban ra yewi}} rê akerdeyo: $1.',
 
 'versionrequired' => 'No $1 MediaWiki lazımo',
 'versionrequiredtext' => 'Seba gurenayışê na pele versiyonê MediaWiki $1 lazımo. 
@@ -327,6 +536,7 @@ $1',
 'ok' => 'Temam',
 'pagetitle' => '"$1" adres ra gerya.',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
+'backlinksubtitle' => '← $1',
 'retrievedfrom' => '"$1" ra ard',
 'youhavenewmessages' => 'To rê estê $1 ($2).',
 'newmessageslink' => 'mesacê newey',
@@ -339,7 +549,7 @@ $1',
 'editlink' => 'bıvurne',
 'viewsourcelink' => 'çımey bıvêne',
 'editsectionhint' => 'Qısımi bıvurne: $1',
-'toc' => 'Tedeestey',
+'toc' => 'Sernameyê meselan',
 'showtoc' => 'bımocne',
 'hidetoc' => 'bınımne',
 'collapsible-collapse' => 'Kılm ke',
@@ -355,6 +565,7 @@ $1',
 'page-rss-feed' => '"$1" Cıresnayışê RSSi',
 'page-atom-feed' => '"$1" Cıresnayışê atomi',
 'feed-atom' => 'Atom',
+'feed-rss' => 'RSS',
 'red-link-title' => '$1 (pele çıniya)',
 'sort-descending' => 'Ratnayışê qemeyayışi',
 'sort-ascending' => 'Ratnayışê Zeydnayışi',
@@ -434,11 +645,12 @@ Fonksiyon: $1<br />
 Perse: $2',
 'viewsource' => 'Çımey bıvêne',
 'viewsource-title' => "Cı geyrayışê $1'i bıvin",
-'actionthrottled' => 'Fealiyet xeneqna',
+'actionthrottled' => 'Kerden peysnaya',
 'actionthrottledtext' => 'Riyê tedbirê anti-spami ra,  wextê do kılmek de şıma nê fealiyeti nêşkenê zaf zêde bıkerê, şıma ki no hedi viyarna ra.
 Çend deqey ra tepeya reyna bıcerrebnên.',
 'protectedpagetext' => 'No pel qey nêvuriyayiş hao (nao) pawyeno.',
 'viewsourcetext' => 'To şikinay çımey na pele bıvêne u kopya kerê:',
+'viewyourtext' => "Na pela '''Vurnayışê ke kerdê''' re şıma şenê kopya kerê:",
 'protectedinterface' => 'No pel qey software nuştey hezır keno u ın semed ra şuxulyayişê no pel qedexe biyo.',
 'editinginterface' => "'''Teme:''' Şıma hao jû pela ke seba nuşteyê meqalanê cayanê bırnayeyan dana, vurnenê.
 Vurnayışê na pele karberanê binan rê serpela karberi kena ke bımocno.
@@ -447,9 +659,16 @@ Seba çarnayışi, yardımê [//translatewiki.net/wiki/Main_Page?setlang=kiu tra
 'cascadeprotected' => 'No pel de vurnayiş qedexe biyo, çunke şıma tuşa "kademeyın" aqtif kerdo u no {{PLURAL:$1|pelo|pelo}} pawıteyo de xebıtyeno:
 $2',
 'namespaceprotected' => "No '''$1''' ca de icazetê şıma çino şıma pel rêz keri.",
+'customcssprotected' => 'Na pela vurnayışi re mısadey şıma çınyo, çıkı na pela xısusi sazanê karbera muhtewa kena.',
+'customjsprotected' => 'Na pela Java Scripti vurnayışi re mısadey şıma çınyo, çıkı na pela xısusi sazanê karbera muhtewa kena.',
 'ns-specialprotected' => 'Peley xısusi 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.
+
+Xızmetkarê  kılitkerdışi wa bewni ro enay wa çımra ravyarno: "$3".',
+'invalidtitle-knownnamespace' => 'Canemey "$2" u metnê "$3" xırabo',
+'invalidtitle-unknownnamespace' => 'Sernameye nêşınasiya yana amraiya canameyo  $1 u metno "$2" xırab',
 
 # Virus scanner
 'virus-badscanner' => "Eyaro şaş: no virus-cıgerayox nêzanyeno: ''$1''",
@@ -469,15 +688,16 @@ Hesabê şıma biyo a.
 'yourpassword' => 'Parola',
 'yourpasswordagain' => 'Parola reyna bınusne:',
 'remembermypassword' => 'Parola mı nê cıgeyraoği de biya xo viri (heta $1 {{PLURAL:$1|roc|roci}}).',
+'securelogin-stick-https' => "Dekewtış kerdışi dıma HTTPS'i dı grêdaye bıman",
 'yourdomainname' => 'Nameyê şıma yo meydani',
 'externaldberror' => 'Ya database de xeta esta ya zi heqê şıma çino şıma no hesab bıvurni.',
 'login' => 'Cı kewe',
-'nav-login-createaccount' => 'Cı kewe / hesab vıraze',
+'nav-login-createaccount' => 'Dekew de / hesab vıraze',
 'loginprompt' => "Cıkewtena {{SITENAME}}i rê gani ''cookies'' akerdey bê.",
 'userlogin' => 'Cı kewe / hesab vıraze',
 'userloginnocreate' => 'Cı kewe',
 'logout' => 'Cı ra veciye',
-'userlogout' => 'Vıcyayış',
+'userlogout' => 'Bıvciyê',
 'notloggedin' => 'Hesab akerde niyo',
 'nologin' => "Hesabê şıma çıniyo? '''$1'''.",
 'nologinlink' => 'Yew hesab ake',
@@ -499,6 +719,9 @@ Ravêri inan akerê, dıma be name u parola şımawa newiye cı kewê.',
 'nocookieslogin' => 'Semedê akerdışê hesabi çerezê {{SITENAME}}i gurêniyenê.
 Şıma çerezi qapan kerdi.
 Ravêri inan akerê u reyna bıcerrebnê.',
+'nocookiesfornew' => 'Hesabê karberi nêvıraziya, MA nêzana sebebê cı kotirawo.
+Akerdış dê çerezarê xo emel bê uena pela fına barkerê.',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
 'noname' => 'Yew nameyo maqbul bınuse.',
 'loginsuccesstitle' => 'Hesab abıya',
 'loginsuccess' => "'''{{SITENAME}} dı name dê \"\$1\" şıma hesab akerdo.'''",
@@ -510,8 +733,9 @@ Nuştışê xo qonrol kerên, ya zi [[Special:UserLogin/signup|yew hesabo newe a
 'login-userblocked' => 'No karber/na karbere blokekerdeyo/blokekerdiya. Cıkewtışi rê musade çıniyo.',
 'wrongpassword' => 'Parola ğeleta. Rêna / fına bıcerrebne .',
 'wrongpasswordempty' => 'Parola tola, venga. tekrar bınuse.',
-'passwordtooshort' => 'Parolayê to gani bi {{PLURAL:$1|1 karakter|$1 karakteran}}.',
+'passwordtooshort' => 'Derganiya parola wa tewr tayn {{PLURAL:$1|1 karakter|$1 karakteran}} dı bo.',
 'password-name-match' => 'Parola u nameyê şıma gani zeypê (seypê) nêbo.',
+'password-login-forbidden' => 'No namey karberi u parola karkerdışê cı  kerdo xırab.',
 'mailmypassword' => 'E-mail sera parola newiye bırışe',
 'passwordremindertitle' => 'Qey na keyepel {{SITENAME}} yew parolayo emanet',
 'passwordremindertext' => 'Yew ten (muhtemelen, şıma na aderesê IP ra $1 ) {{SITENAME}} ($4) newe yew parola waşt. "$2" no name ri emanet yew parola vıraziya "$3". Eke na şıma waşta, hesabê xo akere u newe yew parola bıvıraze. Muddetê parolayê şıma yo emanet {{PLURAL:$5|1 roc|$5 roci}}.
@@ -534,6 +758,8 @@ Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
 'noemailprefs' => 'Hesab biyo a.',
 'emailconfirmlink' => 'E-postayê xo tesdiq kere',
 'invalidemailaddress' => 'No format de nuştışê e-postayi qebul nêbeno. Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
+'cannotchangeemail' => 'E-postay hesabi ena wiki sera nêvurneyêno.',
+'emaildisabled' => 'Na site ra e-posta nêrışêno.',
 'accountcreated' => 'Hesab vıraciya',
 'accountcreatedtext' => 'Qey no $1 karker newe yew hesab vıraziya.',
 'createaccount-title' => 'Qey {{SITENAME}} newe yew heab vıraştış',
@@ -542,9 +768,14 @@ Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
 'usernamehasherror' => 'Namey karberi de karakteri gani têmiyan ra mebê',
 'login-throttled' => 'Demekê cıwa ver de şıma zah teşebbusê hesab akerdış kerd.
 Bıne vındere u newe ra dest pê bıkere.',
+'login-abort-generic' => 'Dekewtışê şıma xırabo-terkneyayo',
 'loginlanguagelabel' => 'Zıwan: $1',
 'suspicious-userlogout' => 'Waştişê tu ya veciyayişi kebul nibiya cunki ihtimal o ke waştiş yew browser ya zi proksiyê heripiyaye ra ameya.',
 
+# E-mail sending
+'php-mail-error-unknown' => "PHP's mail() fonksiyoni de xırabin vıcyê.",
+'user-mail-no-addy' => 'Bê E-posta kerd ju e-posta bırşo cırê.',
+
 # Change password dialog
 'resetpass' => 'Parola bıvurne',
 'resetpass_announce' => 'Şıma pê yew parolayê muweqqet hesab kerd a, qey qedyayişe dekewtış newe yew parola bınuse:',
@@ -565,11 +796,14 @@ Bıne vındere u newe ra dest pê bıkere.',
 
 # Special:PasswordReset
 'passwordreset' => 'Parola ancia bınuse',
+'passwordreset-text' => 'Nê formi melumatê hesab dê şıma birê şıma viri deye pırkerê.',
 'passwordreset-legend' => 'Parola ancia bınuse',
+'passwordreset-disabled' => 'Parola reset kerdış ena viki sera qefılneyayo.',
 'passwordreset-pretext' => '{{PLURAL:$1||Enê cerenan ra jeweri defiye de}}',
 'passwordreset-username' => 'Namey karberi:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'neticey e-postay bımocne?',
+'passwordreset-capture-help' => 'Şıma na dorek morkerê se, e-posta (idareten eposta ya) şıma rê yana karbera rê rışêno.',
 'passwordreset-email' => 'Adresa e-postey:',
 'passwordreset-emailtitle' => 'Hesab timarê {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Jeweri, {{SITENAME}} ra (ma heta şımayê, $1 IP adresi ra) ($4) teferuatê hesabdê şıma  va wa biyaro xo viri. Karbero ke cêrdeyo {{PLURAL:$3|hesaba|eno hesaba}} ena e-posta adresiya aleqey cı esto:
@@ -586,10 +820,15 @@ $2
 Ena parolaya deqewe de u xorê ju parolaya newi bıweçine. Parolaya şıma emaya şıma viri se  yana  ena e-posta şıma nê weştase u şıma qayıl niye parolaya xo bıvurnese, ena mesacer peygoş bıkerê.',
 'passwordreset-emailelement' => 'Namey karberi: $1
 Parola vêrdiye: $2',
+'passwordreset-emailsent' => 'E-postay xo vira kerdışi rışiyê.',
+'passwordreset-emailsent-capture' => 'Zey cêri e-postay xo vira kerdışi rışiyê.',
+'passwordreset-emailerror-capture' => 'ey cêri e-postay xo vira kerdışi vıraziyê lakin merdum dê $1 rê nêrışiyê.',
 
 # Special:ChangeEmail
 'changeemail' => 'E-posta adresa xo bıvurnê',
 'changeemail-header' => 'E-posya adresta hesabdê xo bıvurnê',
+'changeemail-text' => 'Şıma qayılê ke e-postay xo bıvurnê se enê formi pırkerê. Qandê tesdiq kerdışi zi parolay xo şıma de bınusnê',
+'changeemail-no-info' => 'Resayışê ena pela rê Dekewtış icab keno.',
 'changeemail-oldemail' => 'E-postay şımaya newki:',
 'changeemail-newemail' => 'E-postay şımayê newe:',
 'changeemail-none' => '(Çıno)',
@@ -611,6 +850,7 @@ Parola vêrdiye: $2',
 'nowiki_tip' => 'Formatê wiki iptal bık',
 'image_sample' => 'resım bıerze cı',
 'image_tip' => 'Dosyaya embedi',
+'media_sample' => 'misal.jpg',
 'media_tip' => 'Gırey dosya',
 'sig_tip' => 'İmzay tı u tarix',
 'hr_tip' => 'Çızgiy Horizantoli (use sparingly)',
@@ -699,12 +939,17 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'userjsyoucanpreview' => "'''Yardim:''' Ser \"{{int:showpreview}}\" sima eskeni CSSe newe test bikeri.",
 'usercsspreview' => "'''şıma tena verqaydê dosyayê CSS vineni.''' '''Dosyayê Karberi CSS hema qayd nebiyo!'''",
 'userjspreview' => "'''şıma tena test keni ya ziverqayn seyr keni - karberê JavaScript'i hema qayd nebiyo.'''",
+'sitecsspreview' => "'''Şımayê enewke tenya verqaytê dosya da CSS vınenê.''' 
+'''Hewna qayd nêbı!'''",
+'sitejspreview' => "'''Şımayê enewke tenya verqaytê kodê dosya da JavaScriptê karberi vınenê.''' 
+'''hewna qayd nebı!'''",
 'userinvalidcssjstitle' => "'''Teme:''' Mewzuyê \"\$1\" çıniyo.
 Dosyanê be namey .css u .js'i de herfa werdiye bıgurêne, mesela herında {{ns:user}}:Foo/Vector.css'i de {{ns:user}}:Foo/vector.css bınuse.",
 'updated' => '(Newenyaya)',
 'note' => "'''Not:'''",
 'previewnote' => "Teme! ena teyna verqeyda.'''
 Vurnayışê tu hama qeyd nıbiyo!",
+'continue-editing' => 'Vurnayışi rê dewam ke',
 'previewconflict' => 'No seyrkerdışê verqaydi serê qutiyê nuşte tezim kerdış de yo, eke şıma qayile vurnayişê maddeyi seyino bıvini, no mocneno şıma.',
 'session_fail_preview' => 'Ma ef kere. Vindibiyayişê tayê datay ra a kerdışê hesabê şıma de ma vurnayişê şıma qayd nêkerd. Newe ra tesel (cereb) bıkere. Eke no qayde zi nêbo, [[Special:UserLogout|hesabê xo bıqefelne]] u newera a kere.',
 'session_fail_preview_html' => "'''Ma meluli! Sebayê vindbiyayişê datasistemi ma vurnayişê şıma nêeşkeni qaydker.'''
@@ -715,6 +960,7 @@ Vurnayışê tu hama qeyd nıbiyo!",
 'token_suffix_mismatch' => "'''Vurnayişê şıma tepeya ameyo çunke qutiyê imla xerıbya.
 Vurnayişê şıma qey nêxerepyayişê peli tepeya geyra a.
 Eke şıma servisê proksi yo anonim şuxulneni sebebê ey noyo.'''",
+'edit_form_incomplete' => "'''Qandê form dê vurnayışa tay wastera ma nêreşti; Vurnayışê ke şıma kerdê nêalızyayê, çım ra ravyarnê u fına bıcerbnê.'''",
 'editing' => 'Pela "$1"\'i bıvurnê',
 'creating' => "Pela $1'i vıraze",
 'editingsection' => '$1 vurneno (qısım)',
@@ -752,6 +998,8 @@ Loge peniye cor de este:",
 'template-protected' => '(kılit biyo)',
 'template-semiprotected' => '(nimey ena pele kılit biya)',
 'hiddencategories' => 'Ena pela bınê {{PLURAL:$1|1 hidden category|$1 categoriyan nımne}}:',
+'edittools' => '<!-- Text here will be shown below edit and upload forms. -->',
+'edittools-upload' => '-',
 'nocreatetitle' => 'Vıraştışê pele mehcuro',
 'nocreatetext' => '{{SITENAME}}, Pelê neweyi vıraştış re destur çino.
 şıma eşkeni tepiya şêri u eke şıma qayd biyaye yê [[Special:UserLogin|şıma eşkeni hesab akeri]], eke niye [[Special:UserLogin|şıma eşkeni qayd bıbiy]].',
@@ -790,6 +1038,12 @@ Taye şabloni zerre pel de nêmociyayeni.',
 'parser-template-loop-warning' => 'Gıreyê şabloni ca biyo: [[$1]]',
 'parser-template-recursion-depth-warning' => 'limitê şablonê newekerdışi biyo de ($1)',
 'language-converter-depth-warning' => 'xoritiya çarnekarê zıwanan viyarnê ra ($1)',
+'node-count-exceeded-category' => 'Pela ra hetê kotya amardışê cı ravêrya',
+'node-count-exceeded-warning' => 'Amariya pela ravêrya.',
+'expansion-depth-exceeded-category' => 'Pela dı hetê canaya zoriya herayin ravêrya',
+'expansion-depth-exceeded-warning' => 'Ravêriya pela xori herayêna',
+'parser-unstrip-loop-warning' => 'Unstrip lete vineya',
+'parser-unstrip-recursion-limit' => 'Sinorê limit dê qayış dê ($1) ravêrya',
 
 # "Undo" feature
 'undo-success' => 'No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.',
@@ -957,6 +1211,7 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 'mergehistory-comment' => '[[:$1]] u [[:$2]] yew biyê: $3',
 'mergehistory-same-destination' => 'Pela çime u destinasyonî gani eyni nibiy.',
 'mergehistory-reason' => 'Sebeb:',
+'mergehistory-revisionrow' => '$1 ($2) $3 . . $4 $5 $6',
 
 # Merge log
 'mergelog' => 'Logê yew kerdişî',
@@ -966,6 +1221,8 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 
 # Diffs
 'history-title' => 'Rewizyonê $1:',
+'difference-title' => 'Ferkê revizyonan de "$1"',
+'difference-title-multipage' => 'Ferkê pelan dê "$1" u "$2"',
 'difference-multipage' => '(Ferqê pelan)',
 'lineno' => 'Rêza $1i:',
 'compareselectedversions' => 'Verziyonan kontrol bıke',
@@ -1031,7 +1288,7 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'powersearch' => 'Cıgeyrayışo hera',
 'powersearch-legend' => 'Cıgeyrayışo hera',
 'powersearch-ns' => 'Cayanê nameyan de cıgeyrayış:',
-'powersearch-redir' => 'Raçarnayeyan lista ke',
+'powersearch-redir' => 'Listeya hetenayışan',
 'powersearch-field' => 'Seba cı seyr ke',
 'powersearch-togglelabel' => 'Qontrol ke:',
 'powersearch-toggleall' => 'Pêro',
@@ -1061,6 +1318,7 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'prefs-beta' => 'Xacetê beta',
 'prefs-datetime' => 'Tarix u wext',
 'prefs-labs' => 'Xacetê labs',
+'prefs-user-pages' => 'Pela Karberi',
 'prefs-personal' => 'Pela karberi',
 'prefs-rc' => 'Vurnayışê peyêni',
 'prefs-watchlist' => 'Lista seyr-kerdışi',
@@ -1128,10 +1386,13 @@ Na game tepeya nêerziyena.',
 'username' => 'Namey karberi:',
 'uid' => 'Namey karberi:',
 'prefs-memberingroups' => 'Ezayê {{PLURAL:$1|grub|grubi}}:',
+'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Wextê qeydbiyayışi',
+'prefs-registration-date-time' => '$1',
 'yourrealname' => 'Nameyo raştay',
 'yourlanguage' => 'Zıwan:',
 'yourvariant' => 'Varyante miyandê zuwani:',
+'prefs-help-variant' => 'Zerrey ena viki mocnayışi rê varyant yana ortografi re şıre tercihan dê xo.',
 'yournick' => 'imza:',
 'prefs-help-signature' => 'mesajê ke pelê werenayişi de gani pê ney "<nowiki>~~~~</nowiki>" imza bıbi.',
 'badsig' => 'Îmzayê tu raşt niyo.
@@ -1190,6 +1451,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'userrights-notallowed' => 'Hesabdê şımadı heqanê xo hewadayış u xorê heq dekerdış çıno.',
 'userrights-changeable-col' => 'Grubê ke şıma şenê bıvurnê',
 'userrights-unchangeable-col' => 'Grubê ke şıma nêşenê bıvurnê',
+'userrights-irreversible-marker' => '$1*',
 
 # Groups
 'group' => 'Grup:',
@@ -1216,7 +1478,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'grouppage-suppress' => '{{ns:project}}:Kontrol',
 
 # Rights
-'right-read' => 'Pele bıwane',
+'right-read' => 'Pelan bıwanê',
 'right-edit' => 'Pele bıvurne',
 'right-createpage' => 'Pele vıraze (pelê ke ê werênayışi niyê)',
 'right-createtalk' => 'Pela werênayışi vıraze',
@@ -1246,7 +1508,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-browsearchive' => 'Bıgeyre pelanê eserıtiyan',
 'right-undelete' => 'Jû pela esterıtiye peyser bia',
 'right-suppressrevision' => 'İdarekeran ra dızdeni/miyanki, newede vurnayışan de qayt ke u newede vıraze',
-'right-suppressionlog' => 'Loganê xasan bıvêne',
+'right-suppressionlog' => 'Rocekanê xasan bıvêne',
 'right-block' => 'Karberanê binan karê vurnayışi ra bloke bıke',
 'right-blockemail' => 'Yew karberê erşawıtışê/rıştena e-maili ra bloke bıke',
 'right-hideuser' => 'Yew namey karberi  şari ra dızdeni/miyanki bloke bıke',
@@ -1274,15 +1536,17 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'right-siteadmin' => 'Database kilit bike u a bike',
 'right-override-export-depth' => 'Peleyanê ke tede linkanê 5 ra zafyer estê ay export bike',
 'right-sendemail' => 'Karberanê binî ra e-mail bişirav',
+'right-passwordreset' => 'E-postayanê parola reset kerdışa vineno',
 
 # User rights log
 'rightslog' => 'Qeydê heqanê karberi',
 'rightslogtext' => 'Ena listeyê loganê ke heqqa karbaranî mucneno.',
 'rightslogentry' => 'eza biyayişê grupî $1 ra $2 rê $3î bivurne',
+'rightslogentry-autopromote' => '$2 otomatikmen gırdkerdışi ra kerd $3.',
 'rightsnone' => '(çino)',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-read' => 'ena pele bıwane',
+'action-read' => 'ena pela wanayış',
 'action-edit' => 'ena pela bıvurnê',
 'action-createpage' => 'pelan bıvıraze',
 'action-createtalk' => 'pelanê werênayışi bıvıraze',
@@ -1306,6 +1570,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'action-suppressionlog' => 'ena logê xasî bivîne',
 'action-block' => 'enê karberi vurnayışi ra bıreyne',
 'action-protect' => 'seviyeyê pawitişî se ena pele bivurne',
+'action-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
 'action-import' => 'ena pele yewna wîkî ra import bike',
 'action-importupload' => 'ena pele yew dosyayê bar kerdişî ra import bike',
 'action-patrol' => 'vurnayîşê karberanê binî nişan bike patrol biye',
@@ -1331,7 +1596,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'rcnotefrom' => "Cêr de vurnayîşê esto ke '''$2''' ra raver  (heta '''$1''' mucnayiyo).",
 'rclistfrom' => '$1 ra vurnayışanê neweyan bımoc',
 'rcshowhideminor' => 'Vurnayışanê werdiya $1',
-'rcshowhidebots' => 'bota $1',
+'rcshowhidebots' => 'Bota $1',
 'rcshowhideliu' => 'karberanê qeydına $1',
 'rcshowhideanons' => 'karberanê anoniman $1',
 'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
@@ -1344,9 +1609,11 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'minoreditletter' => 'werdı',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
+'unpatrolledletter' => '!',
 'number_of_watching_users_pageview' => '[$1 ho seyr keno {{PLURAL:$1|karber|karberî}}]',
 'rc_categories' => 'Kategoriyanî rê limît bike (pê "|" ciya bike)',
 'rc_categories_any' => 'Her yew',
+'rc-change-size' => '$1',
 'rc-change-size-new' => 'Vurnayışa dıma $1 {{PLURAL:$1|bayt|bayt}}',
 'newsectionsummary' => '/* $1 */ qısımo newe',
 'rc-enhanced-expand' => 'detayan bımoc (requires JavaScript)',
@@ -1391,16 +1658,17 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux
 'uploadlogpage' => 'Cıkewtışê bar-kerdışi',
 'uploadlogpagetext' => 'cêr de [[Special:NewFiles|listeyê dosyayan]] estî.',
 'filename' => 'Namey Dosya',
-'filedesc' => 'qisse',
-'fileuploadsummary' => 'qisse:',
+'filedesc' => 'Xulasa',
+'fileuploadsummary' => 'Xulasa:',
 'filereuploadsummary' => 'Vurnayîşê dosyayî:',
-'filestatus' => 'statuyê copyrightî',
+'filestatus' => 'Weziyetê heqê telifiye:',
 'filesource' => 'Çımey:',
 'uploadedfiles' => 'Dosyayê ke bar biye',
 'ignorewarning' => 'Îkazi kebul meke u dosya reyna bar bike',
 'ignorewarnings' => 'Îkazi kebul meke',
 'minlength1' => 'Nameyanê dosyayî de gani bî ezamî yew herf est biyê.',
 'illegalfilename' => '"$1" no nameyê dosya de tayê karakteri nêşuxulyenî. newe ra tesel bıkerê',
+'filename-toolong' => 'Nameyê dosyayan 240 bayt ra derg do nêbo.',
 'badfilename' => "Nameyanê dosyayî ''$1'' rê vurneyî biye.",
 'filetype-mime-mismatch' => 'Derg kerdıştê Dosyada ".$1" u ($2) MIME tipiya cıya pêro nina.',
 'filetype-badmime' => 'Dosyaye ke tipê MIME "$1"î de bar nibeno.',
@@ -1408,12 +1676,12 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux
 'filetype-unwanted-type' => "'''\".\$1\"''' na tewırê dosyayi nêwazyena. pêşniyaz biyaye {{PLURAL:\$3|tewırê dosyayi|tewırê dosyayi}} \$2.",
 'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|Ena babeta dosya qebul ne vinena|Ena babeta dosya qebul ne vinena|Ena babeta dosya qebul ne vinena}}. Eke cırê izin deyayo $2. {{PLURAL:$3|Babatan dosyayan|babeta dosyayan}}',
 'filetype-missing' => 'Ena dosya de extention (ze ".jpg") çini yo.',
-'empty-file' => 'Dosya ke ti şawit veng biy.',
-'file-too-large' => 'Dosya ke ti şawit zaf gird biy.',
+'empty-file' => 'Dosyaya ke şıma rışta venga.',
+'file-too-large' => 'Dosyaye ke şıma rışta zaf gırda.',
 'filename-tooshort' => 'Namayê dosyayi zaf kilm a.',
 'filetype-banned' => 'Tipê ena dosya qedexe biya.',
 'verification-error' => 'Ena dosya taramayê dosyayi temam nikena.',
-'hookaborted' => 'Vurnayişê tu ke ti deneme kerd pê yew extensiyon ra iptal biya.',
+'hookaborted' => 'Vurnayişê tu ke to cerbna pê yew çengal ra terkneya.',
 'illegal-filename' => 'Ena nameyê dosyayi kebul nibena.',
 'overwrite' => 'Ser yew dosyayê ke hama esta, ser ey qeyd nibena.',
 'unknown-error' => 'Yew xeteyê nizanyeni biya.',
@@ -1423,6 +1691,7 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux
 gırdîyê na dosyayi $2.',
 'largefileserver' => 'Ena dosya zaf girde ke server kebul nikeno.',
 'emptyfile' => 'dosya ya ke şıma bar kerda veng asena, nameyê dosyayi şaş nusyaya belka.',
+'windows-nonascii-filename' => 'Na wiki namen de dosyayan de xısusi karaxtera karkerdışa peşti nêdana.',
 'fileexists' => "no name de yew dosya ca ra esta.
 Eke şıma emin niyê bıvurni bıewne na dosya'''<tt>[[:$1]]</tt>'''
 [[$1|thumb]]",
@@ -1456,6 +1725,8 @@ Semedê ancia barkerdışi dewamkerdış ra ver tarixê esterışê dosya gani q
 'php-uploaddisabledtext' => 'barkerdışê dosyayê PHP nıka çino. kerem kere eyarê file_uploads korol bıkerê.',
 'uploadscripted' => 'Ena dosya de yew HTML ya zi kodê scriptî este ke belki browserê webî fam nikeno.',
 'uploadvirus' => 'Ena dosya de yew virus estê: Qe detayan: $1',
+'uploadjava' => 'Dosya, zerre de cıdı jew Java .class dosyaya ZIP esta.
+Dosyayn de Java barkerdışi rê icazet nêdeyê, çıkı emeleya merduman nêbena.',
 'upload-source' => 'Dosyayê henî',
 'sourcefilename' => 'Nameyê dosyaye çimeyî',
 'sourceurl' => "URL'yê Çımi",
@@ -1467,11 +1738,26 @@ Semedê ancia barkerdışi dewamkerdış ra ver tarixê esterışê dosya gani q
 'filewasdeleted' => 'no name de yew dosya yew wexto nızdi de bar biya u dıma zi serkaran hewn a kerdo. wexya ke şıma dosya bar keni bıewnê no pel $1.',
 'filename-bad-prefix' => "name yo ke şıma bar keni zey nameyê kamerayê dijital î, pê ney '''\"\$1\"''' destpêkeno .
 kerem kere yewna nameyo eşkera bıvicinê.",
+'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntax is as follows:
+#   * Everything from a "#" character to the end of the line is a comment
+#   * Every non-blank line is a prefix for typical file names assigned automatically by digital cameras
+CIMG # Casio
+DSC_ # Nikon
+DSCF # Fuji
+DSCN # Nikon
+DUW # some mobile phones
+IMG # generic
+JD # Jenoptik
+MGP # Pentax
+PICT # misc.
+ #</pre> <!-- leave this line exactly as it is -->',
 'upload-success-subj' => 'bar biyo',
 'upload-success-msg' => '[$2] barkerdışê şıma qebul bı. Barkerdışê şımayo itado: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'Problem bar bike',
 'upload-failure-msg' => '[$1] delal: $2 ra barkerdıştê şıman ra jew xelat vıcyayo.',
 'upload-warning-subj' => 'İqazê barkerdışi',
+'upload-warning-msg' => 'Barkerdış dê [$2] de xırabey vıcyê. Xırabi timar kerdışi re  peyser şırê  [[Special:Upload/stash/$1|heruna barkerdışi]].',
 
 'upload-proto-error' => 'Porotokol raşt ni yo.',
 'upload-proto-error-text' => 'Bar kerdişê durî gani  URLî estbiye ke pe <code>http://</code> ya zi <code>ftp://</code> başli beno.',
@@ -1485,22 +1771,65 @@ Eke problem dewam kerd [[Special:ListUsers/sysop|serkari]] de irtibat kewe.',
 'upload-too-many-redirects' => 'Eno URL de zaf redireksiyonî esto.',
 'upload-unknown-size' => 'Ebat nizanyeno',
 'upload-http-error' => 'Yew ğeletê HTTPî biyo: $1',
+'upload-copy-upload-invalid-domain' => 'Na domain ra kopyayê barkerdışanê nêbenê.',
 
 # File backend
 'backend-fail-stream' => '$1 nê vırazeyê',
 'backend-fail-backup' => '$1 nê wendeyê',
 'backend-fail-notexists' => '$1 name dı dosya çına.',
+'backend-fail-hashes' => 'Şınasiya dosyaya gırotışê cı nêgêriya.',
+'backend-fail-notsame' => 'Zey $1 ju dosya xora  esta.',
+'backend-fail-invalidpath' => '$1 rayê da depo kerdışa raştay niya.',
 'backend-fail-delete' => '$1 nê besterneyê',
 'backend-fail-alreadyexists' => "Dosyay $1'ya nêwanêna",
 'backend-fail-store' => '$1 ra $2 berdışo nê wanêno',
 'backend-fail-copy' => '$1 ra $2 kopya kerdışena dosyayo nêbeno',
 'backend-fail-move' => '$1 ra $2 berdışo nê wanêno',
 'backend-fail-opentemp' => 'Teferruatê dosyayo nêwanêno',
+'backend-fail-writetemp' => 'Dosyaya idari nênusneyê.',
+'backend-fail-closetemp' => 'Dosyaya idari nêracneyê',
 'backend-fail-read' => 'Na "$1" dosya nê wanêna',
 'backend-fail-create' => 'Dosyay $1 nê vırazıyê',
+'backend-fail-maxsize' => 'Dosyay $1 aya nênusneyêna feqet gırdeya cı {{PLURAL:$2|bayta|$2 bayto}}',
+'backend-fail-readonly' => 'Depo kerdışê "$1" enewke salt wanêno.Sebebê cı zi:"\'\'$2\'\'"',
+'backend-fail-synced' => 'Dosyay " $1 " miyan de depo kerdışeyda cıdı pê nêtepıştey esta',
+'backend-fail-connect' => 'Depo kerdışê "$1" peyni de nêgrêdeya.',
+'backend-fail-internal' => 'Depo kerdışê "$1" peyni de ju xırabin vıcyê.',
+'backend-fail-contenttype' => 'Qandê depo kerdışi zerrey babeta dosya da "$1" nêvineya.',
+'backend-fail-batchsize' => 'Depo kerdışê  dosya da $1 {{PLURAL:$1|operasyon de|operasyonê}} cı groto; sinorê  {{PLURAL:$2|operasyoni|operasyona}} $2.',
+'backend-fail-usable' => 'Dosyay $1 nênusneyê çıkı ratnayışê cı racnayeyo yana kewmiyo.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Depo kerdış de "$1" qande malumatê gurweynayışi cıya irtibat nêkewiya.',
+'filejournal-fail-dbquery' => 'Depo kerdış de "$1" qande malumatê gurweynayışi cıyo nêbeno.',
+
+# Lock manager
+'lockmanager-notlocked' => 'Dosyay "$1" kılit nêbiya; kesi kılit nêkerda.',
+'lockmanager-fail-closelock' => 'Dosyay kıliti nêracneyê "$1".',
+'lockmanager-fail-deletelock' => 'Dosyay kıliti nêbesterneyê "$1".',
+'lockmanager-fail-acquirelock' => 'Kılitê cı nêgêriya "$1".',
+'lockmanager-fail-openlock' => 'Dosyay kıliti nêracneyê qandê "$1".',
+'lockmanager-fail-releaselock' => 'Dosyay kıliti nêvıradeyê "$1".',
+'lockmanager-fail-db-bucket' => 'Kılite malumat da sitıl de $1 irtibat kewtışi re bes nêkeno.',
+'lockmanager-fail-db-release' => 'Malumatê kıliti nêvıradeyê $1.',
+'lockmanager-fail-svr-release' => 'Wasterê kıliti nêvıradeyê $1.',
+
+# ZipDirectoryReader
+'zip-file-open-error' => 'Dosya ZIP kontrol kerdışi re akerdin de jew xırabin amê.',
+'zip-wrong-format' => "Dosyaya ke nışan biya dosyay ZIP'i niya.",
+'zip-bad' => 'Dosya xırabiya yana zewbi sebeb ra ZIP dosyaya nêwanêna.
+Kontrolê emeleyey oyo veş nêbeno.',
+'zip-unsupported' => 'Dosya MediaWiki ra ZIP dosyaya nêwanêna yana derganiya ZIP de cı aya pıro nina. Kontrolê emeleyey oyo veş nêbeno.',
 
 # Special:UploadStash
 'uploadstash' => 'Nımıtışê barkerdışi',
+'uploadstash-summary' => "Na pela barkerdış (yana hewna barbenayış dı) hema hewna wiki'dedosyeyê ke nêpêseryayê enarê rasayış gre danop. Enê dosyay o ke a dosya keno bar tek o şena a dosya bıvino.",
+'uploadstash-clear' => 'Dosyeyê ke idareten bıvıryê ena besternê',
+'uploadstash-nofiles' => 'Dosyeyê ke idareten bıvıryê çınyê.',
+'uploadstash-badtoken' => 'Karkerdışê cı nêbı, muhtemelen desture şımayê timarkerdışi zeman do şıma ravêrdo. Fına bıcerbnê.',
+'uploadstash-errclear' => 'Besternayışê dosyayan nêbı',
+'uploadstash-refresh' => 'Listanê dosyayan aneweke',
+'invalid-chunk-offset' => 'Ofseto nêravyarde',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Cıkewtış red biyo',
@@ -1519,6 +1848,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization Selahiyetê resımi b
 no wiki bı umumi eyar biyo.
 qey pawıtışi, img_auth.php battal verdiyayo.",
 'img-auth-noread' => 'Heqqa karberanî çino ke "$1" biwendi',
+'img-auth-bad-query-string' => "URL'dı ratnayışo nêravêrde esto.",
 
 # HTTP errors
 'http-invalid-url' => 'URL raşt niya: $1',
@@ -1561,7 +1891,7 @@ keyepel nıka zaf meşğulo yew dema herayi de newe ra tesel bıkerê.',
 
 # File description page
 'file-anchor-link' => 'Dosya',
-'filehist' => 'Tarixê dosya',
+'filehist' => 'Ravêrdê dosya',
 'filehist-help' => 'Klik bık ser yew tarih u aye tarih dı versionê dosya bıvin.',
 'filehist-deleteall' => 'hemî biestere',
 'filehist-deleteone' => 'bıestere',
@@ -1588,11 +1918,17 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'sharedupload' => 'Ena dosya $1 ra u belki projeyê binan dı hewitiyeno.',
 'sharedupload-desc-there' => 'depoyê $1 u projeyê bini na dosyayi xebıtneni. qey teferruati bıewnê [$2 teferruati dosyayi].',
 'sharedupload-desc-here' => 'depoyê $1 u projeyê bini na dosyayi xebıtneni. qey teferruati bıewnê [$2 teferruati dosyayi].',
+'sharedupload-desc-edit' => 'Na dosya $1 proceyan dê binandı ke şeno bıgurweyno.
+Şıma qayılê ke malumatê cı bıvurnê se şıre [pela da $2 ].',
+'sharedupload-desc-create' => 'Na dosya $1 proceyan dê binandı ke şeno bıgurweyno.
+Şıma qayılê ke malumatê cı bıvurnê se şıre [pela da $2 ].',
 'filepage-nofile' => 'Ena name de dosya çin o.',
 'filepage-nofile-link' => 'Ena name de dosya çin o. Feqet ti eşkeno [$1 bar bike].',
 'uploadnewversion-linktext' => 'Versiyonê newiyerê ena dosya bar ke',
 'shared-repo-from' => '$1 ra',
 'shared-repo' => 'yew embarê repositoryî',
+'shared-repo-name-wikimediacommons' => 'Wikimedia Commons',
+'filepage.css' => '/* CSS placed here is included on the file description page, also included on foreign client wikis */',
 
 # File reversion
 'filerevert' => '$1 reyna biyere',
@@ -1634,7 +1970,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'unwatchedpages' => 'Pelanê seyrnibiyeyî',
 
 # List redirects
-'listredirects' => 'Listeyê redireksiyonî',
+'listredirects' => 'Listeya Hetenayışan',
 
 # Unused templates
 'unusedtemplates' => 'Şablonê ke nê xebtênê',
@@ -1646,7 +1982,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'randompage-nopages' => 'Ena {{PLURAL:$2|cayêname|cayênameyî}} de enê pelan çin o: $1.',
 
 # Random redirect
-'randomredirect' => 'Redereksiyonê randomî',
+'randomredirect' => 'Xoseri hetenayış',
 'randomredirect-nopages' => 'Ena cayênameyê "$1"î de redereksiyonî çin o.',
 
 # Statistics
@@ -1663,6 +1999,7 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'statistics-edits' => 'Amarê vurnayîşî ke wextê {{SITENAME}} ronayîşî ra',
 'statistics-edits-average' => 'Ser her pele de amarê vurnayîşîyê averageyî',
 'statistics-views-total' => 'Yekunî bivîne',
+'statistics-views-total-desc' => 'Peleyê ke çınyê yana xısusiyê e nina zerre nêkerdê',
 'statistics-views-peredit' => 'Ser her vurnayîşî de vînayîşî',
 'statistics-users' => 'Qeyd biye [[Special:ListUsers|karberî]]',
 'statistics-users-active' => 'Karberê aktifi',
@@ -1716,6 +2053,8 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'wantedpages' => 'Peleye ke waştênê',
 'wantedpages-badtitle' => 'sernuşte meqbul niyo: $1',
 'wantedfiles' => 'Dosyeye ke waştênê',
+'wantedfiletext-cat' => 'Dosyaya cêrên karvıstedeya lakin çınya. Mewcud dosyayan de xeriba miyan de liste bena. Xırabiya wınisin dana <del>ateber</del>. Zewbi zi, şırê pela da dosyeyê ke çınyaya [[:$1]].',
+'wantedfiletext-nocat' => 'Dosyeyê cêrêni estê lekin karnêvıstê. Dosyeyê xeribi liste benê. bo babeta dano <del>ateber</del>',
 'wantedtemplates' => 'Şablonê ke waştênê',
 'mostlinked' => 'Pelî ke tewr zafî lînk bîy.',
 'mostlinkedcategories' => 'Kategorî ke tewr zafî lînk bîy.',
@@ -1724,6 +2063,7 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'mostimages' => 'Dosyayan ke tewr zaf link estê.',
 'mostrevisions' => 'Pelan ke tewr zaf revizyonî biyê.',
 'prefixindex' => 'Veroleya peley pêro',
+'prefixindex-namespace' => 'Peleyê Veroleyıni ($1 cay nami)',
 'shortpages' => 'Peleyê kılmeki',
 'longpages' => 'Peleyê dergeki',
 'deadendpages' => 'pelê ke pelê binan re gırey nêeşto',
@@ -1736,7 +2076,7 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'protectedtitles' => 'Sernameyê ke starênê',
 'protectedtitlestext' => 'sernameyê cêrıni pawıte yî',
 'protectedtitlesempty' => 'pê ney parametreyan sernuşteyê pawite çinê',
-'listusers' => 'Lista karberan',
+'listusers' => 'Listeyê Karberan',
 'listusers-editsonly' => 'Teyna karberan bimucne ke ey nuştê',
 'listusers-creationsort' => 'goreyê wextê vıraştışi rêz ker',
 'usereditcount' => '$1 {{PLURAL:$1|vurnayîş|vurnayîşî}}',
@@ -1756,10 +2096,12 @@ Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gı
 'pager-newer-n' => '{{PLURAL:$1|newiyer 1|newiyer $1}}',
 'pager-older-n' => '{{PLURAL:$1|Kıhanyer 1|Kıhanyer $1}}',
 'suppress' => 'Kontrol',
+'querypage-disabled' => 'Na pelaya xısusi,sebeb de performansi ra qefılneyê.',
 
 # Book sources
 'booksources' => 'Çımey kitaban',
 'booksources-search-legend' => 'Ser çımey kitaban bıgeyr',
+'booksources-isbn' => 'ISBN:',
 'booksources-go' => 'Şo',
 'booksources-text' => 'listeya cêrıni, keyepelê kitap rotoxan o.',
 'booksources-invalid-isbn' => 'ISBN raşt nêasena bıewnê çımeyê orjinali, raşt kopya biya nê nêbiyaya?',
@@ -1773,6 +2115,7 @@ Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gı
 tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyna hessasiyê herfa pil u qıciyi) bıweçine u esayiş qıc kerê.',
 'logempty' => 'qaydi de weina yew malumat çino',
 'log-title-wildcard' => 'sername yê ke pê ney nuşteyi destkenêpê bıgêr.',
+'showhideselectedlogentries' => 'Qeydê weçinayışê bımocne/bınımne dekerê',
 
 # Special:AllPages
 'allpages' => 'Peli pêro',
@@ -1792,6 +2135,11 @@ tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyn
 'allpages-bad-ns' => '{{SITENAME}} keyepel de wina "$1" yew nameyê cayi çino.',
 'allpages-hide-redirects' => 'Raçarnaya bınımne',
 
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Şıma rê verhafıza versiyonê na pela aseno, hetana $1 cı kehani.',
+'cachedspecial-viewing-cached-ts' => 'Na pela raşt niya, şımayê enewke versiyonê verhafızada na pela vinenê.',
+'cachedspecial-refresh-now' => 'Peyêni bıvin.',
+
 # Special:Categories
 'categories' => 'Kategoriy',
 'categoriespagetext' => '{{PLURAL:$1|kategoriyê|kategoriyê}} cêrıni de pel u media esto.
@@ -1845,6 +2193,8 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 'listgrouprights-rights' => 'Heqqî',
 'listgrouprights-helppage' => 'Help:Heqqanê gruban',
 'listgrouprights-members' => '(lista ezayan)',
+'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <tt>($2)</tt></span>',
+'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <tt>($2)</tt></span>',
 'listgrouprights-addgroup' => 'şıma eşkenî hesabê xo re {{PLURAL:$2|grub|gruban}} têare kerî: $1',
 'listgrouprights-removegroup' => 'şıma eşkenî hesabê xo ra {{PLURAL:$2|grub|gruban}} bıvecî: $1',
 'listgrouprights-addgroup-all' => 'şıma hesabê xo re heme gruban eşkeni têare bıkeri',
@@ -1869,7 +2219,8 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 'noemailtext' => 'no/na karber yew e-postayo meqbul nêdawa/o',
 'nowikiemailtitle' => 'E-postayan re destur çino',
 'nowikiemailtext' => 'no/na karber/e, karberanê binani ra gırewtışê e-postayi tercih nêkerd.',
-'emailtarget' => 'Namey Qarqeri defiyê de.',
+'emailnotarget' => 'Qandê Gêreninamey karberiyo wuna çınyo yana xırabo.',
+'emailtarget' => 'Namey Karberi defiyê de.',
 'emailusername' => 'Nameyê karberi:',
 'emailusernamesubmit' => 'Stare dı',
 'email-legend' => 'karberê {{SITENAME}} binan re e-posta bıerşaw',
@@ -1887,6 +2238,7 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
 # User Messenger
 'usermessage-summary' => 'Mesajê sistemi caverd.',
 'usermessage-editor' => 'Mesaj berdoxe sistemi',
+'usermessage-template' => 'MediaWiki:UserMessage',
 
 # Watchlist
 'watchlist' => 'lista mına seyr-kerdışi',
@@ -1922,6 +2274,7 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Seyr ke...',
 'unwatching' => 'Seyr meke...',
+'watcherrortext' => 'Sazanê listeda seyri vurnayış de pox ta "$1" xırabey vıcyê .',
 
 'enotif_mailer' => 'postaya xeberdayişi {{SITENAME}}',
 'enotif_reset' => 'Pela pêro ziyaret kerde deye mor ke',
@@ -2024,7 +2377,10 @@ Qey malumato ziyede [[Special:ProtectedPages|Peleyê ke star biye]] bewni rê ê
 'unprotectedarticle' => 'Starkerdışê "[[$1]]" hewadeya',
 'movedarticleprotection' => 'eyarê pawıtışi no "[[$2]]" peli ra kırışiya no "[[$1]]" peli',
 'protect-title' => 'qey "$1" yew seviyaya pawıtışi bıvıcinê',
+'protect-title-notallowed' => 'Star kerdış sewiyeyê "$1" bıvinê',
 'prot_1movedto2' => 'nameyê [[$1]] peli yo newe: [[$2]]',
+'protect-badnamespace-title' => 'Heruna naman itad starêna',
+'protect-badnamespace-text' => 'Na herunda namide peley nêstarênê.',
 'protect-legend' => 'pawıtışi tesdiq bıker',
 'protectcomment' => 'Sebeb:',
 'protectexpiry' => 'Qediyeno:',
@@ -2080,7 +2436,7 @@ Tı eşkeno seviyeye kılit kerdışi bıvurno, feqat tı nıeşken "cascading p
 'restriction-level-all' => 'seviye ya ke raşt ame',
 
 # Undelete
-'undelete' => 'pelê hewn a şiyayeyani ra mocın',
+'undelete' => 'Peleyê ke besterneyayê enê bımocnê',
 'undeletepage' => 'bıewn revizyonê peli yê hewn a şiyayeyan u tepiya biyar',
 'undeletepagetitle' => "'''pelo [[:$1|$1]] cêrın, wayirê revizyonê hewn a şiyayeyan o'''.",
 'viewdeletedpage' => 'bıewn pelê hewn a şiyayeyani',
@@ -2110,7 +2466,7 @@ Revizyoni ya hewn a biyê ya arşiw ra veciyayê ya zi cıresayişê şımayi ş
 'undeletedpage' => "'''$1 pel tepiya anciya'''
 
 qey karê tepiya ardışi u qey karê hewn a kerdışê verıni bıewnê [[Special:Log/delete|qeydê hewn a kerdışi]].",
-'undelete-header' => 'qey vinayişê peli yê ke cıwa ver hewn a biyê: [[Special:Log/delete|qeydê hewn a kerdışi]].',
+'undelete-header' => 'Peleyê ke veror de besterneyayê êna bıvinê: [[Special:Log/delete|qeydê esterneya]].',
 'undelete-search-title' => 'Bıgeyre pelanê eserıtiyan',
 'undelete-search-box' => 'bıgêr pelê hewn a biyayeyani',
 'undelete-search-prefix' => 'pel ê ke pê ney destpêkenî, ramocın',
@@ -2121,17 +2477,21 @@ qey karê tepiya ardışi u qey karê hewn a kerdışê verıni bıewnê [[Speci
 'undelete-cleanup-error' => 'Eka dosyayê arşîvî "$1"î ke ho wedariyeno feqet yew ğelet biya.',
 'undelete-missing-filearchive' => 'arşiwê IDyê yi dosyayi $1 tepiya niyeno çunke database de niyo.
 belka cıwa ver hewn a biyo..',
+'undelete-error' => 'Besternayışê peyd bıgi pela de xırabin vıcyê',
 'undelete-error-short' => 'Eka dosyayê biyereno feqet yew ğelet biya: $1',
 'undelete-error-long' => 'hewn a kerdışê na dosyayi wexta tepiya geriyenê xeta vıraziya:
 
 $1',
 'undelete-show-file-confirm' => '"<nowiki>$1</nowiki>" şıma emin î dosyaya revizyonê no $2 $3 tarixi bıvini?',
 'undelete-show-file-submit' => 'E',
+'undelete-revisionrow' => '$1 $2 $3 $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Cayê namey:',
 'invert' => 'Bê weçineni ê bina peyser biya',
+'tooltip-invert' => 'nameyo ke nışan biyo (u nameyo elekeyın zi nışanyyayo se) vurnayışan  zerrekan nımtışi re ena dore tesdiqi nışan kerê',
 'namespace_association' => 'Pineyê cadê naman',
+'tooltip-namespace_association' => 'Herunda canemiya elekeyın nışan kerdışi sero qıse kerdışi yana zerre dekerdışi rê ena dora tesdiqi nışan kerê',
 'blanknamespace' => '(Ser)',
 
 # Contributions
@@ -2179,7 +2539,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'whatlinkshere-hidetrans' => 'Açarnayışê $1',
 'whatlinkshere-hidelinks' => '$1 greyan',
 'whatlinkshere-hideimages' => 'gireyê resimî $1',
-'whatlinkshere-filters' => 'Filtreyan',
+'whatlinkshere-filters' => 'Parzumi',
 
 # Block/unblock
 'autoblockid' => 'Otomatik vındarnayış #$1',
@@ -2201,6 +2561,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 ** Tehditwari hereket/Taciz
 ** yew ra ziyed hesaban xırab şuxulnayiş
 ** nameyê karberi yo ke meqbul niyo',
+'ipb-hardblock' => 'KArberê ke ena IP ra dekewte de wa vurnayış nêkerê',
 'ipbcreateaccount' => 'Hesab viraştişi blok bik',
 'ipbemailban' => 'Ena karber rê destur medî  ke ay e-mail neşiravî',
 'ipbenableautoblock' => 'verniyê IPadresa peyin ê no karberi u wexta ke vurnayişi kerd ê IPadresani otomotik bıger.',
@@ -2211,12 +2572,15 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'ipbotherreason' => 'Sebebê bini:',
 'ipbhidename' => 'Nameyê karberî listeyan u vurnayîşan ra binumne',
 'ipbwatchuser' => 'Pela miniqaşe u pela ena karberî seyr bike',
+'ipb-disableusertalk' => 'No karber wexto ke bloqedeyo wa pela da xodı vurnayış kerdışi rê izin medı',
 'ipb-change-block' => 'Pê ena ayaran, karberî reyna bloke bike',
 'ipb-confirm' => 'Bloke kerdışi tesdik ke',
 'badipaddress' => 'Adresê IPî raşt niyo',
 'blockipsuccesssub' => 'Blok biyo',
 'blockipsuccesstext' => 'Verniya [[Special:Contributions/$1|$1]] gêriyaya.
 <br />Qey çım ra viyarnayişê verni-grewtışi bewni [[Special:BlockList|Ê yê ke verniyê IP adresê cı gêriyaya]].',
+'ipb-blockingself' => 'Şımayê kenê ke xo bloke kerê! Şıma qayılye xo bloke kerê?',
+'ipb-confirmhideuser' => 'Wexto ke "karberi bınımnê" nışandeyo se şıma ye kenê karberi bloke kerê. No, Namey karberi lista pêron dı u dekewtışê rocekan dı aktiv bo.Şıma qayıli ney bıkerê?',
 'ipb-edit-dropdown' => 'Sebebê blokî bivurne',
 'ipb-unblock-addr' => '$1 a bik',
 'ipb-unblock' => 'Yew adresê IPî ya zi nameyê karberî blok bike',
@@ -2283,6 +2647,7 @@ Seba lista karberanê ke heta nıka kılit biyê [[Special:BlockList|lista kıli
 'ipb_already_blocked' => '"$1" zaten blok biya',
 'ipb-needreblock' => '$1 xora engel biyo. Tı wazenay eyaran bıvurnê?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Kılitkerdışo bin|Kılitkerdışê bini}}',
+'unblock-hideuser' => 'NAmeyê karberi nımneyayo qandê coy şıma nêşenê bloqey cı wedarnê.',
 'ipb_cant_unblock' => 'xeta: IDyê ver-grewtışi $1 nêesa/asa.
 belka ver-grewtış wedariyayo.',
 'ipb_blocked_as_range' => 'xeta: $1 verniyê IPadresi direk nêgeriyayo u ver-gırewtışi nêwedariyeno .
@@ -2294,6 +2659,7 @@ labele parçeya benateyê na $2 adresibi u ey ra ver-geryayo u şıma eşkeni no
 'proxyblocker-disabled' => 'Eno fonksiyon nêxebetiyeno.',
 'proxyblockreason' => 'IPadresa şıma yew proxyo akerdeyo u ey ra verniyê ey geriya.',
 'proxyblocksuccess' => 'Kar bi temam.',
+'sorbs' => 'DNSBL',
 'sorbsreason' => 'IP adresa şıma, hetê no {{SITENAME}} keyepeli ra  DNSBL de proxy hesibyayo u liste biyo.',
 'sorbs_create_account_reason' => 'IP adresa şıma, hetê no translatewiki.net keyepeli ra DNSBL de proxy hesibyayo u liste biyo.
 
@@ -2403,6 +2769,7 @@ Yewna name bınus.',
 'immobile-source-page' => 'nameyê no peli nêvuriyeno',
 'immobile-target-page' => 'sernameyê no hedefi re nêkırışiyeno',
 'imagenocrossnamespace' => 'Dosya, ca yo ke qey nameyê dosyayan nêbıbo nêkırışiyeno',
+'nonfile-cannot-move-to-file' => 'Ekê dosya niyê, cade namande dosyaya nêahulneyênê',
 'imagetypemismatch' => 'tipa dosyaya neweyi re pênêgıneno/nêgıneno pê',
 'imageinvalidfilename' => 'nameyê dosyayi ya hedefi meqbul niyo.',
 'fix-double-redirects' => 'rayberdış ê ke sernameyê orjinali re işaret keni rocane bıker.',
@@ -2417,15 +2784,17 @@ Wexta ke şıma no pel vurneni diqet bıkeri, loge bivini:",
 Ma rica keno yewna sername binuse.',
 
 # Export
-'export' => 'Pelan export bık',
+'export' => 'Pela ateber dı',
 'exporttext' => 'şıma yew pelê nişanebiyayeyi, nuşteyê taqımê pelani, pê pêşteyê XMLi eşkeni bıdi teberi.
 wiki yo ke wikimedya xebıtneno, pê [[Special:Import|pelê zerre dayişê]] no wikiyi beno.
 
 şıma eşkeni yew gırey bıerzi,
 ma vaci: qey pelê "[[{{MediaWiki:Mainpage}}]]i " [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]].',
+'exportall' => 'Pela Pêron ateberdı',
 'exportcuronly' => 'têna revizyonê peyin bıger',
 'exportnohistory' => "----
 '''Not:''' pê no form teberdayişê verê (tarix) pelan battal biyo",
+'exportlistauthors' => 'zerre de qandê her pela listey iştiraxkara esto',
 'export-submit' => 'Teber de',
 'export-addcattext' => 'kategoriya cerıni ra maddeyan têare ker',
 'export-addcat' => 'têare ker',
@@ -2458,6 +2827,8 @@ eke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê
 'thumbnail_error' => 'Thumbnail niviraziya: $1',
 'djvu_page_error' => 'pelê DjVuyi bêşumulo',
 'djvu_no_xml' => 'Qe DjVu nieşkenî XML fetch bikî',
+'thumbnail-temp-create' => 'İdare dosyay resimiya nêvırazêna',
+'thumbnail-dest-create' => 'Resimo werdiyo keyd nêbeno',
 'thumbnail_invalid_params' => 'Parametreya thumbnailî raşt niyşê',
 'thumbnail_dest_directory' => 'Nieşkenî direktorê destinasyonî virazî',
 'thumbnail_image-type' => 'Tipê resimî kebul nibeno',
@@ -2504,6 +2875,11 @@ dosyaya emaneti vindbiyo',
 'import-upload' => 'Dosyayê XML bar bike',
 'import-token-mismatch' => "vindibiyayişê ma'lumatê hesabi. kerem kerê newe ra tesel/cereb bıkerê.",
 'import-invalid-interwiki' => 'Eya wîkî ra nieşkenî împort bike.',
+'import-error-edit' => 'Pela " $1 " qandê vurnayışi aya nêgêrêna çıkı cı rê icazet nêdeyayo.',
+'import-error-create' => 'Pela " $1 " qandê vıraştışi aya nêabêna çıkı cı rê icazet nêdeyayo.',
+'import-error-interwiki' => 'Pela " $1 " qandê name dayışi aya nêgêrêna çıkı namey cı (interwiki) sero cırê ca abıryayo.',
+'import-error-special' => 'Pela " $1 " qandê vıraştışi aya nêgêrêna çıkı namay cı nameyo do xısusiyo u na pela rê no name nêgêrêno.',
+'import-error-invalid' => 'Pela "$1" nêdebyê de çıkı namey cı çınyo.',
 
 # Import log
 'importlogpage' => 'Logê împortî',
@@ -2515,6 +2891,14 @@ dosyaya emaneti vindbiyo',
 
 # JavaScriptTest
 'javascripttest' => 'Cerbnayışê JavaScripti',
+'javascripttest-disabled' => 'Na kerdin, na wiki sero aktiv nêbiya.',
+'javascripttest-title' => 'Testê $1 gurweyênê',
+'javascripttest-pagetext-noframework' => 'Na pela testanê JavaScripta gurweynayışi re abıryaya.',
+'javascripttest-pagetext-unknownframework' => 'Çerçeweyê "$1" cerbnayışi xırabo.',
+'javascripttest-pagetext-frameworks' => 'Şıma ra reca xorê cêr ra test weçinê:$1',
+'javascripttest-pagetext-skins' => 'Testa akarfinayışi rê verqayt:',
+'javascripttest-qunit-intro' => 'Mediawiki.org dı [dokumanê $1] bıvinê.',
+'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit test suite',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Pelaya karberi',
@@ -2526,8 +2910,8 @@ dosyaya emaneti vindbiyo',
 'tooltip-pt-mycontris' => 'Lista iştırakanê to',
 'tooltip-pt-login' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
 'tooltip-pt-anonlogin' => 'Seba cıkewtışi şıma rê dewato; labelê, no zeruri niyo',
-'tooltip-pt-logout' => 'Veciye',
-'tooltip-ca-talk' => 'Pela tedeesteyan sero werênayış',
+'tooltip-pt-logout' => 'Bıvciyê',
+'tooltip-ca-talk' => 'Zerrey pela sero werênayış',
 'tooltip-ca-edit' => 'Tı şenay na pele bıvurnê.
 Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-ca-addsection' => 'Yew qısımo newe ake',
@@ -2563,12 +2947,12 @@ Kerem ke, qeydkerdış ra ver gocega verqayti bıxebetne.',
 'tooltip-t-specialpages' => 'Lista pelanê xasanê pêroinan',
 'tooltip-t-print' => 'Nımuney çapkerdışiê ena pele',
 'tooltip-t-permalink' => 'Gırêyo daimi be ena versiyonê pele',
-'tooltip-ca-nstab-main' => 'Pela tedeesteyan bıvêne',
+'tooltip-ca-nstab-main' => 'Pela zerreki bımocne',
 'tooltip-ca-nstab-user' => 'Pela karberi bıvin',
 'tooltip-ca-nstab-media' => 'Pele Mediya bivinên',
 'tooltip-ca-nstab-special' => 'Na yew pelê da xususiya, şıma nêşenê nae bıvurnê',
 'tooltip-ca-nstab-project' => 'pelayê kılit-kerdeyi bıvin',
-'tooltip-ca-nstab-image' => 'Pela tedeesteyan bıvêne',
+'tooltip-ca-nstab-image' => 'Pelay dosya bımocne',
 'tooltip-ca-nstab-mediawiki' => 'Mesacê sistemi bivinên',
 'tooltip-ca-nstab-template' => 'Şabloni bıvêne',
 'tooltip-ca-nstab-help' => 'Peleyê yardimi bivinên',
@@ -2610,7 +2994,8 @@ Tı eşkeno yew sebeb bınus.',
 'spamprotectionmatch' => 'nuşte yo ke rıcnayoxê spami herikneno: $1',
 'spambot_username' => 'wikimedya spam-pakkerdışi',
 'spam_reverting' => 'agêriyeno revizyon o ke tawayê $1 ıney piya çiniyo',
-'spam_blanking' => 'revizyonê hemeyi de ıney $1 re gıreyi estî, deverdiyeno',
+'spam_blanking' => 'Revizyonê gredê $1 vineyay, wa weng kero',
+'spam_deleting' => 'Revizyonê gredê $1 vineyay, wa besterneyê',
 
 # Info page
 'pageinfo-title' => 'Heq tê "$1"\'i',
@@ -2625,6 +3010,17 @@ Tı eşkeno yew sebeb bınus.',
 'pageinfo-views' => 'Amarina mocnayışan',
 'pageinfo-viewsperedit' => 'Vurnayışi sero vurnayışa bımocnêyış',
 
+# Skin names
+'skinname-standard' => 'Klasik',
+'skinname-nostalgia' => 'Nostalciya',
+'skinname-cologneblue' => 'Cologne Blue',
+'skinname-monobook' => 'MonoBook',
+'skinname-myskin' => 'MySkin',
+'skinname-chick' => 'Şıq',
+'skinname-simple' => 'Rehat',
+'skinname-modern' => 'Modern',
+'skinname-vector' => 'Vektor',
+
 # Patrolling
 'markaspatrolleddiff' => 'Nişan bike ke devriye biyo',
 'markaspatrolledtext' => 'Ena pele nişan bike ke devriye biyo',
@@ -2661,6 +3057,7 @@ $1',
 Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'imagemaxsize' => "Limitê ebat ê resimi:<br />''(qe pela deskripsiyonê dosyayan)''",
 'thumbsize' => 'Ebadê Thumbnaili',
+'widthheight' => '$1 - $2',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|pele|peli}}',
 'file-info' => 'ebatê dosyayi: $1, MIME tip: $2',
 'file-info-size' => '$1 × $2 pixelan, ebatê dosya: $3, MIME type: $4',
@@ -2678,7 +3075,7 @@ Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'file-info-png-frames' => '$1 {{PLURAL:$1|çerçeve|çerçeveyi}}',
 
 # Special:NewFiles
-'newimages' => 'Galeyê dosyayanê newe',
+'newimages' => 'Galeriya dosyayan dê newan',
 'imagelisttext' => "Cêr de yew listeyê '''$1''' esto {{PLURAL:$1|dosya|dosyayi}} veçiniya $2.",
 'newimages-summary' => 'Ena pela xasi dosyayi ke peni de bar biyayeyi mocnane.',
 'newimages-legend' => 'Filtre',
@@ -2690,6 +3087,11 @@ Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
 'sp-newimages-showfrom' => 'Dosyayê newi ke $2, $1 ra dest pe keni bimocne',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'video-dims' => '$1, $2 × $3',
+'seconds-abbrev' => '$1s',
+'minutes-abbrev' => '$1m',
+'hours-abbrev' => '$1h',
+'days-abbrev' => '$1d',
 'seconds' => 'verdê {{PLURAL:$1|$1 saniya|$1 saniya}}',
 'minutes' => 'verdê {{PLURAL:$1|$1 daka|$1 daka}}',
 'hours' => 'Verdê {{PLURAL:$1|$1 seata|$1 seata}}',
@@ -2703,6 +3105,61 @@ Tenya çiyo ke beno lista (rezê ke be * dest kenê cı) çıman ver de vêniyen
 Yew rêze de gırêyo sıfteyın gani gırêyo de dosya xırabıne bo.
 Na rêze de her gırêyo bin zey istisna vêniyeno, yanê pelê ke dosya beno ke sero rêzbiyaye asena.',
 
+/*
+Short names for language variants used for language conversion links.
+To disable showing a particular link, set it to 'disable', e.g.
+'variantname-zh-sg' => 'disable',
+Variants for Chinese language
+*/
+'variantname-zh-hans' => 'hans',
+'variantname-zh-hant' => 'hant',
+'variantname-zh-cn' => 'cn',
+'variantname-zh-tw' => 'tw',
+'variantname-zh-hk' => 'hk',
+'variantname-zh-mo' => 'mo',
+'variantname-zh-sg' => 'sg',
+'variantname-zh-my' => 'my',
+'variantname-zh' => 'zh',
+
+# Variants for Gan language
+'variantname-gan-hans' => 'hans',
+'variantname-gan-hant' => 'hant',
+'variantname-gan' => 'gan',
+
+# Variants for Serbian language
+'variantname-sr-ec' => 'sr-ec',
+'variantname-sr-el' => 'sr-el',
+'variantname-sr' => 'sr',
+
+# Variants for Kazakh language
+'variantname-kk-kz' => 'kk-kz',
+'variantname-kk-tr' => 'kk-tr',
+'variantname-kk-cn' => 'kk-cn',
+'variantname-kk-cyrl' => 'kk-cyrl',
+'variantname-kk-latn' => 'kk-latn',
+'variantname-kk-arab' => 'kk-arab',
+'variantname-kk' => 'kk',
+
+# Variants for Kurdish language
+'variantname-ku-arab' => 'ku-Arab',
+'variantname-ku-latn' => 'ku-Latn',
+'variantname-ku' => 'ku',
+
+# Variants for Tajiki language
+'variantname-tg-cyrl' => 'tg-Cyrl',
+'variantname-tg-latn' => 'tg-Latn',
+'variantname-tg' => 'tg',
+
+# Variants for Inuktitut language
+'variantname-ike-cans' => 'ike-Cans',
+'variantname-ike-latn' => 'ike-Latn',
+'variantname-iu' => 'iu',
+
+# Variants for Tachelhit language
+'variantname-shi-tfng' => 'shi-Tfng',
+'variantname-shi-latn' => 'shi-Latn',
+'variantname-shi' => 'shi',
+
 # Metadata
 'metadata' => 'Melumato serên',
 'metadata-help' => 'Ena dosya dı zafyer informasyoni esto. Belki ena dosya yew kamareyo dijital ya zi skaner ra vıraziyo.
@@ -2724,6 +3181,8 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 * gpslatitude
 * gpslongitude
 * gpsaltitude',
+'metadata-langitem' => "'''$2:''' $1",
+'metadata-langitem-default' => '$1',
 
 # EXIF tags
 'exif-imagewidth' => 'Herayey',
@@ -2771,6 +3230,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-exposuretime' => 'Zemanê orta de vinderdişi',
 'exif-exposuretime-format' => '$1 san ($2)',
 'exif-fnumber' => 'F Amar',
+'exif-fnumber-format' => 'f/$1',
 'exif-exposureprogram' => 'Programê Orta de Vinderdişi',
 'exif-spectralsensitivity' => 'Hesasiyetê spektrali',
 'exif-isospeedratings' => 'ISO değerê piti',
@@ -2784,6 +3244,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-lightsource' => 'Çimeyê roşni',
 'exif-flash' => 'Flaş',
 'exif-focallength' => 'Deganiyê fokus ê lensi',
+'exif-focallength-format' => '$1 mm',
 'exif-subjectarea' => 'Wareyê ey',
 'exif-flashenergy' => 'Kuvetê flaşi',
 'exif-focalplanexresolution' => 'Focal plane X resolution',
@@ -2838,8 +3299,15 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-gpsareainformation' => 'Nameyê wareyê GPSi',
 'exif-gpsdatestamp' => 'Tarixê GPSi',
 'exif-gpsdifferential' => 'GPS differential correction',
+'exif-coordinate-format' => '$1° $2′ $3″ $4',
 'exif-jpegfilecomment' => "Vatışê dosyada JPEG'i",
 'exif-keywords' => 'Qesa kelimey',
+'exif-worldregioncreated' => 'Resim dınya dı qanci mıntıqara gêriyayo',
+'exif-countrycreated' => 'Resim qanci dewlet ra gêriyayo',
+'exif-countrycodecreated' => 'Cayo ke resim ancıyayo kodê dewlet da cı',
+'exif-provinceorstatecreated' => 'Cayê resim antışi dewlet yana wılayet',
+'exif-citycreated' => 'Suka ke resim gêriyayao',
+'exif-sublocationcreated' => 'Bın lokasyonê resimê suker da cı grot',
 'exif-worldregiondest' => 'Wareyo ke mocneyêno',
 'exif-countrydest' => 'Dewleta ke mocneyêna',
 'exif-countrycodedest' => 'Kodê dewleto ke mocneyoêno',
@@ -2851,25 +3319,39 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-headline' => 'Sername',
 'exif-credit' => 'Kredi/Destegdaren',
 'exif-source' => 'Çıme',
+'exif-editstatus' => 'Resmi vurnayışê weziyeti',
 'exif-urgency' => 'Aciliyet',
 'exif-fixtureidentifier' => 'Namey fiksturi',
 'exif-locationdest' => 'Tarifê cay',
+'exif-locationdestcode' => 'Lokasyon kodi vaciya',
+'exif-objectcycle' => 'Qandê medyay deme u roce cı',
 'exif-contact' => 'Zanışiya irtibati',
 'exif-writer' => 'Nuştekar',
 'exif-languagecode' => 'Zıwan',
 'exif-iimversion' => 'Verqaydê IIM',
 'exif-iimcategory' => 'Kategori',
+'exif-iimsupplementalcategory' => 'Oleyê Kategoriyan',
 'exif-datetimeexpires' => 'No peyra mekarênê',
 'exif-datetimereleased' => 'Bıroşe',
 'exif-originaltransmissionref' => 'Oricinal pusula da kodê açarnayışi',
 'exif-identifier' => 'Şınasnayer',
 'exif-lens' => 'Lensê karkerdışi',
+'exif-serialnumber' => 'Seri nımreyê kamera',
 'exif-cameraownername' => 'Wayırê kamera',
 'exif-label' => 'Etiket',
+'exif-datetimemetadata' => 'Malumatê metamalumati peyd timarya',
+'exif-nickname' => 'Bêresmi namey cı',
 'exif-rating' => 'Rey dayış (5i sera)',
+'exif-rightscertificate' => 'Sertifikayê idariya heqan',
 'exif-copyrighted' => 'Weziyetê telifi',
 'exif-copyrightowner' => 'Wayırê Telifi',
 'exif-usageterms' => 'Şertê karkerdışi',
+'exif-webstatement' => 'Heqê telifiya miyandene',
+'exif-originaldocumentid' => 'Xasiya ID ya dokuman de orcinali',
+'exif-licenseurl' => 'Qandê Lisans de heqê telifiye URL',
+'exif-morepermissionsurl' => 'Alternatif malumatê lisansi',
+'exif-attributionurl' => 'No nuşte çı wext karyayo, şıma ra reca gre dekerê de',
+'exif-preferredattributionname' => 'No nuşte çı wext karyayo, Şıma ra reca morkerê',
 'exif-pngfilecomment' => "Vatışê dosyada PNG'i",
 'exif-disclaimer' => 'Reddê mesuliyeti',
 'exif-contentwarning' => 'İkazê zerreki',
@@ -2880,14 +3362,40 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-event' => 'Weqaya ke nameycıyo ravreno',
 'exif-organisationinimage' => 'Organizasyono ke ravêreno',
 'exif-personinimage' => 'Merdumo ke nameycıyo ravêreno',
+'exif-originalimageheight' => 'Veror de resim nêkırpnayışi dergeya cı',
+'exif-originalimagewidth' => 'Veror de resim nêkırpnayışi herayeya cı',
+
+# Make & model, can be wikified in order to link to the camera and model name
+'exif-contact-value' => '$1
+
+$2
+<div class="adr">
+$3
+
+$4, $5, $6 $7
+</div>
+$8',
+'exif-subjectnewscode-value' => '$2 ($1)',
 
 # EXIF attributes
-'exif-compression-1' => 'têhet nêanciyayo',
-'exif-compression-6' => 'wext o ke nêzaniyeno',
+'exif-compression-1' => 'Nêdegusneyayo',
+'exif-compression-2' => 'CCITT Group 3 1-Dimensiyonel dergeya cı timarkerdışê cı bıwanê',
+'exif-compression-3' => 'CCITT Group 3 fax kodkerdış',
+'exif-compression-4' => 'CCITT Group 4 fax kodkerdış',
+'exif-compression-5' => 'LZW',
+'exif-compression-6' => 'JPEG (verên)',
+'exif-compression-7' => 'JPEG',
+'exif-compression-8' => 'Deflate (Adobe)',
+'exif-compression-32773' => 'PackBits (Macintosh RLE)',
+'exif-compression-32946' => 'Deflate (PKZIP)',
+'exif-compression-34712' => 'JPEG2000',
 
 'exif-copyrighted-true' => 'Heqê telifiye',
 'exif-copyrighted-false' => 'Malê umumiye',
 
+'exif-photometricinterpretation-2' => 'RGB',
+'exif-photometricinterpretation-6' => 'YCbCr',
+
 'exif-unknowndate' => 'Tarix nizanyano',
 
 'exif-orientation-1' => 'Normal',
@@ -2902,9 +3410,19 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-planarconfiguration-1' => 'chunky format',
 'exif-planarconfiguration-2' => 'planar format',
 
+'exif-xyresolution-i' => '$1 dpi',
+'exif-xyresolution-c' => '$1 dpc',
+
+'exif-colorspace-1' => 'sRGB',
 'exif-colorspace-65535' => 'Kalibrasyon nêvıraziyayo',
 
 'exif-componentsconfiguration-0' => 'çini yo',
+'exif-componentsconfiguration-1' => 'Y',
+'exif-componentsconfiguration-2' => 'Cb',
+'exif-componentsconfiguration-3' => 'Cr',
+'exif-componentsconfiguration-4' => 'R',
+'exif-componentsconfiguration-5' => 'G',
+'exif-componentsconfiguration-6' => 'B',
 
 'exif-exposureprogram-0' => 'nêdiya daşınasnayişi',
 'exif-exposureprogram-1' => 'Pê/bı dest',
@@ -2942,6 +3460,10 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-lightsource-17' => 'Roşna standarde A',
 'exif-lightsource-18' => 'Roşna standarde B',
 'exif-lightsource-19' => 'Roşna standarde C',
+'exif-lightsource-20' => 'D55',
+'exif-lightsource-21' => 'D65',
+'exif-lightsource-22' => 'D75',
+'exif-lightsource-23' => 'D50',
 'exif-lightsource-24' => 'ISO volframê studyoyi',
 'exif-lightsource-255' => 'Çimeyê roşni yê bini',
 
@@ -3055,6 +3577,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-ycbcrpositioning-2' => 'Wayırê-site',
 
 'exif-dc-contributor' => 'İştırakdari',
+'exif-dc-coverage' => 'Heruna yana wextin grotışa medya',
 'exif-dc-date' => 'Tarix(i)',
 'exif-dc-publisher' => 'Wılakar',
 'exif-dc-relation' => 'Medyay cı',
@@ -3066,6 +3589,8 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 
 'exif-isospeedratings-overflow' => '65535 ra gırdo',
 
+'exif-maxaperturevalue-value' => '$1 APEX (f/$2)',
+
 'exif-iimcategory-ace' => 'Zagon, kultur u keyfiye',
 'exif-iimcategory-clj' => 'Arey u huquq',
 'exif-iimcategory-dis' => 'Weqey u Qezey',
@@ -3173,8 +3698,11 @@ kodê tesdiqi heta ıney tarixi $4 meqbul o.',
 'deletedwhileediting' => "'''Teme''': Ena pele  verniyê ti de eseteriyaya!",
 'confirmrecreate' => "Karberê [[User:$1|$1]]î ([[User talk:$1|mesac]]), verniyê vurnayîşê ti ra ena pele wedarno, sebeb: ''$2''
 Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
+'confirmrecreate-noreason' => 'karbero [[User:$1|$1]] ([[User talk:$1|mesac]]) , dest pêkerdışiena pela sero vurnayışiya tepya ena pela besternê. Şıma qayıli ke ena pela fına vırazê se ena pela tesdiq kerê.',
 'recreate' => 'Reyna viraz',
 
+'unit-pixel' => 'px',
+
 # action=purge
 'confirm_purge_button' => 'Temam',
 'confirm-purge-top' => 'Cacheyê eno pel biestere?',
@@ -3186,6 +3714,18 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 'confirm-unwatch-button' => 'TEMAM',
 'confirm-unwatch-top' => 'Ena pele lista xoya seyirkerdışi ra bıvece?',
 
+# Separators for various lists, etc.
+'semicolon-separator' => '&#32;',
+'comma-separator' => ',&#32;',
+'colon-separator' => ':&#32;',
+'autocomment-prefix' => '-&#32;',
+'pipe-separator' => '&#32;|&#32;',
+'word-separator' => '&#32;',
+'ellipsis' => '...',
+'percent' => '$1%',
+'parentheses' => '($1)',
+'brackets' => '[$1]',
+
 # Multipage image navigation
 'imgmultipageprev' => '← peleyê verin',
 'imgmultipagenext' => 'pela badê cû →',
@@ -3210,6 +3750,28 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 'autoredircomment' => 'Pele [[$1]] rê redirek biyo',
 'autosumm-new' => "Pela vıraziyê, '$1' bıvinê",
 
+# Size units
+'size-bytes' => '$1 B',
+'size-kilobytes' => '$1 KB',
+'size-megabytes' => '$1 MB',
+'size-gigabytes' => '$1 GB',
+'size-terabytes' => '$1 TB',
+'size-petabytes' => '$1 PB',
+'size-exabytes' => '$1 EB',
+'size-zetabytes' => '$1 ZB',
+'size-yottabytes' => '$1 YB',
+
+# Bitrate units
+'bitrate-bits' => '$1bps',
+'bitrate-kilobits' => '$1kbps',
+'bitrate-megabits' => '$1Mbps',
+'bitrate-gigabits' => '$1Gbps',
+'bitrate-terabits' => '$1Tbps',
+'bitrate-petabits' => '$1Pbps',
+'bitrate-exabits' => '$1Ebps',
+'bitrate-zetabits' => '$1Zbps',
+'bitrate-yottabits' => '$1Ybps',
+
 # Live preview
 'livepreview-loading' => 'Ho bar keni...',
 'livepreview-ready' => 'Ho bar keni... Hezir o!',
@@ -3247,8 +3809,67 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'watchlisttools-edit' => 'listey seyrkerdışi bevin u edit bık',
 'watchlisttools-raw' => 'Listeyê seyr-kerdışi bıvin',
 
+# Iranian month names
+'iranian-calendar-m1' => 'Farvardin',
+'iranian-calendar-m2' => 'Ordibeheşt',
+'iranian-calendar-m3' => 'Xordad',
+'iranian-calendar-m4' => 'Tir',
+'iranian-calendar-m5' => 'Morded',
+'iranian-calendar-m6' => 'Şahrivar',
+'iranian-calendar-m7' => 'Mehr',
+'iranian-calendar-m8' => 'Aban',
+'iranian-calendar-m9' => 'Azar',
+'iranian-calendar-m10' => 'Dey',
+'iranian-calendar-m11' => 'Behman',
+'iranian-calendar-m12' => 'Esfend',
+
+# Hijri month names
+'hijri-calendar-m1' => 'Muharram',
+'hijri-calendar-m2' => 'Sefer',
+'hijri-calendar-m3' => 'Rebiel ewwel',
+'hijri-calendar-m4' => 'Rebiel sani',
+'hijri-calendar-m5' => 'Cemaziel ewwel',
+'hijri-calendar-m6' => 'Cemaziel tani',
+'hijri-calendar-m7' => 'Receb',
+'hijri-calendar-m8' => 'Şehban',
+'hijri-calendar-m9' => 'Remezan',
+'hijri-calendar-m10' => 'Şewwal',
+'hijri-calendar-m11' => 'Zil Qade',
+'hijri-calendar-m12' => 'Zil Hicce',
+
+# Hebrew month names
+'hebrew-calendar-m1' => 'Tişrei',
+'hebrew-calendar-m2' => 'Çeşvan',
+'hebrew-calendar-m3' => 'Kislev',
+'hebrew-calendar-m4' => 'Tevet',
+'hebrew-calendar-m5' => 'Şevat',
+'hebrew-calendar-m6' => 'Adar',
+'hebrew-calendar-m6a' => 'Adar I',
+'hebrew-calendar-m6b' => 'Adar II',
+'hebrew-calendar-m7' => 'Nisan',
+'hebrew-calendar-m8' => 'Iyar',
+'hebrew-calendar-m9' => 'Sivan',
+'hebrew-calendar-m10' => 'Tamuz',
+'hebrew-calendar-m11' => 'Av',
+'hebrew-calendar-m12' => 'Elul',
+'hebrew-calendar-m1-gen' => 'Tişrei',
+'hebrew-calendar-m2-gen' => 'Çeşvan',
+'hebrew-calendar-m3-gen' => 'Kislev',
+'hebrew-calendar-m4-gen' => 'Tevet',
+'hebrew-calendar-m5-gen' => 'Şevat',
+'hebrew-calendar-m6-gen' => 'Adar',
+'hebrew-calendar-m6a-gen' => 'Adar I',
+'hebrew-calendar-m6b-gen' => 'Adar II',
+'hebrew-calendar-m7-gen' => 'Nisan',
+'hebrew-calendar-m8-gen' => 'Iyar',
+'hebrew-calendar-m9-gen' => 'Sivan',
+'hebrew-calendar-m10-gen' => 'Tamuz',
+'hebrew-calendar-m11-gen' => 'Av',
+'hebrew-calendar-m12-gen' => 'Elul',
+
 # Signatures
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|mesac]])',
+'timezone-utc' => 'ŞWC',
 
 # Core parser functions
 'unknown_extension_tag' => 'Etiketê ekstensiyon ê "$1"î nizanyeno',
@@ -3262,6 +3883,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-variables' => 'Vurnayeyî',
 'version-antispam' => 'Spam vındarnayış',
 'version-skins' => 'Cıldi',
+'version-api' => 'API',
 'version-other' => 'Bin',
 'version-mediahandlers' => 'Kulbê medyayî',
 'version-hooks' => 'Çengelî',
@@ -3271,6 +3893,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-hook-name' => 'Nameyê çengelî',
 'version-hook-subscribedby' => 'Eza biyayoğ',
 'version-version' => '(Versiyon $1)',
+'version-svn-revision' => '(r$2)',
 'version-license' => 'Lisans',
 'version-poweredby-credits' => "Ena wiki, dezginda '''[//www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
 'version-poweredby-others' => 'Zewmi',
@@ -3285,6 +3908,8 @@ enê programiya piya [{{SERVER}}{{SCRIPTPATH}}/COPYING jew kopyay lisans dê GNU
 'version-entrypoints' => "heruna dekewtış de GRE'i",
 'version-entrypoints-header-entrypoint' => 'Heruna dekewtışi',
 'version-entrypoints-header-url' => 'GRE',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Article path]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
 
 # Special:FilePath
 'filepath' => 'Heruna dosyayer',
@@ -3294,7 +3919,7 @@ enê programiya piya [{{SERVER}}{{SCRIPTPATH}}/COPYING jew kopyay lisans dê GNU
 Resımi be tam asayış mocniyayê, tipê dosyaê bini be programê cıyo elaqedar direkt dest keno pê.',
 
 # Special:FileDuplicateSearch
-'fileduplicatesearch' => 'kopyayê dosyayi bigêre',
+'fileduplicatesearch' => 'Dosyayanê zey pêyan cı geyrê',
 'fileduplicatesearch-summary' => 'Dosyanê çıftan bınê têmiyankewteyan de bıgeyre.',
 'fileduplicatesearch-legend' => 'kopyayê ena dosya bigêre',
 'fileduplicatesearch-filename' => 'Nameyê dosyayi',
@@ -3316,11 +3941,11 @@ Resımi be tam asayış mocniyayê, tipê dosyaê bini be programê cıyo elaqed
 'specialpages-group-changes' => 'Vurnayişê peni u logan',
 'specialpages-group-media' => 'Raporê medya u bar kerdîşî',
 'specialpages-group-users' => 'Karber u heqqî',
-'specialpages-group-highuse' => 'Pelî ke zaf klik benê',
+'specialpages-group-highuse' => 'Peleyê ke vêşi karênê',
 'specialpages-group-pages' => 'listeyanê pelan',
-'specialpages-group-pagetools' => 'hacetanê pelayan',
-'specialpages-group-wiki' => 'Data u hacetê wîkîyî',
-'specialpages-group-redirects' => 'Pela xasî reyna direk kenê',
+'specialpages-group-pagetools' => 'Hacetê pelan',
+'specialpages-group-wiki' => 'Malumatê wiki u haceti',
+'specialpages-group-redirects' => 'Pela xasîyê ke heteneyayê',
 'specialpages-group-spam' => 'hacetê spami',
 
 # Special:BlankPage
@@ -3338,7 +3963,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 #parçeyê ifadeya rêzbiyayeyani bıerzê serê ney satıri. no satır zey xo verde/raverde </pre>',
 
 # Special:Tags
-'tags' => 'Etiketê vurnayîş ê raştî',
+'tags' => 'Etiketê vurnayîşê raştî',
 'tag-filter' => '[[Special:Tags|Tag]] filitre:',
 'tag-filter-submit' => 'Filitre',
 'tags-title' => 'Etiketan',
@@ -3351,13 +3976,16 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'tags-hitcount' => '$1 {{PLURAL:$1|vurnayış|vurnayışi}}',
 
 # Special:ComparePages
-'comparepages' => 'Peleyan miqeyese bike',
+'comparepages' => 'Pela miqeyese ke',
 'compare-selector' => 'Revizyonê pele miqayese bike',
 'compare-page1' => 'Pel 1',
 'compare-page2' => 'Pel 2',
 'compare-rev1' => 'Revizyonê 1i',
 'compare-rev2' => 'Revizyonê 2i',
 'compare-submit' => 'Miqayese',
+'compare-invalid-title' => 'Sernameyo ke şımayê vanê ravêrde niyo.',
+'compare-title-not-exists' => 'Sernameyo ke şımayê vanê mewcud niyo.',
+'compare-revision-not-exists' => 'Revizyono ke şımaye vanê mewcud niyo.',
 
 # Database error messages
 'dberr-header' => 'Ena Wiki de yew ğelet esta',
@@ -3381,20 +4009,36 @@ Ena sita dı newke xırabiya teknik esta.',
 'htmlform-reset' => 'Vurnayişî reyna biyar',
 'htmlform-selectorother-other' => 'Bin',
 
+# SQLite database support
+'sqlite-has-fts' => '$1 tam-metn destegê cı geyrayışiya piya',
+'sqlite-no-fts' => '$1 tam-metn bê destegê cı geyrayışi',
+
 # New logging system
 'logentry-delete-delete' => "Karber $1' pelay $3' besternê",
 'logentry-delete-restore' => "Karber $1' pelay $3' peyser grot",
+'logentry-delete-event' => '$1 asaneyaışê {{PLURAL:$5|weqey roceke|$5 weqey rocekan}} kerdi het de $3: $4 vurna',
+'logentry-delete-revision' => '$1 $3: pela da $4 dı  {{PLURAL:$5|jew revizyon|$5 revizyon}} asayışê cı vurna',
+'logentry-delete-event-legacy' => '$1 Asayışê vurnayışê $3 dekerde de',
+'logentry-delete-revision-legacy' => '$1 revizyonê pela da $3 asayışê cı vurna',
 'logentry-suppress-delete' => '$1  $3 rê pıloxneyê',
-'revdelete-content-hid' => 'nusno nımte',
-'revdelete-summary-hid' => 'Vurnayışi nımtey niyê',
-'revdelete-uname-hid' => 'Namey karberi nımteyo',
-'revdelete-content-unhid' => 'Zerrek mocneya',
+'logentry-suppress-event' => '$1 asayışê  {{PLURAL:$5|weqey rocaka|$5 weqey rocekan}}  $3: $4 miyanıki vurna',
+'logentry-suppress-revision' => '$1 $3: pela da $4 dı  {{PLURAL:$5|jew revizyon|$5 revizyon}} asayışê cı xısusiye vurna',
+'logentry-suppress-event-legacy' => '$1 Asayışê vurnayışê ciyo xısusiyeta cı $3 dekerde de',
+'logentry-suppress-revision-legacy' => '$1 revizyonê pela da $3 asayışê cıyo xısuiye vurna',
+'revdelete-content-hid' => 'zerreko nımte',
+'revdelete-summary-hid' => 'xulusaya vurnayışa nımneyê',
+'revdelete-uname-hid' => 'namey karberi nımteyo',
+'revdelete-content-unhid' => 'errek mocneya',
 'revdelete-summary-unhid' => 'Xulusaya vurnayışa mucneyê',
-'revdelete-uname-unhid' => 'Namey karberi ne nımteyo',
+'revdelete-uname-unhid' => 'namey karberi ne nımteyo',
 'revdelete-restricted' => 'verger (vergırewtış) ê ke qey xızmkaran biye',
 'revdelete-unrestricted' => 'verger (ver gırewtış) ê ke qey xızmkaran diyê wera (wedariyê)',
 'logentry-move-move' => "Karber $1' pelay $3' berd $4",
 'logentry-move-move-noredirect' => "$1'i pelay $3 raçarnayış neker dı u berd $4",
+'logentry-move-move_redir' => '$1 pela $3 pela da $4 sera hetenayış ra ahulnê',
+'logentry-move-move_redir-noredirect' => '$1 hetenayışê qeydê pela da  $3 ahulnê $4 sero hetenayış vıraşt',
+'logentry-patrol-patrol' => '$1 revizyonê pela da $4 $3 ke kontrol',
+'logentry-patrol-patrol-auto' => '$1 Otomatik revizyonê pela da $4  $3 ke kontrol',
 'logentry-newusers-newusers' => '$1 deye namey karberi vıraziya',
 'logentry-newusers-create' => '$1 deye namey karberi vıraziya',
 'logentry-newusers-create2' => "$1'i $3 rê hesab vıraşt",
@@ -3402,6 +4046,7 @@ Ena sita dı newke xırabiya teknik esta.',
 'newuserlog-byemail' => 'pê e-mail ra paralo şiravt',
 
 # Feedback
+'feedback-bugornote' => 'Jew mersela teferruato teknik esta şıma reca malumatê şıma hazıro se [ $1  jew xırab rapor] bıvinê.Zewbi zi, formê cerê xo rê şenê karfiyê. Vatışê xo pela da "[ $3  $2 ]", namey karber dê xoya piya u wasteriya karfiye.',
 'feedback-subject' => 'Muhtewa:',
 'feedback-message' => 'Mesac:',
 'feedback-cancel' => 'Bıterkne',
@@ -3410,19 +4055,48 @@ Ena sita dı newke xırabiya teknik esta.',
 'feedback-error1' => 'Xeta: API ra neticey ne vıcyay',
 'feedback-error2' => 'Xeta: Timar kerdış nebı',
 'feedback-error3' => 'Xeta: API ra cewab çıno',
+'feedback-thanks' => 'Teşekkur kemê! Vatışê şıma pela da "[$2 $1]" esta.',
 'feedback-close' => 'Biya star',
+'feedback-bugcheck' => 'Harika! Sadece [xırabina ke $1 ] çınyayışê cı kontrol keno.',
 'feedback-bugnew' => 'Mı qontrol ke. Xetaya newi xeber ke',
 
 # API errors
+'api-error-badaccess-groups' => 'Ena wiki de dosya barkerdışi rê mısade nêdeyêno.',
+'api-error-badtoken' => 'Xirabiya zerrek:Xırab resim.',
+'api-error-copyuploaddisabled' => 'URL barkerdış ena waster dı qefılyayo.',
 'api-error-duplicate' => 'Ena {{PLURAL:$1|ze ke [zey $2]|biya [zey dosya da $2]}} zeq wesiqa biya wendeyê.',
 'api-error-duplicate-archive' => 'Ena {{PLURAL:$1|vurneyaya [$2 zey na dosya]| [zerrey cı zey $2 dosya]}} aseno,feqet {{PLURAL:$1|ena dosya|tewr veri}} besterneyaya.',
 'api-error-duplicate-archive-popup-title' => 'Ena {{PLURAL:$1|Dosya besterneyaya|dosya}} xora  besterneyaya.',
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|dosyaya|dosyaya}} dılet',
+'api-error-empty-file' => 'Dosyaya ke şıma rışta venga.',
+'api-error-emptypage' => 'Newi, pelaya veng vıraştışi rê mısade nêdeyêno.',
+'api-error-fetchfileerror' => 'Xırabiya zerrek:Dosya grotış dı tay çi raşt nêşı.',
+'api-error-file-too-large' => 'Dosyaye ke şıma rışta zaf gırda.',
+'api-error-filename-tooshort' => 'Namayê dosyayi zaf kilm a.',
 'api-error-filetype-banned' => 'Tipê ena dosya qedexe biya.',
+'api-error-filetype-missing' => 'Derganiya dosya kemiya',
+'api-error-hookaborted' => 'Vurnayişê tu ke to cerbna pê yew çengal ra terkneya.',
+'api-error-http' => 'Xırabiya zerreki:Wasteriya irtabet bırya.',
 'api-error-illegal-filename' => 'Ena nameyê dosyayi kebul nibena.',
+'api-error-internal-error' => 'Xırabiye zerrek:Na wikide barkerdış de şıma dı çıyê raşt nêşı.',
+'api-error-invalid-file-key' => 'Xırabiye zerrek:İdari  depokerdışê dosya nêvineya.',
+'api-error-missingparam' => 'Xırabiye zerrek:Parametre waştış dı xırabin',
+'api-error-missingresult' => 'Xırabiya zerrek:Kopya kerdışê cı nêbı.',
+'api-error-mustbeloggedin' => 'Dosya barkerdışi re cıkewtış icab keno.',
+'api-error-mustbeposted' => 'Zırabiya zerrek:HTTP POST waştış icab keno',
+'api-error-noimageinfo' => 'Barkerdışê dosya temamya lakin wasterira marê malumat nêdeyayo.',
+'api-error-nomodule' => 'Xırabiya zerrek:Sazkerdışê modul dê barkerdışi nêvıraziyayo.',
+'api-error-ok-but-empty' => 'Xırabiya zerrek:Wastero cıwan nêdano.',
+'api-error-overwrite' => 'Ser yew dosyayê ke hama esta, ser ey qeyd nibena.',
+'api-error-stashfailed' => 'Xırabiya zerrek:Wasteri idari dosyey kerdi vıni.',
+'api-error-timeout' => 'Cıwab dayışê wasteri peyra mend.',
+'api-error-unclassified' => 'Yew xeteyê nizanyeni biya.',
 'api-error-unknown-code' => "$1'dı jew xeta vıciye",
+'api-error-unknown-error' => 'Zerre xırabin:Dasoya barkerdış de tay çi raşt nêşı.',
 'api-error-unknown-warning' => "$1'dı ikazo xırab:",
 'api-error-unknownerror' => "$1'dı jew xeta vıciye",
+'api-error-uploaddisabled' => 'BArkerdış ena wikide qefılneyayo',
+'api-error-verification-error' => 'Dosya xırabiya yana derganiya cı xıraba.',
 
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|saniya|saniyey}}',
index d0dc072..c510f72 100644 (file)
@@ -1961,6 +1961,7 @@ Pšosym glědaj na to, až druge websedła móžu k drugej dataji z direktnym UR
 'alllogstext' => 'To jo kombiněrowane zwobraznjenje wšyknych we {{GRAMMAR:lokatiw|{{SITENAME}}}} k dispoziciji stojecych protokolow. Móžoš naglěd pśez wubraśe protokolowego typa, wužywarskego mjenja (pód źiwanim wjelikopisanja) abo pótrjefjonego boka (teke pód źiwanim wjelikopisanja) wobgranicowaś.',
 'logempty' => 'Žedne se góźece zapise njeeksistěruju.',
 'log-title-wildcard' => 'Pytaś nadpismo, kótarež zachopijo z ...',
+'showhideselectedlogentries' => 'Wubrane protokolowe zapiski pokazaś/schowaś',
 
 # Special:AllPages
 'allpages' => 'Wšykne boki',
@@ -2816,6 +2817,7 @@ W zespominanju dajo se pśicyna pódaś.',
 'spambot_username' => 'MediaWikijowe spamowe rěšenje',
 'spam_reverting' => 'Nawrośijo se slědna wersija, kótaraž njejo wopśimjeła wótkaz na $1.',
 'spam_blanking' => 'Wšykne wersije su wopśimowali wótkaze na $1, do rěcha spórane.',
+'spam_deleting' => 'Wšykne wersije z wótkazami do $1 so lašuju',
 
 # Info page
 'pageinfo-title' => 'Informacije za bok "$1"',
index a42be02..b7275f8 100644 (file)
@@ -191,6 +191,7 @@ $bookstoreList = array(
  * Customisable syntax for wikitext and elsewhere.
  *
  * IDs must be valid identifiers, they cannot contain hyphens.
+ * CASE is 0 to match all case variants, 1 for case-sensitive
  *
  * Note to translators:
  *   Please include the English words as synonyms.  This allows people
@@ -2657,14 +2658,15 @@ Please note that other web sites may link to a file with a direct URL, and so ma
 'pubmedurl' => '//www.ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract', # do not translate or duplicate this message to other languages
 
 # Special:Log
-'specialloguserlabel'  => 'Performer:',
-'speciallogtitlelabel' => 'Target (title or user):',
-'log'                  => 'Logs',
-'all-logs-page'        => 'All public logs',
-'alllogstext'          => 'Combined display of all available logs of {{SITENAME}}.
+'specialloguserlabel'        => 'Performer:',
+'speciallogtitlelabel'       => 'Target (title or user):',
+'log'                        => 'Logs',
+'all-logs-page'              => 'All public logs',
+'alllogstext'                => 'Combined display of all available logs of {{SITENAME}}.
 You can narrow down the view by selecting a log type, the username (case-sensitive), or the affected page (also case-sensitive).',
-'logempty'             => 'No matching items in log.',
-'log-title-wildcard'   => 'Search titles starting with this text',
+'logempty'                   => 'No matching items in log.',
+'log-title-wildcard'         => 'Search titles starting with this text',
+'showhideselectedlogentries' => 'Show/hide selected log entries',
 
 # Special:AllPages
 'allpages'                => 'All pages',
@@ -3054,6 +3056,7 @@ It may have already been undeleted.',
 $1',
 'undelete-show-file-confirm'   => 'Are you sure you want to view the deleted revision of the file "<nowiki>$1</nowiki>" from $2 at $3?',
 'undelete-show-file-submit'    => 'Yes',
+'undelete-revisionrow'        => "$1 $2 $3 $4 . . $5 $6 $7",
 
 # Namespace form on various pages
 'namespace'                     => 'Namespace:',
@@ -3689,6 +3692,7 @@ This is probably caused by a link to a blacklisted external site.',
 'spambot_username'    => 'MediaWiki spam cleanup',
 'spam_reverting'      => 'Reverting to last revision not containing links to $1',
 'spam_blanking'       => 'All revisions contained links to $1, blanking',
+'spam_deleting'       => 'All revisions contained links to $1, deleting',
 
 # Info page
 'pageinfo-title'            => 'Information for "$1"',
index aa8ab47..c5e3988 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Spanish (Español)
+/** Spanish (español)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2201,6 +2201,7 @@ Por favor note que otros sitios web pueden vincular a un archivo con un URL dire
 Puedes filtrar la vista seleccionando un tipo de registro, el nombre del usuario o la página afectada. Se distinguen mayúsculas de minúsculas.',
 'logempty' => 'No hay elementos en el registro con esas condiciones.',
 'log-title-wildcard' => 'Buscar títulos que empiecen con este texto',
+'showhideselectedlogentries' => 'Mostrar u ocultar las entradas del registro seleccionado',
 
 # Special:AllPages
 'allpages' => 'Todas las páginas',
@@ -3104,6 +3105,7 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
 'spambot_username' => 'Limpieza de spam de MediaWiki',
 'spam_reverting' => 'Revirtiendo a la última versión que no contenga enlaces a $1',
 'spam_blanking' => 'Todas las revisiones contienen enlaces a $1, blanqueando',
+'spam_deleting' => 'Todas las revisiones que contienen enlaces a $1, en proceso de eliminación',
 
 # Info page
 'pageinfo-title' => 'Información para «$1»',
index 60e7fc4..2f2e77e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Estonian (Eesti)
+/** Estonian (eesti)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1623,6 +1623,7 @@ See ei tohi olla pikem kui $1 {{PLURAL:$1|sümbol|sümbolit}}.',
 'newsectionsummary' => '/* $1 */ uus alajaotus',
 'rc-enhanced-expand' => 'Näita üksikasju (nõuab JavaScripti)',
 'rc-enhanced-hide' => 'Peida üksikasjad',
+'rc-old-title' => 'alustatud pealkirja "$1" all',
 
 # Recent changes linked
 'recentchangeslinked' => 'Seotud muudatused',
index 30179c1..d9478bf 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Basque (Euskara)
+/** Basque (euskara)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -753,7 +753,8 @@ Azken blokeoaren erregistroa ageri da behean, erreferentzia gisa:',
 'userinvalidcssjstitle' => "'''Oharra:''' Ez da \"\$1\" itxura existitzen. Kontuan izan .css eta .js fitxategi pertsonalizatuen izenak letra xehez idatzi behar direla; adibidez, {{ns:user}}:Adibide/vector.css, eta ez {{ns:user}}:Adibide/Vector.css.",
 'updated' => '(Eguneratua)',
 'note' => "'''Oharra:'''",
-'previewnote' => "'''Gogoratu hau aurreikusketa bat dela, beraz gorde egin beharko duzu!'''",
+'previewnote' => "'''Gogoratu hau aurrikuspen bat dela.'''
+Zure aldaketak ez dira oraindik gorde!",
 'previewconflict' => 'Aurreikuspenak aldaketen koadroan idatzitako testua erakusten du, gorde ondoren agertuko den bezala.',
 'session_fail_preview' => "'''Sentitzen dugu! Ezin izan da zure aldaketa prozesatu, saioko datu batzuen galera dela-eta. Mesedez, saiatu berriz. Arazoak jarraitzen badu, saiatu saioa amaitu eta berriz hasten.'''",
 'session_fail_preview_html' => "'''Sentitzen dugu! Ezin izan dugu zure aldaketa burutu, saio datu galera bat medio.'''
@@ -1016,7 +1017,7 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'mergelogpagetext' => 'Jarraian dagoen zerrendak orrialde baten historiatik beste batera egindako azken bateratzeak erakusten ditu.',
 
 # Diffs
-'history-title' => '"$1" orrialdearen historia laburpena',
+'history-title' => '"$1" orrialdearen historia berrikuspena',
 'difference-multipage' => '(Orrialdeen arteko ezberdintasunak)',
 'lineno' => '$1. lerroa:',
 'compareselectedversions' => 'Hautatutako bertsioak alderatu',
@@ -1599,6 +1600,8 @@ Ondorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak
 'linkstoimage-redirect' => '$1 (fitxategi birzuzenketa) $2',
 'duplicatesoffile' => 'Ondorengo fitxategi {{PLURAL:$1|hau beste honen berdina da|$1 hauek beste honen berdinak dira}} ([[Special:FileDuplicateSearch/$2|zehaztasun gehiago]]):',
 'sharedupload' => 'Elkarbanatutako fitxategi hau $1-(e)ko igoera bat da eta beste proiektuek ere erabil dezakete.',
+'sharedupload-desc-here' => 'Fitxategi hau $1-(e)koa da eta beste proeiktuetan erabilia izan liteke.
+Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'filepage-nofile' => 'Izen horrekin ez dago fitxategirik.',
 'uploadnewversion-linktext' => 'Fitxategi honen bertsio berri bat igo',
 'shared-repo-from' => '$1-tik',
index ad92e7f..0d92e6e 100644 (file)
@@ -78,10 +78,10 @@ $specialPageAliases = array(
        'Booksources'               => array( 'منابع_کتاب' ),
        'BrokenRedirects'           => array( 'تغییرمسیرهای_خراب' ),
        'Categories'                => array( 'رده‌ها' ),
-       'ChangeEmail'               => array( 'تغییر_رایانامه', 'تغییر_پست_الکترونیکی' ),
+       'ChangeEmail'               => array( 'تغییر_رایانامه' ),
        'ChangePassword'            => array( 'از_نو_کردن_گذرواژه' ),
        'ComparePages'              => array( 'مقایسه_صفحات' ),
-       'Confirmemail'              => array( 'تایید_رایانامه', 'تایید_پست_الکترونیکی' ),
+       'Confirmemail'              => array( 'تایید_رایانامه' ),
        'Contributions'             => array( 'مشارکت‌ها' ),
        'CreateAccount'             => array( 'ایجاد_حساب_کاربری' ),
        'Deadendpages'              => array( 'صفحه‌های_بن‌بست' ),
@@ -95,7 +95,7 @@ $specialPageAliases = array(
        'FileDuplicateSearch'       => array( 'جستجوی_پرونده_تکراری' ),
        'Filepath'                  => array( 'مسیر_پرونده' ),
        'Import'                    => array( 'درون_ریزی_صفحه' ),
-       'Invalidateemail'           => array( 'باطل_کردن_رایانامه', 'باطل_کردن_پست_الکترونیکی' ),
+       'Invalidateemail'           => array( 'باطل_کردن_رایانامه' ),
        'BlockList'                 => array( 'فهرست_بستن_نشانی_آی‌پی' ),
        'LinkSearch'                => array( 'جستجوی_پیوند' ),
        'Listadmins'                => array( 'فهرست_مدیران' ),
@@ -254,18 +254,17 @@ $dateFormats = array(
        'persian date' => '‏xij xiF xiY',
        'persian both' => '‏xij xiF xiY، ساعت H:i',
 
-    'hebrew time' => '‏H:i',
+       'hebrew time' => '‏H:i',
        'hebrew date' => '‏xij xjF xjY',
        'hebrew both' => '‏H:i, xij xjF xjY',
 
-
        'ISO 8601 time' => 'xnH:xni:xns',
        'ISO 8601 date' => 'xnY-xnm-xnd',
        'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
 );
 
 $magicWords = array(
-       'redirect'                => array( '0', '#تغییر_مسیر', '#تغییرمسیر', '#تغییرمسیر', '#REDIRECT' ),
+       'redirect'                => array( '0', '#تغییر_مسیر', '#تغییرمسیر', '#REDIRECT' ),
        'notoc'                   => array( '0', '__بی‌فهرست__', '__NOTOC__' ),
        'nogallery'               => array( '0', '__بی‌نگارخانه__', '__NOGALLERY__' ),
        'forcetoc'                => array( '0', '__بافهرست__', '__FORCETOC__' ),
@@ -2102,7 +2101,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'linkstoimage-more' => 'بیش از $1 صفحه به این پرونده پیوند {{PLURAL:$1|دارد|دارند}}.
 فهرست زیر تنها {{PLURAL:$1|اولین پیوند|اولین $1 پیوند}} به این صفحه را نشان می‌دهد.
 [[Special:WhatLinksHere/$2|فهرست کامل]] نیز موجود است.',
-'nolinkstoimage' => 'هیچ صفحه‌ای به این تصویر پیوند ندارد.',
+'nolinkstoimage' => 'این پرونده در هیچ صفحه‌ای به کار نرفته‌است.',
 'morelinkstoimage' => '[[Special:WhatLinksHere/$1|پیوندهای دیگر]] به این پرونده را ببینید.',
 'linkstoimage-redirect' => '$1 (تغییرمسیر پرونده) $2',
 'duplicatesoffile' => '{{PLURAL:$1|پروندهٔ|پرونده‌های}} زیر نسخهٔ تکراری این پرونده {{PLURAL:$1|است|هستند}} ([[Special:FileDuplicateSearch/$2|اطلاعات بیشتر]]):',
index f4a500c..17f26f0 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Finnish (Suomi)
+/** Finnish (suomi)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1298,7 +1298,7 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
 'powersearch-field' => 'Etsi',
 'powersearch-togglelabel' => 'Muuta valinta',
 'powersearch-toggleall' => 'Valitse kaikki',
-'powersearch-togglenone' => 'Poista kaikki',
+'powersearch-togglenone' => 'Valitse ei mitään',
 'search-external' => 'Ulkoinen haku',
 'searchdisabled' => 'Tekstihaku on poistettu toistaiseksi käytöstä suuren kuorman vuoksi. Voit käyttää alla olevaa Googlen hakukenttää sivujen etsimiseen, kunnes haku tulee taas käyttöön. <small>Huomaa, että ulkopuoliset kopiot {{GRAMMAR:genitive|{{SITENAME}}}} sisällöstä eivät välttämättä ole ajan tasalla.</small>',
 
index 3bd15c4..6aefb8e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** French (Français)
+/** French (français)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -500,7 +500,7 @@ $messages = array(
 'cancel' => 'Annuler',
 'moredotdotdot' => 'Plus...',
 'mypage' => 'Ma page',
-'mytalk' => 'Ma page de discussion',
+'mytalk' => 'Page de discussion',
 'anontalk' => 'Discussion avec cette adresse IP',
 'navigation' => 'Navigation',
 'and' => '&#32;et',
@@ -2205,6 +2205,7 @@ Veuillez noter que d’autres sites peuvent avoir un lien direct vers un fichier
 Vous pouvez personnaliser l’affichage en sélectionnant le type de journal, le nom d’utilisateur ou la page concernée (ces deux derniers étant sensibles à la casse).',
 'logempty' => 'Aucune opération correspondante dans les journaux.',
 'log-title-wildcard' => 'Chercher parmi les titres commençant par ce texte',
+'showhideselectedlogentries' => 'Afficher/masquer les entrées de journal sélectionnées',
 
 # Special:AllPages
 'allpages' => 'Toutes les pages',
@@ -3113,6 +3114,7 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
 'spambot_username' => 'Nettoyage de pourriels par MediaWiki',
 'spam_reverting' => 'Rétablissement de la dernière version ne contenant pas de lien vers $1',
 'spam_blanking' => 'Toutes les versions contenant des liens vers $1 sont blanchies',
+'spam_deleting' => 'Toutes les versions contenaient des liens vers $1, suppression',
 
 # Info page
 'pageinfo-title' => 'Informations pour « $1 »',
index f49df7d..b1cc827 100644 (file)
@@ -409,6 +409,8 @@ $2',
 Jü späre wörd döör [[User:$1|$1]] ma grün "$2" inruchted.',
 'filereadonlyerror' => 'Det datei „$1“ koon ei feranert wurd, auer uun det fertiaknis „$2“ bluas leesen wurd koon.
 Di grünj faan di administraator as: „$3“.',
+'invalidtitle-knownnamespace' => 'Ferkiard auerskraft uun di nöömrüm „$2“ an tekst „$3“',
+'invalidtitle-unknownnamespace' => 'Ferkiard auerskraft uun di ünbekäänd nöömrüm „$1“ an tekst „$2“',
 
 # Virus scanner
 'virus-badscanner' => "Hiinje konfigurasjoon: ünbekånde fiirusscanner: ''$1''",
@@ -702,7 +704,7 @@ Det sidj as oober noch ei seekert!",
 'session_fail_preview' => "'''Din werk küd ei ufseekert wurd, diar as wat skiaf gingen.'''
 Fersjük det man noch ans an trak do üüb ''Sid spiikre''.
 Wan't do imer noch ei loket, [[Special:UserLogout|melde di uf]] an weder uun.",
-'session_fail_preview_html' => "'''Din werk küd ei seekerd wurd. Diar as wat skiaf gingen.'''
+'session_fail_preview_html' => "'''Din werk küd ei seekert wurd. Diar as wat skiaf gingen.'''
 
 ''Uun {{SITENAME}} as HTML aktiwiaret, an diaram as JavaScript deaktiwiaret wurden.''
 
@@ -740,20 +742,20 @@ Wan dü heer wat iinskrafst, do beest dü diarmä iinferstenen an seekerst tu, d
 Wees sü gödj än sääkre di täkst lokool aw din kompjuuter än fersäk tu n lääsern tidpunkt, da änringe tu ouerdreegen.'''.
 
 Grün for jü späre: $1",
-'protectedpagewarning' => "'''PÅÅS AW: Jüheer sid wörd spärd. Bloot benjütere ma adminstrasjoonsruchte koone jü sid beårbe.'''
-For informasjoon füliet di aktuäle logbökönjdråch:",
-'semiprotectedpagewarning' => "'''PÅÅS AW: Jüheer sid wörd spärd. Bloot benjütere ma adminstrasjoonsruchte koone jü sid beårbe.'''
-For informasjoon füliet di aktuäle logbökönjdråch:",
-'cascadeprotectedwarning' => "'''Woorschauing:''' Jüheer sid wörd sü önj ferbading hülen, dåt jü bloot döör benjütere ma administraator-ruchte beårbed wårde koon. Jü as önj {{PLURAL:$1|jü füliend sid|da füliende side}} önjbünen, da döör jü kaskaadespäropsjoon önj ferbading hülen {{PLURAL:$1|wårt|wårde}}:",
-'titleprotectedwarning' => "'''PÅÅS AW: \"Dåt måågen foon side wörd spärd. Bloot benjütere ma [[Special:ListGroupRights|spetsjäle ruchte]] koone da side mååge.'''
-For informasjoon füliet jü leest logbök-önjdråch:",
+'protectedpagewarning' => "'''Paase üüb: Detdiar sidj as speret wurden. Bluas administratooren kön det bewerke.'''
+Uun't logbuk stäänt muar diartu:",
+'semiprotectedpagewarning' => "'''Paase üüb: Detdiar sidj as dialwiis tu't bewerkin speret wurden. Bluas gudkäänd brükern kön det bewerke.'''
+Uun't logbuk stäänt muar diartu:",
+'cascadeprotectedwarning' => "'''Paase üüb:''' Detdiar sidj koon bluas faan administratooren bewerket wurd. Hat as uun {{PLURAL:$1|detdiar ööder sidj|jodiar ööder sidjen}} iinbünjen, diar troch en kaskaaden-optsjuun seekert {{PLURAL:$1|as|san}}:",
+'titleprotectedwarning' => "'''Paase üüb: \"Detdiar sidj mä didiar nööm koon ei faan arken bewerket wurd. Bluas enkelt brükern mä [[Special:ListGroupRights|was brükerrochten]] kön detdiar sidj nei maage of bewerke.'''
+Uun't logbuk stäänt muar diartu:",
 'templatesused' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon jüdeer sid ferwånd:',
 'templatesusedpreview' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon diheere sideforlök ferwånd:',
 'templatesusedsection' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon dideer oufsnaas ferwånd:',
-'template-protected' => '(önj ferbading hülen iinj schriwen)',
-'template-semiprotected' => '(schriwschütsed for ünönjmäldede än naie brükere)',
+'template-protected' => '(seekert)',
+'template-semiprotected' => '(hualew-seekert)',
 'hiddencategories' => 'Jüdeer sid as lasmoot foon {{PLURAL:$1|1 ferstäägen kategorii|$1 ferstäägene kategoriie}}:',
-'nocreatetitle' => 'Dåt måågeb foon naie side as begränsed.',
+'nocreatetitle' => 'Det maagin faan nei sidjen as ei saner aanj mögelk.',
 'nocreatetext' => 'Aw {{SITENAME}} wörd dåt måågen foon naie side begränsed.
 Dü koost bestönjene side änre unti de [[Special:UserLogin|önjmälde unti mååg en account]].',
 'nocreate-loggedin' => 'Dü heest niinj beruchtiging, naie side tu måågen.',
@@ -764,8 +766,8 @@ Dü koost bestönjene side änre unti de [[Special:UserLogin|önjmälde unti må
 'permissionserrorstext-withaction' => 'Dü bast ai beruchtit, $2.
 {{PLURAL:$1|grün|grüne}}:',
 'recreate-moveddeleted-warn' => "'''Paase üüb: Dü wel en artiikel maage, diar iar al ans stregen wurden as.'''
-
-Auerlei di det gud, amdat dü niks ferkiard maagest. At logbuk faan diheer artiikel stäänt diar:",
+Auerlei di det gud, amdat dü niks ferkiard maagest.
+Uun't logbuk stäänt muar diartu:",
 'moveddeleted-notice' => 'Jüheer sid wörd sleeked. Deer füliet en üttooch üt dåt sleek- än ferschüwingslogbök for jüheer sid.',
 'log-fulllog' => 'Åle logbük-önjdrååge önjkiike',
 'edit-hook-aborted' => 'Jü beårbing wörd suner ferklååring döör en snaasstää oufbräägen.',
@@ -789,6 +791,10 @@ Deer {{PLURAL:$2|mötj ai mör ås 1 apteel|mönje ai mör ås $1 apteele}} wees
 'parser-template-loop-warning' => 'Forlåågesloif önjtdäkt: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Forloagerekursjoonsdiipgränse ouerschran ($1)',
 'language-converter-depth-warning' => 'Spräkekonwärsjoonsdiipdegränse ouerschren ($1)',
+'node-count-exceeded-category' => 'Jodiar sidjen haa tuföl ferbinjangen (nodes)',
+'node-count-exceeded-warning' => 'Detdiar sidj hää tuföl ferbinjangen (nodes)',
+'expansion-depth-exceeded-category' => 'Jodiar sidjen haa tuföl ütjwidjangen (expansion)',
+'expansion-depth-exceeded-warning' => 'Detdiar sidj hää tuföl ütjwidjangen (expansion)',
 'parser-unstrip-loop-warning' => 'Diar as en jinsidjag ferwisang',
 'parser-unstrip-recursion-limit' => 'Tuföl jinsidjag ferwisangen bi $1',
 
@@ -1094,7 +1100,7 @@ A nawigatsjuun links saat ales weder turag üüb di ual stant.',
 'recentchangescount' => 'Soföl feranerangen skel uunwiset wurd:',
 'prefs-help-recentchangescount' => 'Det san a leetst feranerangen, wersjuunen an logbuken.',
 'prefs-help-watchlist-token' => "Wan dü detdiar fial mä en hiamelken code ütjfalst, woort en RSS-feed iinracht. Arken mä didiar code koon do sä, wat dü uun't uug behual wel. Diaram skul hi ei so ianfach wees, nem dach didiar: $1",
-'savedprefs' => 'Di iinstelangen san seekerd wurden.',
+'savedprefs' => 'Din iinstelangen san seekert wurden.',
 'timezonelegend' => 'Tidjsoon:',
 'localtime' => 'lokaal tid',
 'timezoneuseserverdefault' => 'Wiki standard tidj brük ($1)',
@@ -1129,7 +1135,7 @@ Do san jo ual iinstelangen wech.',
 'username' => 'Brükernoome:',
 'uid' => 'Brüker ID:',
 'prefs-memberingroups' => 'Lasmoot faan {{PLURAL:$1|brükerskööl|brükersköölen}}:',
-'prefs-registration' => 'Uunmeldetidj',
+'prefs-registration' => 'Uunmelde-tidj',
 'yourrealname' => 'Rocht nööm:',
 'yourlanguage' => 'Spräke:',
 'yourvariant' => 'Spriak:',
@@ -1170,7 +1176,7 @@ Do san jo ual iinstelangen wech.',
 # User rights
 'userrights' => 'Brükerrochten bewerke',
 'userrights-lookup-user' => 'Brükersköölen bewerke',
-'userrights-user-editname' => 'Brükernoome:',
+'userrights-user-editname' => 'Brükernööm:',
 'editusergroup' => 'Brükersköölen bewerke',
 'editinguser' => "Brükerrochten faan '''[[User:$1|$1]]''' $2 feranere",
 'userrights-editusergroup' => 'Lasmootskap tu brükersköölen bewerke',
@@ -1214,6 +1220,30 @@ Do san jo ual iinstelangen wech.',
 'grouppage-suppress' => '{{ns:project}}:Oversighter',
 
 # Rights
+'right-read' => 'Sidjen lees',
+'right-edit' => 'Sidjen bewerke',
+'right-createpage' => 'Sidjen maage (saner diskusjuunssidjen)',
+'right-createtalk' => 'Diskusjuunssidjen maage',
+'right-createaccount' => 'Brükerkonto iinracht',
+'right-move' => 'Sidjen fersküüw',
+'right-move-subpages' => 'Sidjen mä onersidjen fersküüw',
+'right-move-rootuserpages' => 'Hood-brükersidj fersküüw',
+'right-movefile' => 'Dateien fersküüw',
+'right-suppressredirect' => "Bi't fersküüwen nian widjerfeerang iinracht",
+'right-upload' => 'Dateien huuchsjüür',
+'right-reupload' => 'Dateien auerskriiw',
+'right-reupload-own' => 'En datei auerskriiw, diar dü salew huuchsjüürd heest',
+'right-reupload-shared' => 'En datei auerskriiw, diar uun en gemiansoom archiif leit',
+'right-upload_by_url' => 'Dateien faan en URL-adress huuchsjüür',
+'right-purge' => 'Sidjen-cache leesag maage saner efterfraagin',
+'right-autoconfirmed' => 'Hualew-seekert sidjen bewerke',
+'right-bot' => 'Automatisiaret bewerke',
+'right-nominornewtalk' => 'Letj feranerangen üüb diskusjuunssidjen wurd ei üs „nei noorachten“ uunwiset.',
+'right-apihighlimits' => 'Huuger taalen für API-uunfraagen brük',
+'right-writeapi' => 'Write-API brük',
+'right-delete' => 'Sidjen strik',
+'right-bigdelete' => 'Sidjen mä föl wersjuunen strik',
+'right-deleterevision' => 'Enkelt wersjuunen faan en sidj strik of turaghaale',
 'right-sendemail' => 'E-mails tu oudere brükere schake',
 
 # User rights log
@@ -1451,8 +1481,8 @@ Wan dü jü sid wider foon din eefterkiikliste wächhååle mååst, klik aw jü
 'restriction-upload' => 'Huuchsjüür',
 
 # Restriction levels
-'restriction-level-sysop' => 'seekerd (bluas för administratooren)',
-'restriction-level-autoconfirmed' => 'hualew seekerd (bluas för gudkäänd brükern)',
+'restriction-level-sysop' => 'seekert (bluas för administratooren)',
+'restriction-level-autoconfirmed' => 'hualew-seekert (bluas för gudkäänd brükern)',
 'restriction-level-all' => 'aaltumaal',
 
 # Undelete
index 9e0394e..9225c36 100644 (file)
@@ -2103,6 +2103,7 @@ Por favor, teña en conta que outras páxinas web poden ligar cara a un ficheiro
 Pode precisar máis a vista seleccionando o tipo de rexistro, o nome do usuario ou o título da páxina afectada.',
 'logempty' => 'Non se atopou ningún elemento relacionado no rexistro.',
 'log-title-wildcard' => 'Procurar os títulos que comecen con este texto',
+'showhideselectedlogentries' => 'Mostrar/agochar as entradas do rexistro seleccionadas',
 
 # Special:AllPages
 'allpages' => 'Todas as páxinas',
@@ -2847,7 +2848,7 @@ Gárdeo no seu disco duro e cárgueo aquí.',
 'importunknownsource' => 'Fonte de importación descoñecida',
 'importcantopen' => 'Non se pode abrir o ficheiro importado',
 'importbadinterwiki' => 'Ligazón interwiki incorrecta',
-'importnotext' => 'Texto baleiro ou inexistente',
+'importnotext' => 'Baleiro ou sen texto',
 'importsuccess' => 'A importación rematou!',
 'importhistoryconflict' => 'Existe un conflito no historial de revisións (por ter importado esta páxina antes)',
 'importnosources' => 'Non se defininiu ningunha fonte de importación transwiki e os envíos directos dos historiais están desactivados.',
@@ -2857,8 +2858,8 @@ Gárdeo no seu disco duro e cárgueo aquí.',
 'importuploaderrortemp' => 'Fallou o envío do ficheiro de importación. Falta un cartafol temporal.',
 'import-parse-failure' => 'Fallo de análise da importación de XML',
 'import-noarticle' => 'Ningunha páxina para importar!',
-'import-nonewrevisions' => 'Todas as revisións son previamente importadas.',
-'xml-error-string' => '$1 na liña $2, col $3 (byte $4): $5',
+'import-nonewrevisions' => 'Todas as revisións foron importadas previamente.',
+'xml-error-string' => '$1 na liña $2, columna $3 (byte $4): $5',
 'import-upload' => 'Cargar datos XML',
 'import-token-mismatch' => 'Perdéronse os datos da sesión. Por favor, inténteo de novo.',
 'import-invalid-interwiki' => 'Non se pode importar desde o wiki escificado.',
@@ -3013,8 +3014,9 @@ Pode ver o código fonte.',
 Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está na lista negra.',
 'spamprotectionmatch' => 'O seguinte texto foi o que activou o noso filtro de spam: $1',
 'spambot_username' => 'Limpeza de spam de MediaWiki',
-'spam_reverting' => 'Revertida á última edición sen ligazóns a $1',
+'spam_reverting' => 'Revertida á última edición sen ligazóns a "$1"',
 'spam_blanking' => 'Limpáronse todas as revisións con ligazóns a "$1"',
+'spam_deleting' => 'Borráronse todas as revisións con ligazóns a "$1"',
 
 # Info page
 'pageinfo-title' => 'Información sobre "$1"',
index 7a564ab..5733ff5 100644 (file)
@@ -31,6 +31,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Ñemohenda_myangekõi',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline'       => 'Haiguy joajuha',
index 254869b..69f8b78 100644 (file)
@@ -518,6 +518,8 @@ Die Sperri isch dur [[User:$1|$1]] yygrichtet wore mit dr Begrindig ''„$2“''
 'filereadonlyerror' => 'D Datei „$1“ cha nit gänderet wäre, wel uf s Dateirepositorium „$2“ nume Läsezuegriff megli isch.
 
 Dr Administrator, wu dr Schrybzuegriff gsperrt het, het dää Grund aagee: „$3“.',
+'invalidtitle-knownnamespace' => 'Nit-gültige Titel mit Namensruum „$2“ un Text „$3“',
+'invalidtitle-unknownnamespace' => 'Ungültige Titel mit unbekannte Namensruumnummer $1 un Text „$2“',
 
 # Virus scanner
 'virus-badscanner' => "Fählerhafti Konfiguration: Virescanner, wu nid bekannt isch: ''$1''",
@@ -804,6 +806,7 @@ As Information chunnt do ne aktuälle Uuszug us em Benutzersperr-Logbuech:',
 'note' => "'''Obacht: '''",
 'previewnote' => "'''Das isch numen e Vorschau und nonig gspycheret!'''
 Die Syte isch nonig gspycheret wore!",
+'continue-editing' => 'Wyter bearbeite',
 'previewconflict' => 'Die Vorschau zeigt dr Inhalt vum obere Täxtfäld. Eso siht dr Artikel us, wän Du jetz uf Spychere drucksch.',
 'session_fail_preview' => "'''Dyyni Bearbeitig het nid chenne gspycheret wäre, wel Sitzigsdate verlore gange sin.
 Bitte versuech s nomol. Derzue drucksch unter däre Täxtvorschau nomol uf „Syte spychere“.
@@ -895,6 +898,12 @@ S {{PLURAL:$2|derf nid meh wie ein Ufruef|derfe nid meh wie $1 Ufruef}} gee.',
 'parser-template-loop-warning' => 'Vorlagelätsch entdeckt: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Vorlagerekursionstiefegränz iberschritte ($1)',
 'language-converter-depth-warning' => 'Gränz vu dr Sprochkonvertertiefi iberschritte ($1)',
+'node-count-exceeded-category' => 'Syte, wo d Chnotezaal überschritte hen',
+'node-count-exceeded-warning' => 'Die Syte het d Chnotepunktzaal überschritte.',
+'expansion-depth-exceeded-category' => 'Syte, wo d Expansionsdiefi überschritte hen',
+'expansion-depth-exceeded-warning' => 'Die Syte het d Expansionsdiefi überschritte.',
+'parser-unstrip-loop-warning' => 'Zirkelbezug festgstellt',
+'parser-unstrip-recursion-limit' => 'Rekursionsgränz bim Ufflöse überschritte ($1)',
 
 # "Undo" feature
 'undo-success' => 'Zum die Änderig ruckgängig z mache, kontrollier bitte d Bearbeitig in dr Verglichsaasicht un druck derno uf „Syte spichere“.',
@@ -1068,7 +1077,9 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
 'mergelogpagetext' => 'Des isch e Lischt vu dr letschte Zämefierige vu Versionsgschichte.',
 
 # Diffs
-'history-title' => 'Versionsgschicht vo „$1“',
+'history-title' => '$1: Versionsgschicht',
+'difference-title' => '$1: Unterschid zwüsche de Versione',
+'difference-title-multipage' => '$1 un $2: Unterschid zwüsche de Syte',
 'difference-multipage' => '(Unterschid zwische Syte)',
 'lineno' => 'Zyle $1:',
 'compareselectedversions' => 'Usgwählti Versione verglyche',
@@ -1163,6 +1174,7 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
 'prefs-beta' => 'Betafunktione',
 'prefs-datetime' => 'Datum un Zyt',
 'prefs-labs' => 'Alphafunktione',
+'prefs-user-pages' => 'Benutzersyte',
 'prefs-personal' => 'Benutzerdate',
 'prefs-rc' => 'Letschti Änderige',
 'prefs-watchlist' => 'Beobachtigslischte',
@@ -1615,14 +1627,15 @@ Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
 'backend-fail-writetemp' => 'Di temporär Datei het nit chenne gschribe wäre.',
 'backend-fail-closetemp' => 'Di temporär Datei het nit chenne zuegmacht wäre.',
 'backend-fail-read' => 'D Datei $1 het nit chenne gläse wäre.',
-'backend-fail-create' => 'D Datei $1 het nit chenne aagleit wäre.',
-'backend-fail-maxsize' => 'D Datei $1 het nit chenne aalgeit wäre, wel si greßer isch wie {{PLURAL:$2|ei Byte|$2 Byte}}.',
+'backend-fail-create' => 'D Datei $1 het nit chenne gspyycheret wäre.',
+'backend-fail-maxsize' => 'D Datei $1 het nit chenne gspycheret wäre, wel si greßer isch wie {{PLURAL:$2|ei Byte|$2 Byte}}.',
 'backend-fail-readonly' => 'S Spycher-Backend „$1“ isch zurzyt im Läsemodus. Dr Grund, wu aagee isch, isch: „$2“',
 'backend-fail-synced' => 'D Datei „$1“ isch im intärne Spycher-Backend in eme inkonsischtänte Zuestand.',
 'backend-fail-connect' => 'S het kei Verbindig chenne härgstellt wäre zum Spycher-Backend „$1“.',
 'backend-fail-internal' => 'Im Spycher-Backend „$1“ isch e nit bekannte Fähler ufträtte.',
 'backend-fail-contenttype' => 'Dr Inhaltstyp vu dr Datei, wu im Pfad „$1“ gspycheret soll wäre, het nit chenne bstimmt wäre.',
 'backend-fail-batchsize' => 'E Bygiverarbeitigsdatei, wu s {{PLURAL:$1|ei Operation|$1 Operatione}} din het, isch an s Spycher-Backend gschickt wore. D Gränz lyt aber bi {{PLURAL:$2|eire Operation|$2 Operatione}}.',
+'backend-fail-usable' => 'D Datei $1 het nit chönne gspyycheret werde, entweder wyl kei Verzeichniss vorhande isch oder wyl kei Berächtigung hesch.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'S het kei Verbindig chenne härgstellt würe zue dr Journaldatebank vum Spycher-Backend „$1“.',
index f89ccfa..f6d58d5 100644 (file)
@@ -1662,7 +1662,7 @@ $1',
 'upload-too-many-redirects' => 'URLમાં ઘણાં ઉપ નિર્દેશનો છે.',
 'upload-unknown-size' => 'અજ્ઞાત કદ',
 'upload-http-error' => ' HTTP ત્રુટિ : $1',
-'upload-copy-upload-invalid-domain' => 'આ વેબસાઇટ પર થી ફાયલ નહી ચડાવાય',
+'upload-copy-upload-invalid-domain' => 'આ વેબસાઇટ પરથી ફાઈલ નહીં ચડાવાય.',
 
 # File backend
 'backend-fail-stream' => 'ફાઈલ $1 ને લાવી ન શકાઈ.',
@@ -1680,7 +1680,7 @@ $1',
 'backend-fail-writetemp' => 'હંગામી ફાઇલમાં લખી ન શકાયું.',
 'backend-fail-closetemp' => 'હંગામી ફાઇલ બંધ ન કરી શકાઇ',
 'backend-fail-read' => 'ફાઈલ $1 ને વાંચી ન શકાઈ.',
-'backend-fail-create' => 'ફાàª\88લ $1 àª¨à«\87 àª¬àª¨àª¾àªµà«\80 àª¶àª\95ાàª\88.',
+'backend-fail-create' => 'ફાàª\88લ $1 àª²àª\96à«\80 àª¶àª\95ાàª\88 àª¨àª¹à«\80àª\82.',
 'backend-fail-readonly' => 'સંગ્રહ પાર્શ્વભૂમિ  "$1" એ હાલમાં માત્ર વાંચન સક્ષમ છે. તેનું કારણ આપવામાં આવ્યું હતું: "$2"',
 'backend-fail-synced' => 'ફાઈલ "$1"  અંતરિક સ્ટોરેજ બેકઍંડ માં એક અસંગત સ્થિતિમાં છે',
 'backend-fail-connect' => 'સંગ્રહ પૃષ્ઠભૂમિ "$1" સાથે સંપર્ક સ્થાપી ના શકાયો.',
@@ -1897,7 +1897,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 તેના કરતા તેને યોગ્ય તે વિષ્ય સાથે જોડાયેલા હોવા જોઇએ.<br />
 આ પાનાને સંદિગ્ધ  વાક્યો વાળા પાના ત્યારે કહી શકાય જ્યારે તે [[MediaWiki:Disambiguationspage]] નામના ઢાંચા સાથે જોડાયેલા હોય.",
 
-'doubleredirects' => 'બનણà«\81àª\82 àª¦àª¿àª¶àª¾àª¨àª¿àª°à«\8dદà«\87શિત',
+'doubleredirects' => 'બમણà«\81àª\82 àª¦àª¿àª¶àª¾àª¨àª¿àª°à«\8dદà«\87શન',
 'doubleredirectstext' => 'આ પાનું દિશા નિર્દેશિત પાના પર થયેલા દિશા નિર્દેશિત પાનાની યાદિ બતાવે છે.
 દરેક લિટીમાં પાના પ્રથમ અને દ્વીતીય દિશા નિર્દેશન ક્ડી બતાવે છે, તે સિવાય દ્વીતીય દિશા નિર્દેશનનું લક્ષ્ય પણ બતાવે છે કે મોટે ભાગે મૂળ પાનું હોઇ શકે છેૢ જેના પર પ્રથમ દિશા નિર્દેશન લક્ષિત છે. <del>Crossed out</del> લિટીઓ  નો ઉત્તર મેળવાયો છે.',
 'double-redirect-fixed-move' => '[[$1]] હટાવી દેવાયું છે.
@@ -2002,6 +2002,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 તમે લોગનો પ્રકાર,સભ્ય નામ અથવા અસરગ્રસ્ત પાના આદિ પસંદ કરી તમારી યાદિ ટૂંકાવી શકો.',
 'logempty' => 'લોગમાં આને મળતી કોઇ વસ્તુ નથી',
 'log-title-wildcard' => 'આ શબ્દો દ્વારા શરૂ થનાર શીર્ષકો શોધો',
+'showhideselectedlogentries' => 'પસંદગીની લોગ નોંધણીઓ બતાવો/છૂપાવો',
 
 # Special:AllPages
 'allpages' => 'બધા પાના',
@@ -2020,6 +2021,10 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'allpagesbadtitle' => 'આપનું ઈચ્છિત શીર્ષક અમાન્ય છે, ખાલી છે, અથવાતો અયોગ્ય રીતે આંતર-ભાષિય કે આંતર-વિકિ સાથે જોડાયેલું શીર્ષક છે.
 શક્ય છે કે તેમાં એક કે વધુ એવા અક્ષર કે ચિહ્નો છે કે જે પાનાનાં શીર્ષક માટે અવૈધ છે.',
 'allpages-bad-ns' => '{{SITENAME}} ને નામસ્થળ  "$1" નથી.',
+'allpages-hide-redirects' => 'અન્યત્ર વાળેલાં પાનાંઓ છૂપાવો',
+
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'આધૂનિક બતાવો.',
 
 # Special:Categories
 'categories' => 'શ્રેણીઓ',
@@ -2047,17 +2052,17 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'linksearch-error' => 'યજમાન નામની શરૂઆતમાં જ વાઈલ્ડકાર્ડ પ્રકટ થશે',
 
 # Special:ListUsers
-'listusersfrom' => 'àª\85હà«\80àª\82થà«\80 àª¸àª­à«\8dયà«\8b àª¬àª¤àª¾àªµà«\8b',
+'listusersfrom' => 'àª\86નાથà«\80 àª¶àª°à«\82 àª¥àª¤àª¾ àª¸àª­à«\8dયà«\8b àª¦àª°à«\8dશાવà«\8b:',
 'listusers-submit' => 'બતાવો',
 'listusers-noresult' => 'કોઇ સભ્ય ન મળ્યો',
 'listusers-blocked' => '(પ્રતિબંધિત)',
 
 # Special:ActiveUsers
-'activeusers' => 'સàª\95à«\8dરà«\80યા àª¸àª­à«\8dય àª\9bà«\81પાવà«\8b',
-'activeusers-intro' => 'àª\9bà«\87લà«\8dલા  $1 {{PLURAL:$1|દિવસ|દિવસà«\8b}}માàª\82 àª\9cà«\87 àª¸àª­à«\8dયà«\8bàª\8f àª\95à«\8bàª\87àª\95 àª¯à«\8bàª\97દાન àª\95રà«\8dયà«\81àª\82 àª¹à«\8bય àª¤à«\87મનà«\80 àª¯àª¾àª¦àª¿.',
+'activeusers' => 'સàª\95à«\8dરિય àª¸àª­à«\8dયà«\8bનà«\80 àª¯àª¾àª¦à«\80',
+'activeusers-intro' => 'àª\9bà«\87લà«\8dલા  $1 {{PLURAL:$1|દિવસ|દિવસà«\8b}}માàª\82 àª\9cà«\87 àª¸àª­à«\8dયà«\8bàª\8f àª\95àª\82àª\88àª\95 àª¯à«\8bàª\97દાન àª\95રà«\8dયà«\81àª\82 àª¹à«\8bય àª¤à«\87મનà«\80 àª¯àª¾àª¦à«\80.',
 'activeusers-count' => '$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}} છેલ્લા {{PLURAL:$3|દિવસ |$3 દિવસો }}માં',
 'activeusers-from' => 'આનાથી શરૂ થતા સભ્યો દર્શાવો:',
-'activeusers-hidebots' => 'બà«\8bàª\9fનà«\87 àª¸àª\82તાડો',
+'activeusers-hidebots' => 'બà«\8bàª\9fનà«\87 àª\9bà«\81પાવો',
 'activeusers-hidesysops' => 'પ્રબંધકો છુપાવો',
 'activeusers-noresult' => 'કોઇ સક્રીય સભ્ય ન મળ્યો',
 
@@ -2140,7 +2145,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'notvisiblerev' => 'અન્ય સભ્ય દ્વારા થયેલું સંપાદન ભૂંસી નખાયું છે.',
 'watchnochange' => 'તમારા દ્વારા નિરીક્ષિત પાના આપેલ સમય ગાળામાં ફેરફારીત થયા',
 'watchlist-details' => 'ચર્ચાનાં પાનાં ન ગણતા {{PLURAL:$1|$1 પાનું|$1 પાનાં}} ધ્યાનસૂચીમાં છે.',
-'wlheader-enotif' => '*ઈ-મેલા સૂચના પદ્ધતિ સક્રીય કરાઈ',
+'wlheader-enotif' => '*ઈ-મેલ સૂચના પદ્ધતિ સક્રીય કરાઈ.',
 'wlheader-showupdated' => "*તમારી મુલાકાત લીધા પછી બદલાયેલા પાના  '''ઘાટા''' અક્ષરો વડે દર્શાવ્યાં છે",
 'watchmethod-recent' => 'હાલમાં ફેરફાર થયેલ પાનાની ચકાસણી જારી',
 'watchmethod-list' => 'હાલમાં થયેલ ફેરફાર માટે નીરીક્ષીત પાના તપાસાય છે',
index b037778..722984f 100644 (file)
@@ -234,7 +234,7 @@ $specialPageAliases = array(
        'BrokenRedirects'           => array( 'הפניות_לא_תקינות', 'הפניות_שבורות' ),
        'Categories'                => array( 'קטגוריות', 'רשימת_קטגוריות' ),
        'ChangeEmail'               => array( 'שינוי_דואר_אלקטרוני', 'שינוי_דואל' ),
-       'ChangePassword'            => array( 'שינוי_סיסמה', 'איפוס_סיסמה' ),
+       'ChangePassword'            => array( 'שינוי_סיסמה' ),
        'ComparePages'              => array( 'השוואת_דפים' ),
        'Confirmemail'              => array( 'אימות_כתובת_דואר' ),
        'Contributions'             => array( 'תרומות', 'תרומות_המשתמש' ),
@@ -777,7 +777,7 @@ $2',
 'notloggedin' => 'לא בחשבון',
 'nologin' => 'אין לכם חשבון? $1.',
 'nologinlink' => 'הרשמה',
-'createaccount' => '×\99צ×\99רת ×\9eשת×\9eש חדש',
+'createaccount' => '×\99צ×\99רת ×\97ש×\91×\95×\9f חדש',
 'gotaccount' => 'כבר נרשמתם? $1.',
 'gotaccountlink' => 'כניסה לחשבון',
 'userlogin-resetlink' => 'שכחת את פרטי הכניסה?',
@@ -2221,6 +2221,7 @@ $1',
 ניתן לצמצם את התצוגה על ידי בחירת סוג היומן, שם המשתמש (תלוי רישיות) או הדף המושפע (גם כן תלוי רישיות).',
 'logempty' => 'אין פריטים תואמים ביומן.',
 'log-title-wildcard' => 'חיפוש כותרות המתחילות באותיות אלה',
+'showhideselectedlogentries' => 'הצגת/הסתרת פעולות היומן שנבחרו',
 
 # Special:AllPages
 'allpages' => 'כל הדפים',
@@ -3130,6 +3131,7 @@ $1',
 'spambot_username' => 'מנקה הספאם של מדיה ויקי',
 'spam_reverting' => 'שחזור לגרסה אחרונה שלא כוללת קישורים ל־$1',
 'spam_blanking' => 'כל הגרסאות כוללות קישורים ל־$1, מרוקן את הדף',
+'spam_deleting' => 'כל הגרסאות כוללות קישורים ל־$1, מוחק את הדף',
 
 # Info page
 'pageinfo-title' => 'מידע על "$1"',
index 44def86..a0ec89e 100644 (file)
@@ -1961,6 +1961,7 @@ Prošu wobkedźbuj, zo druhe websydła móža na dataju z direktnym URL wotkazow
 'alllogstext' => 'Kombinowane zwobraznjenje wšěch k dispozicij stejacych protokolow w {{GRAMMAR:lokatiw|{{SITENAME}}}}. Móžeš napohlad wobmjezować, wuběrajo typ protokola, wužiwarske mjeno (dźiwajo na wulkopisanje) abo potrjechu stronu (tež dźiwajo na wulkopisanje).',
 'logempty' => 'Žane wotpowědowace zapiski w protokolu.',
 'log-title-wildcard' => 'Titul započina so z …',
+'showhideselectedlogentries' => 'Wubrane protokolowe zapiski pokazać/schować',
 
 # Special:AllPages
 'allpages' => 'Wšě nastawki',
@@ -2810,7 +2811,8 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
 'spamprotectionmatch' => 'Sćěhowacy tekst je naš spamowy filter wotpokazał: $1',
 'spambot_username' => 'MediaWiki čisćenje wot spama',
 'spam_reverting' => 'wróćo na poslednju wersiju, kotraž wotkazy na $1 njewobsahuje',
-'spam_blanking' => 'Wšě wersije wobsahowachu wotkazy na $1, wučisćene.',
+'spam_blanking' => 'Wšě wersije z wotkazami do $1 so porjedźeja',
+'spam_deleting' => 'Wšě wersije z wotkazami do $1 so zhašeja',
 
 # Info page
 'pageinfo-title' => 'Informacije za stronu "$1"',
index db53e4d..c507c68 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Hungarian (Magyar)
+/** Hungarian (magyar)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1472,7 +1472,7 @@ A műveletet nem lehet visszavonni.',
 # Groups
 'group' => 'Csoport:',
 'group-user' => 'szerkesztők',
-'group-autoconfirmed' => 'automatikusan megerősített felhasználók',
+'group-autoconfirmed' => 'automatikusan megerősített szerkesztők',
 'group-bot' => 'botok',
 'group-sysop' => 'adminisztrátorok',
 'group-bureaucrat' => 'bürokraták',
@@ -1487,7 +1487,7 @@ A műveletet nem lehet visszavonni.',
 'group-suppress-member' => '{{GENDER:$1|adatvédelmi biztos}}',
 
 'grouppage-user' => '{{ns:project}}:Felhasználók',
-'grouppage-autoconfirmed' => '{{ns:project}}:Automatikusan megerősített felhasználók',
+'grouppage-autoconfirmed' => '{{ns:project}}:Munkatársak#Automatikusan megerősített szerkesztők',
 'grouppage-bot' => '{{ns:project}}:Botok',
 'grouppage-sysop' => '{{ns:project}}:Adminisztrátorok',
 'grouppage-bureaucrat' => '{{ns:project}}:Bürokraták',
index 60f8376..e1a7633 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Interlingua (Interlingua)
+/** Interlingua (interlingua)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2038,6 +2038,7 @@ executar iste function.',
 Pro restringer le presentation, selige un typo de registro, le nomine de usator (sensibile al majusculas e minusculas), o le pagina in question (etiam sensibile al majusculas e minusculas).',
 'logempty' => 'Le registro contine nihil pro iste pagina.',
 'log-title-wildcard' => 'Cercar titulos que comencia con iste texto',
+'showhideselectedlogentries' => 'Monstrar/celar le entratas de registro seligite',
 
 # Special:AllPages
 'allpages' => 'Tote le paginas',
@@ -2964,7 +2965,8 @@ Le causa es probabilemente un ligamine verso un sito externe que es presente in
 'spamprotectionmatch' => 'Le sequente texto es lo que activava nostre filtro antispam: $1',
 'spambot_username' => 'Nettamento de spam in MediaWiki',
 'spam_reverting' => 'Revertite al ultime version que non contine ligamines a $1',
-'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina ha essite vacuate.',
+'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina es vacuate.',
+'spam_deleting' => 'Tote le versiones contineva ligamines a $1. Le pagina es delite.',
 
 # Info page
 'pageinfo-title' => 'Informationes pro "$1"',
index 2ae5fe0..7394dda 100644 (file)
@@ -2147,13 +2147,14 @@ Harap perhatikan bahwa situs web lain mungkin memiliki pranala ke suatu berkas d
 
 # Special:Log
 'specialloguserlabel' => 'Pengguna:',
-'speciallogtitlelabel' => 'Taget (judul atau pengguna):',
+'speciallogtitlelabel' => 'Target (judul atau pengguna):',
 'log' => 'Log',
 'all-logs-page' => 'Semua log publik',
 'alllogstext' => 'Gabungan tampilan semua log yang tersedia di {{SITENAME}}.
-Anda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna (sensitif kapital), atau judul halaman (juga sensitif kapital).',
+Anda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna (sensitif kapitalisasi), atau judul halaman (juga sensitif kapitalisasi).',
 'logempty' => 'Tidak ditemukan entri log yang sesuai.',
 'log-title-wildcard' => 'Cari judul yang diawali dengan teks tersebut',
+'showhideselectedlogentries' => 'Tampilkan/sembunyikan entri log terpilih',
 
 # Special:AllPages
 'allpages' => 'Semua halaman',
@@ -3033,6 +3034,7 @@ Ini mungkin disebabkan oleh pranala ke situs luar yang termasuk dalam daftar hit
 'spambot_username' => 'Pembersihan span MediaWiki',
 'spam_reverting' => 'Mengembalikan ke versi terakhir yang tak memiliki pranala ke $1',
 'spam_blanking' => 'Semua revisi yang memiliki pranala ke $1, pengosongan',
+'spam_deleting' => 'Semua revisi yang memiliki pranala ke $1, penghapusan',
 
 # Info page
 'pageinfo-title' => 'Informasi untuk "$1"',
index 288eac9..a376cae 100644 (file)
@@ -425,6 +425,8 @@ Ti naited a rason ket ''$2''.",
 'filereadonlyerror' => 'Di nabaliwan ti papales "$1" gapu ket ti repositorio ti papeles "$2" ket basaen laeng a moda.
 
 Ti administrador a nagserra ket nagited iti daytoy a panagilawlawag "\'\'$3\'\'".',
+'invalidtitle-knownnamespace' => 'Imbalido a titulo nga adda ti nagan ti lugar "$2" ken testo "$3"',
+'invalidtitle-unknownnamespace' => 'Imbalido a titulo nga adda di-amammo a nagan ti lugar a numero $1 ken testo "$2"',
 
 # Virus scanner
 'virus-badscanner' => 'Madi di panaka-aramidna: Di am-ammo a birus a panagskan: "$1"',
@@ -830,6 +832,12 @@ Dagitoy a panagpalawag  ket naikkaten.",
 'parser-template-loop-warning' => 'Adda nasarakan a silo ti plantilia: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Ti kinauneg ti pinagdullit ti plantilia ket nagpatingga ti napalabes ($1)',
 'language-converter-depth-warning' => 'Ti kauneg ti panagaramid ti pagsasao ket napalabes ti agpatingga a ($1)',
+'node-count-exceeded-category' => 'Dagiti panid a simmurok ti bilang ti node',
+'node-count-exceeded-warning' => 'Ti panid ket nasurokanna ti bilang ti node',
+'expansion-depth-exceeded-category' => 'Dagiti panid a nasurokan ti kauneg ti panagpadakkel',
+'expansion-depth-exceeded-warning' => 'Ti panid ket nasurokanna ti kauneg ti panagpadakkel',
+'parser-unstrip-loop-warning' => 'Adda  nakita a di-naukisan a silo',
+'parser-unstrip-recursion-limit' => 'Ti di-naukisan a panagsumro manen a patingga ket nasurokan ($1)',
 
 # "Undo" feature
 'undo-success' => 'Ti panag-urnos ket san a maisubli.
@@ -1008,7 +1016,9 @@ Usaren ti radio a buton a tukol ti pinagtipon iti laeng pinagbaliw a naaramid id
 'mergelogpagetext' => 'Adda dita baba ti listaan dagiti kinaudian a pinagtipon ti maysa a panid ti pakasaritaan iti maysa a sabali.',
 
 # Diffs
-'history-title' => 'Pakasaritaan ti pannakabalbaliw ti "$1"',
+'history-title' => 'Panagbalbaliw a pakasaritaan iti "$1"',
+'difference-title' => 'Paggiddiatan a nagbaetan dagiti panagbalbaliw iti "$1"',
+'difference-title-multipage' => 'Paggiddiatan a nagbaetan dagiti panid  "$1" ken "$2"',
 'difference-multipage' => '(Paggiddiatan dagiti panid)',
 'lineno' => 'Linia $1:',
 'compareselectedversions' => 'Paggidiaten dagiti pinili a binaliwan',
@@ -1106,6 +1116,7 @@ Laglagipem laeng a dagiti listaan da a nagyan ti {{SITENAME}} saan a barbaro.',
 'prefs-beta' => 'Dagiti beta a langa',
 'prefs-datetime' => 'Petsa ken oras',
 'prefs-labs' => 'Dagiti subokan a langa',
+'prefs-user-pages' => 'Dagiti panid ti agar-aramat',
 'prefs-personal' => 'Bariweswes ti agar-aramat',
 'prefs-rc' => 'Kaudian a balbaliw',
 'prefs-watchlist' => 'Listaan ti bambantayan',
@@ -1574,13 +1585,14 @@ No ti parikut ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administr
 'backend-fail-writetemp' => 'Saan a masuratan ti temporario a papeles.',
 'backend-fail-closetemp' => 'Saan a marikpan ti temporario a papeles.',
 'backend-fail-read' => 'Saan a mabasa ti papeles $1.',
-'backend-fail-create' => 'Saan a maaramid ti papeles $1.',
-'backend-fail-maxsize' => 'Saan a naaramid ti papeles $1 gapu ket dakdakkel ngem {{PLURAL:$2|maysa a byte|$2 a dagiti bytes}}.',
+'backend-fail-create' => 'Saan a masuratan ti papeles $1.',
+'backend-fail-maxsize' => 'Saan a masuratan ti papeles $1 gapu ta dakdakkel ngem {{PLURAL:$2|maysa a byte|$2 a dagiti bytes}}.',
 'backend-fail-readonly' => 'Ti pagidulinan a kalikudan ti "$1" ket agdama a mabasa laeng. Ti rason a naited idi ket: "$2"',
 'backend-fail-synced' => 'Ti papeles "$1" ket bangking ti kasasaad na  iti kinauneg a pagidulinan ti kalikudan',
 'backend-fail-connect' => 'Saan a makaikapet idiay pagidulinan a kalikudan  "$1".',
 'backend-fail-internal' => 'Adda di amammo a biddut ti napasamak idiay pagidulinan a kalikudan "$1".',
 'backend-fail-contenttype' => 'Saan a maammoan ti kita ti linaon ti papeles nga idulin idiay "$1".',
+'backend-fail-usable' => 'Saan a masuratan ti papeles $1 gapu ta awan ti makaanay a pammalubos wenno awan dagiti direktorio/pangikabilan.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Saan a malukatan ti "$1"; saan a nakandaduan.',
@@ -1899,6 +1911,7 @@ Pangngaasi a laglagipen a dagiti sabali a pagsaadan ti apot ket makapanilpo ti p
 Mapabassit mo ti pinagpakita no piliam ti kita ti listaan, ti nagan ti gar-aramat (sensitibo ti kadakkel ti letra), wenno ti naapektaran a panid (ket sensitibo met ti kadakkel ti letra).',
 'logempty' => 'Awan ti agpada a bagay dita listaan.',
 'log-title-wildcard' => 'Agsapul kadagiti titulo nga agrugi iti daytoy a testo',
+'showhideselectedlogentries' => 'Ipakita/ilemmeng dagiti napili a naikabil ti listaan',
 
 # Special:AllPages
 'allpages' => 'Amin a panid',
@@ -1920,6 +1933,7 @@ Mapabassit mo ti pinagpakita no piliam ti kita ti listaan, ti nagan ti gar-arama
 
 # SpecialCachedPage
 'cachedspecial-viewing-cached-ttl' => 'Kitkitaenm ti naidulin a bersion iti daytoy a panid, nga addan ti kadaanan a $1.',
+'cachedspecial-viewing-cached-ts' => 'Kitkitaem ti maysa a naidulin a bersion iti daytoy a panid, a baka daytoy ket saan a kompleto nga agpayso.',
 'cachedspecial-refresh-now' => 'Kitaen ti kinaudian.',
 
 # Special:Categories
index 5add4fb..165fd07 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Icelandic (Ã\8dslenska)
+/** Icelandic (íslenska)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2375,7 +2375,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Nafnrými:',
 'invert' => 'allt nema valið',
-'tooltip-invert' => 'Hakaðu við þennan kassa til að fela breytingar á síðum innan við ákveðið nafnrými',
+'tooltip-invert' => 'Hakaðu við þennan kassa til að fela breytingar á síðum innan ákveðins nafnrýmis',
 'namespace_association' => 'Tengd nafnrými',
 'tooltip-namespace_association' => 'Hakaðu við þennan kassa til að hafa með spjallsíður eða tengd nafnrými.',
 'blanknamespace' => '(Aðalnafnrýmið)',
@@ -3653,7 +3653,7 @@ Ef ekki, þá getur þú notað einfalt eyðublað hér fyrir neðan. Athugasemd
 'api-error-filename-tooshort' => 'Skráarnafnið er of stutt',
 'api-error-filetype-banned' => 'Þessi gerð skráar er bönnuð.',
 'api-error-filetype-missing' => 'Skráin hefur enga skráarendingu.',
-'api-error-hookaborted' => 'Hætt var við breytinguna sem þú reyndir að gera af viðbótar haka.',
+'api-error-hookaborted' => 'Hætt var við breytinguna sem þú reyndir að gera með viðbót.',
 'api-error-http' => 'Innri villa: Get ekki tengst vefþjón.',
 'api-error-illegal-filename' => 'Þetta skráarnafn er ekki leyft.',
 'api-error-internal-error' => 'Innri villa: Mistókst að vinna úr upphali þínu.',
index 900b666..b6a7c2c 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Italian (Italiano)
+/** Italian (italiano)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -126,7 +126,7 @@ $specialPageAliases = array(
        'DeletedContributions'      => array( 'ContributiCancellati' ),
        'Disambiguations'           => array( 'Disambigua' ),
        'DoubleRedirects'           => array( 'RedirectDoppi' ),
-       'EditWatchlist'             => array( 'ModifcaListaSeguiti' ),
+       'EditWatchlist'             => array( 'ModificaListaSeguiti' ),
        'Emailuser'                 => array( 'InviaEMail' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'PagineConMenoRevisioni' ),
@@ -2069,6 +2069,7 @@ Potrebbero essere presenti immagini che sono usate da altri siti con un collegam
 È possibile restringere i criteri di ricerca selezionando il tipo di registro, l'utente che ha eseguito l'azione, e/o la pagina interessata (entrambi i campi sono sensibili al maiuscolo/minuscolo).",
 'logempty' => 'Il registro non contiene elementi corrispondenti alla ricerca.',
 'log-title-wildcard' => 'Ricerca dei titoli che iniziano con',
+'showhideselectedlogentries' => 'Mostra/nascondi le voci di registro selezionate',
 
 # Special:AllPages
 'allpages' => 'Tutte le pagine',
@@ -2386,7 +2387,7 @@ Le impostazioni correnti per la pagina sono '''$1''':",
 'undeletepagetitle' => "'''Quanto segue è composto da revisioni cancellate di [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Visualizza le pagine cancellate',
 'undeletepagetext' => "{{PLURAL:$1|La pagina indicata di seguito è stata cancellata, ma è ancora in archivio e pertanto può essere recuperata|Le pagine indicate di seguito sono state cancellate, ma sono ancora in archivio e pertanto possono essere recuperate}}. L'archivio può essere svuotato periodicamente.",
-'undelete-fieldset-title' => 'Recupera revisioni',
+'undelete-fieldset-title' => 'Ripristina versioni',
 'undeleteextrahelp' => "Per recuperare l'intera cronologia della pagina, lasciare tutte le caselle deselezionate e fare clic su '''''{{int:undeletebtn}}'''''.
 Per effettuare un ripristino selettivo, selezionare le caselle corrispondenti alle revisioni da ripristinare e fare clic su '''''{{int:undeletebtn}}'''''.",
 'undeleterevisions' => '{{PLURAL:$1|Una revisione|$1 revisioni}} in archivio',
@@ -2950,6 +2951,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'spambot_username' => 'MediaWiki - sistema di rimozione spam',
 'spam_reverting' => "Ripristinata l'ultima versione priva di collegamenti a $1",
 'spam_blanking' => 'Pagina svuotata, tutte le versioni contenevano collegamenti a $1',
+'spam_deleting' => 'Pagina cancellata, tutte le versioni contenevano collegamenti a $1',
 
 # Info page
 'pageinfo-title' => 'Informazioni per "$1"',
@@ -3655,7 +3657,7 @@ Si noti che è anche possibile [[Special:EditWatchlist|modificare la lista con l
 
 MediaWiki è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di NEGOZIABILITÀ o di APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si veda la GNU General Public License per maggiori dettagli.
 
-Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia della GNU General Public License]; in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [//www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
+Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia della GNU General Public License]; in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [http://www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
 'version-software' => 'Software installato',
 'version-software-product' => 'Prodotto',
 'version-software-version' => 'Versione',
index 6b02458..9da7ef5 100644 (file)
@@ -376,7 +376,7 @@ $messages = array(
 'tog-editsection' => '[編集]リンクから節を編集できるようにする',
 'tog-editsectiononrightclick' => '節見出しの右クリックで節を編集できるようにする(JavaScriptが必要)',
 'tog-showtoc' => '目次を表示(ページに見出しが4つ以上ある場合)',
-'tog-rememberpassword' => 'このブラウザにログイン情報を記憶(最大 $1 {{PLURAL:$1|日間}})',
+'tog-rememberpassword' => 'ã\81\93ã\81®ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81«ã\83­ã\82°ã\82¤ã\83³æ\83\85å ±ã\82\92è¨\98æ\86¶ï¼\88æ\9c\80大 $1 {{PLURAL:$1|æ\97¥é\96\93}}ï¼\89',
 'tog-watchcreations' => '自分が作成したページをウォッチリストに追加',
 'tog-watchdefault' => '自分が編集したページをウォッチリストに追加',
 'tog-watchmoves' => '自分が移動したページをウォッチリストに追加',
@@ -384,7 +384,7 @@ $messages = array(
 'tog-minordefault' => '細部の編集に既定でチェックを入れる',
 'tog-previewontop' => 'プレビューを編集ボックスの前に配置',
 'tog-previewonfirst' => '編集開始時にもプレビューを表示',
-'tog-nocache' => 'ブラウザによるページのキャッシュを無効にする',
+'tog-nocache' => 'ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81«ã\82\88ã\82\8bã\83\9aã\83¼ã\82¸ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ç\84¡å\8a¹ã\81«ã\81\99ã\82\8b',
 'tog-enotifwatchlistpages' => 'ウォッチリストにあるページが更新されたらメールを受け取る',
 'tog-enotifusertalkpages' => '自分のトークページが更新されたらメールを受け取る',
 'tog-enotifminoredits' => '細部の編集でもメールを受け取る',
@@ -412,11 +412,11 @@ $messages = array(
 
 'underline-always' => '常に付ける',
 'underline-never' => '常に付けない',
-'underline-default' => 'ブラウザの設定を使用',
+'underline-default' => 'ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®è¨­å®\9aã\82\92使ç\94¨',
 
 # Font style option in Special:Preferences
 'editfont-style' => '編集エリアのフォントスタイル:',
-'editfont-default' => 'ブラウザの設定を使用',
+'editfont-default' => 'ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®è¨­å®\9aã\82\92使ç\94¨',
 'editfont-monospace' => '等幅フォント',
 'editfont-sansserif' => 'Sans Serif フォント',
 'editfont-serif' => 'Serif フォント',
@@ -478,10 +478,10 @@ $messages = array(
 'category_header' => 'カテゴリ「$1」にあるページ',
 'subcategories' => '下位カテゴリ',
 'category-media-header' => 'カテゴリ「$1」にあるメディア',
-'category-empty' => "''ã\81\93ã\81®ã\82«ã\83\86ã\82´ã\83ªã\81«ã\81¯ç\8f¾å\9c¨ã\80\81ã\83\9aã\83¼ã\82¸ã\81¨ã\83¡ã\83\87ã\82£ã\82¢ã\81\8cã\81²ã\81¨ã\81¤もありません。''",
+'category-empty' => "''ã\81\93ã\81®ã\82«ã\83\86ã\82´ã\83ªã\81«ã\81¯ç\8f¾å\9c¨ã\80\81ã\83\9aã\83¼ã\82¸ã\82\84ã\83¡ã\83\87ã\82£ã\82¢ã\81\8cä½\95もありません。''",
 'hidden-categories' => '{{PLURAL:$1|隠しカテゴリ}}',
 'hidden-category-category' => '隠しカテゴリ',
-'category-subcat-count' => '{{PLURAL:$2|このカテゴリには以下の下位カテゴリのみが含まれています。|このカテゴリには $2 下位カテゴリが含まれており、そのうち以下の{{PLURAL:$1|下位カテゴリ|&#32;$1 下位カテゴリ}}を表示しています。}}',
+'category-subcat-count' => '{{PLURAL:$2|このカテゴリには以下の下位カテゴリのみが含まれています。|このカテゴリには $2 下位カテゴリが含まれており、そのうち以下の {{PLURAL:$1|$1 下位カテゴリ}}を表示しています。}}',
 'category-subcat-count-limited' => 'このカテゴリには以下の{{PLURAL:$1|下位カテゴリ|&#32;$1 下位カテゴリ}}が含まれています。',
 'category-article-count' => '{{PLURAL:$2|このカテゴリには以下のページのみが含まれています。|このカテゴリには $2 ページが含まれており、そのうち以下の {{PLURAL:$1|$1 ページ}}を表示しています。}}',
 'category-article-count-limited' => '現在のカテゴリには以下の{{PLURAL:$1|ページ|&#32;$1 ページ}}が含まれています。',
@@ -553,7 +553,7 @@ $messages = array(
 'delete' => '削除',
 'deletethispage' => 'このページを削除',
 'undelete_short' => '{{PLURAL:$1|$1 版}}を復帰',
-'viewdeleted_short' => '削除された$1件の編集を閲覧',
+'viewdeleted_short' => '{{PLURAL:$1|削除された $1 件の編集}}を閲覧',
 'protect' => '保護',
 'protect_change' => '設定変更',
 'protectthispage' => 'このページを保護',
@@ -586,7 +586,7 @@ $messages = array(
 'jumpto' => '移動:',
 'jumptonavigation' => '案内',
 'jumptosearch' => '検索',
-'view-pool-error' => '申し訳ありません、現在サーバーに過大な負荷がかかっています。
+'view-pool-error' => 'ç\94³ã\81\97訳ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\81\8cã\80\81ç\8f¾å\9c¨ã\82µã\83¼ã\83\90ã\83¼ã\81«é\81\8e大ã\81ªè² è\8d·ã\81\8cã\81\8bã\81\8bã\81£ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82
 このページを閲覧しようとする利用者が多すぎます。
 しばらく時間を置いてから、もう一度このページにアクセスしてみてください。
 
@@ -642,10 +642,10 @@ $1',
 'collapsible-expand' => '展開する',
 'thisisdeleted' => '$1を閲覧または復帰しますか?',
 'viewdeleted' => '$1を閲覧しますか?',
-'restorelink' => '削除された$1編集',
+'restorelink' => '{{PLURAL:$1|削除された $1 編集}}',
 'feedlinks' => 'フィード:',
-'feed-invalid' => 'フィード形式の指定が間違っています。',
-'feed-unavailable' => 'ã\83\95ã\82£ã\83¼ã\83\89ã\81®é\85\8dä¿¡ã\81«å¯¾å¿\9cã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
+'feed-invalid' => 'フィード形式の指定が正しくありません。',
+'feed-unavailable' => 'ã\83\95ã\82£ã\83¼ã\83\89ã\81®é\85\8dä¿¡ã\81¯å\88©ç\94¨ã\81§ã\81\8dã\81¾ã\81\9bã\82\93',
 'site-rss-feed' => '$1のRSSフィード',
 'site-atom-feed' => '$1のAtomフィード',
 'page-rss-feed' => '「$1」のRSSフィード',
@@ -679,17 +679,17 @@ URL を間違って入力したか、正しくないリンクをたどった可
 # General errors
 'error' => 'エラー',
 'databaseerror' => 'データベース エラー',
-'dberrortext' => 'データベースクエリの構文エラーが発生しました。
+'dberrortext' => 'ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82¯ã\82¨ã\83ªã\83¼ã\81®æ§\8bæ\96\87ã\82¨ã\83©ã\83¼ã\81\8cç\99ºç\94\9fã\81\97ã\81¾ã\81\97ã\81\9fã\80\82
 ソフトウェアにバグがある可能性があります。
\9c\80å¾\8cã\81«å®\9fè¡\8cã\82\92試ã\81¿ã\81\9fã\82¯ã\82¨ã\83ªã\81¯æ¬¡ã\81®é\80\9aã\82\8aã\81§ã\81\99
-関数「<tt>$2</tt>」内
-<blockquote><tt>$1</tt></blockquote>
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cè¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ã\80\8c<tt>$3ï¼\9a$4</tt>ã\80\8d',
-'dberrortextcl' => 'データベース クエリの構文エラーが発生しました。
\9c\80å¾\8cã\81«å®\9fè¡\8cã\82\92試ã\81¿ã\81\9fã\82¯ã\82¨ã\83ªã\81¯ä»¥ä¸\8bã\81®é\80\9aã\82\8aã\81§ã\81\99
-関数「$2」内から
-"$1"
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cè¿\94ã\81\97ã\81\9fã\82¨ã\83©ã\83¼ã\80\8c$3ï¼\9a$4ã\80\8d',
\9c\80å¾\8cã\81«å®\9fè¡\8cã\82\92試ã\81¿ã\81\9fã\82¯ã\82¨ã\83ªã\83¼
+<blockquote><tt>$1</tt></blockquote>
+(関数「<tt>$2</tt>」内)
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\82¨ã\83©ã\83¼ã\80\8c<tt>$3ï¼\9a$4</tt>ã\80\8dã\82\92è¿\94ã\81\97ã\81¾ã\81\97ã\81\9fã\80\82',
+'dberrortextcl' => 'データベースクエリーの構文エラーが発生しました。
\9c\80å¾\8cã\81«å®\9fè¡\8cã\82\92試ã\81¿ã\81\9fã\82¯ã\82¨ã\83ªã\83¼
+「$1」
+(関数「$2」内)。
\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81¯ã\82¨ã\83©ã\83¼ã\80\8c$3ï¼\9a$4ã\80\8dã\82\92è¿\94ã\81\97ã\81¾ã\81\97ã\81\9f',
 'laggedslavemode' => "'''警告:'''ページに最新の編集が反映されていない可能性があります。",
 'readonly' => 'データベースがロックされています',
 'enterlockreason' => 'ロックの理由とロック解除の予定を入力してください',
@@ -698,7 +698,7 @@ URL を間違って入力したか、正しくないリンクをたどった可
 データベースをロックした管理者による説明は以下の通りです:$1',
 'missing-article' => '求められたページ「$1」$2 の本文がデータベース内で見つかりませんでした。
 
-通常、削除されたページの版への古い差分表示や固定リンクをたどった時に、このようなことが起こります。
+通常、削除されたページの版への古い差分表示や固定リンクをたどった際に、このようなことが起きます。
 
 それ以外の操作でこのメッセージが表示された場合、ソフトウェアのバグである可能性があります。
 [[Special:ListUsers/sysop|管理者]]までそのURLを添えてお知らせください。',
@@ -714,9 +714,9 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'filedeleteerror' => 'ファイル「$1」を削除できませんでした。',
 'directorycreateerror' => 'ディレクトリー「$1」を作成できませんでした。',
 'filenotfound' => 'ファイル「$1」が見つかりませんでした。',
-'fileexistserror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ï¼\9aã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå­\98å\9c¨ã\81\97ã\81¾ã\81\99',
+'fileexistserror' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¸ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\81«å¤±æ\95\97ï¼\9aã\83\95ã\82¡ã\82¤ã\83«ã\81\8cå­\98å\9c¨ã\81\97ã\81¾ã\81\99ã\80\82',
 'unexpected' => '予期しない値「$1」=「$2」です。',
-'formerror' => 'エラー:フォームを送信できませんでした',
+'formerror' => 'エラー:フォームを送信できませんでした',
 'badarticleerror' => 'このページでは要求された操作を行えません。',
 'cannotdelete' => 'ページまたはファイル「$1」を削除できませんでした。
 他の人が既に削除した可能性があります。',
@@ -728,9 +728,9 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'perfcachedts' => '以下のデータはキャッシュされており、最終更新日時は $1 です。最大 $4 {{PLURAL:$4|件の結果}}がキャッシュされます。',
 'querypage-no-updates' => 'ページの更新は無効になっています。
 以下のデータの更新は現在行われていません。',
-'wrong_wfQuery_params' => 'wfQuery()に誤ったパラメーターが渡されました。<br />
+'wrong_wfQuery_params' => 'wfQuery()に正しくないパラメーターが渡されました<br />
 関数:$1<br />
-クエリ:$2',
+クエリ:$2',
 'viewsource' => 'ソースを表示',
 'viewsource-title' => '$1のソースを表示',
 'actionthrottled' => '操作が速度規制されました',
@@ -741,9 +741,9 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'viewyourtext' => "このページへの'''あなたの編集'''のソースの閲覧やコピーができます:",
 'protectedinterface' => 'このページはソフトウェアのインターフェイスに使用されるテキストが保存されており、いたずらなどの防止のために保護されています。',
 'editinginterface' => "'''警告:'''ソフトウェアのインターフェイスの文章として使用しているページを編集しています。
-このページの変更は他の利用者のユーザー インターフェイスの外観に影響します。
-翻訳する場合、MediaWiki のローカライズ プロジェクト [//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net] の使用を検討してください。",
-'sqlhidden' => '(SQLクエリ非表示)',
+このページの変更は他の利用者のユーザーインターフェイスの外観に影響します。
+翻訳する場合、MediaWiki のローカライズプロジェクト [//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net] の使用を検討してください。",
+'sqlhidden' => '(SQLクエリ非表示)',
 'cascadeprotected' => 'このページは、「カスケード保護」が指定された状態で保護されている以下の{{PLURAL:$1|ページ|ページ群}}で読み込まれているため、編集できないように保護されています:
 $2',
 'namespaceprotected' => "'''$1'''名前空間にあるページを編集する権限がありません。",
@@ -765,7 +765,7 @@ $2',
 'logouttext' => "'''ログアウトしました。'''
 
 このまま匿名で{{SITENAME}}の使用を続行できます。同じまたは別の利用者として[[Special:UserLogin|もう一度ログイン]]することもできます。
-なお、ページによっては、ブラウザのキャッシュをクリアするまで、ログインしているかのように表示され続ける場合があるためご注意ください。",
\81ªã\81\8aã\80\81ã\83\9aã\83¼ã\82¸ã\81«ã\82\88ã\81£ã\81¦ã\81¯ã\80\81ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ã\82¯ã\83ªã\82¢ã\81\99ã\82\8bã\81¾ã\81§ã\80\81ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\84ã\82\8bã\81\8bã\81®ã\82\88ã\81\86ã\81«è¡¨ç¤ºã\81\95ã\82\8cç¶\9aã\81\91ã\82\8bå ´å\90\88ã\81\8cã\81\82ã\82\8bã\81\9fã\82\81ã\81\94注æ\84\8fã\81\8fã\81 ã\81\95ã\81\84ã\80\82",
 'welcomecreation' => '== ようこそ、$1 さん! ==
 アカウントが作成されました。
 [[Special:Preferences|{{SITENAME}}の個人設定]]の変更も忘れないようにしてください。',
@@ -778,7 +778,7 @@ $2',
 'externaldberror' => '外部の認証データベースでエラーが発生したか、または外部アカウント情報の更新が許可されていません。',
 'login' => 'ログイン',
 'nav-login-createaccount' => 'ログインまたはアカウント作成',
-'loginprompt' => '{{SITENAME}}にログインするにはクッキーを有効にする必要があります。',
+'loginprompt' => '{{SITENAME}}にログインするにはCookieを有効にする必要があります。',
 'userlogin' => 'ログインまたはアカウント作成',
 'userloginnocreate' => 'ログイン',
 'logout' => 'ログアウト',
@@ -789,7 +789,7 @@ $2',
 'createaccount' => 'アカウント作成',
 'gotaccount' => '既にアカウントを持っている場合、$1。',
 'gotaccountlink' => 'ログインしてください',
-'userlogin-resetlink' => 'ログイン情報をå¿\98ã\82\8cã\81\9f',
+'userlogin-resetlink' => 'ログイン情報をã\81\8aå¿\98ã\82\8cã\81§ã\81\99ã\81\8bï¼\9f',
 'createaccountmail' => 'メールで送信',
 'createaccountreason' => '理由:',
 'badretype' => '入力したパスワードが一致しません。',
@@ -797,15 +797,15 @@ $2',
 他の名前を選んでください。',
 'loginerror' => 'ログインのエラー',
 'createaccounterror' => 'アカウントを作成できませんでした: $1',
-'nocookiesnew' => 'å\88©ç\94¨è\80\85ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81\8cä½\9cæ\88\90ã\81\95ã\82\8cましたが、ログインしていません。
-{{SITENAME}}ではログインにクッキーを使用します。
-クッキーが無効になっているようです。
-クッキーを有効にしてから、新しい利用者名とパスワードでログインしてください。',
-'nocookieslogin' => '{{SITENAME}}ではログインにクッキーを使用します。
-クッキーが無効になっているようです。
-クッキーを有効にして、もう一度試してください。',
+'nocookiesnew' => 'å\88©ç\94¨è\80\85ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\82\92ä½\9cæ\88\90ã\81\97ましたが、ログインしていません。
+{{SITENAME}}ではログインにCookieを使用します。
+Cookieを無効にしているようです。
+Cookieを有効にしてから、新しい利用者名とパスワードでログインしてください。',
+'nocookieslogin' => '{{SITENAME}}ではログインにCookieを使用します。
+Cookieを無効にしているようです。
+Cookieを有効にしてから、もう一度試してください。',
 'nocookiesfornew' => '発信元を確認できなかったため、アカウントは作成されませんでした。
-クッキーが有効になっていることを確認して、このページを再読込してもう一度試してください。',
+Cookieを有効にしていることを確認して、このページを再読込してもう一度試してください。',
 'noname' => '利用者名を正しく指定していません。',
 'loginsuccesstitle' => 'ログイン成功',
 'loginsuccess' => "'''{{SITENAME}}に「$1」としてログインしました。'''",
@@ -821,7 +821,7 @@ $2',
 'wrongpasswordempty' => 'パスワードを空欄にはできません。
 もう一度やり直してください。',
 'passwordtooshort' => 'パスワードは {{PLURAL:$1|$1 文字}}以上にしてください。',
-'password-name-match' => 'パスワードは利用者名と同じであってはいけません。',
+'password-name-match' => 'パスワードは利用者名とは異なる必要があります。',
 'password-login-forbidden' => 'この利用者名とパスワードの使用は禁止されています。',
 'mailmypassword' => '新しいパスワードをメールで送信',
 'passwordremindertitle' => '{{SITENAME}}の仮パスワード通知',
@@ -833,10 +833,10 @@ $2',
 この申請をしたのが他人の場合、あるいはパスワードを思い出してパスワード変更が不要になった場合は、
 このメッセージを無視して、引き続き以前のパスワードを使用し続けることができます。',
 'noemail' => '利用者「$1」のメールアドレスは登録されていません。',
-'noemailcreate' => '有効なメール アドレスを入力する必要があります',
+'noemailcreate' => '有効なメールアドレスを入力する必要があります',
 'passwordsent' => '新しいパスワードを「$1」に登録されたメールアドレスに送信しました。
 メールを受け取ったら、再度ログインしてください。',
-'blocked-mailpassword' => '使用しているIPアドレスからの編集はブロックされており、不正利用防止のため、パスワードの再発行機能は使用できません。',
+'blocked-mailpassword' => 'ご使用中のIPアドレスからの編集はブロックされており、不正利用防止のため、パスワードの再発行機能は使用できません。',
 'eauthentsent' => '指定されたメールアドレスにアドレス確認のためのメールを送信しました。
 その他のメールがこのアカウント宛に送信される前に、メールの指示に従って、このアカウントが本当にあなたのものか確認してください。',
 'throttled-mailpassword' => '新しいパスワードは過去 {{PLURAL:$1|$1 時間}}に送信済みです。
@@ -844,7 +844,7 @@ $2',
 'mailerror' => 'メールの送信中にエラーが発生しました:$1',
 'acct_creation_throttle_hit' => 'あなたと同じ IP アドレスでこのウィキに訪れた人が、最近 24 時間で {{PLURAL:$1|$1 アカウント}}を作成しており、これはこの期間で作成が許可されている最大数です。
 そのため、現在この IP アドレスではアカウントをこれ以上作成できません。',
-'emailauthenticated' => 'メールアドレスは$2 $3に認証されています。',
+'emailauthenticated' => 'メールアドレスは$2 $3に認証済みです。',
 'emailnotauthenticated' => 'メールアドレスが認証されていません。
 認証されるまで、以下のいかなる機能でもメールは送信されません。',
 'noemailprefs' => 'これらの機能を有効にするためには個人設定でメールアドレスを登録する必要があります。',
@@ -856,21 +856,21 @@ $2',
 'accountcreated' => 'アカウントを作成しました',
 'accountcreatedtext' => '利用者アカウント「$1」を作成しました。',
 'createaccount-title' => '{{SITENAME}}のアカウント作成',
-'createaccount-text' => '誰か(おそらくあなた)が、{{SITENAME}} ($4) にあなたのメール アドレスのアカウントを作成しました。
+'createaccount-text' => '誰か(おそらくあなた)が、{{SITENAME}} ($4) にあなたのメールアドレスのアカウントを作成しました。
 アカウント名「$2」、パスワード「$3」です。
 今すぐログインしてパスワードを変更してください。
 
 このアカウントが何かの手違いで作成された場合は、このメッセージを無視してください。',
-'usernamehasherror' => 'å\88©ç\94¨è\80\85å\90\8dã\81«ã\81¯ç\95ªå\8f·è¨\98å\8f·ã\82\92å\90«ã\82\80ことができません',
+'usernamehasherror' => 'å\88©ç\94¨è\80\85å\90\8dã\81«ã\81¯ç\95ªå\8f·è¨\98å\8f·ã\82\92å\90«ã\82\81ã\82\8bことができません',
 'login-throttled' => 'ログインの失敗が制限回数を超えました。
 しばらく時間をおいてから再度お試しください。',
 'login-abort-generic' => 'ログインに失敗しました - 中止',
 'loginlanguagelabel' => '言語: $1',
-'suspicious-userlogout' => 'å£\8aã\82\8cã\81\9fã\83\96ã\83©ã\82¦ã\82¶ã\82\82ã\81\97ã\81\8fはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
+'suspicious-userlogout' => 'å£\8aã\82\8cã\81\9fã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81¾ã\81\9fはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
 
 # E-mail sending
-'php-mail-error-unknown' => 'PHPのmail()関数で不明なエラー',
-'user-mail-no-addy' => 'メール アドレスなしでメールを送信しようとしました。',
+'php-mail-error-unknown' => 'PHPのmail()関数での不明なエラーです。',
+'user-mail-no-addy' => 'メールアドレスなしでメールを送信しようとしました。',
 
 # Change password dialog
 'resetpass' => 'パスワードの変更',
@@ -897,11 +897,11 @@ $2',
 'passwordreset-text' => 'このフォームに入力すると、アカウント詳細のリマインダーをメールでお送りします。',
 'passwordreset-legend' => 'パスワードの再設定',
 'passwordreset-disabled' => 'パスワードの再設定は、このウィキでは無効になっています。',
-'passwordreset-pretext' => '{{PLURAL:$1||以ä¸\8bã\81®ã\83\87ã\83¼ã\82¿ã\81®ã\81\86ã\81¡ã\81® 1 つを入力してください}}',
+'passwordreset-pretext' => '{{PLURAL:$1||ä¸\8bè¨\98ã\81®ã\83\87ã\83¼ã\82¿ã\81®ã\81\84ã\81\9aã\82\8cã\81\8b 1 つを入力してください}}',
 'passwordreset-username' => '利用者名:',
 'passwordreset-domain' => 'ドメイン:',
 'passwordreset-capture' => '送信されるメールの内容を表示しますか?',
-'passwordreset-capture-help' => 'ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8bã\81¨ã\80\81å\88©ç\94¨è\80\85ã\81«é\80\81ä¿¡ã\81\95ã\82\8cã\82\8bã\83¡ã\83¼ã\83«ã\81®å\86\85容ï¼\88ä¸\80æ\99\82ç\9a\84ã\81ªã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92å\90«ã\82\80ï¼\89ã\82\92ã\81\82ã\81ªã\81\9fã\82\82è¦\8bã\82\8bã\81\93ã\81¨ã\81\8cできます。',
+'passwordreset-capture-help' => 'ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8bã\81¨ã\80\81å\88©ç\94¨è\80\85ã\81«é\80\81ä¿¡ã\81\95ã\82\8cã\82\8bã\83¡ã\83¼ã\83«ã\81®å\86\85容ï¼\88ä»®ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92å\90«ã\82\80ï¼\89ã\82\92ã\81\82ã\81ªã\81\9fã\82\82é\96²è¦§できます。',
 'passwordreset-email' => 'メールアドレス:',
 'passwordreset-emailtitle' => '{{SITENAME}}上のアカウントの詳細',
 'passwordreset-emailtext-ip' => 'どなたか(おそらくあなた、IP アドレス $1)が {{SITENAME}} ($4) での
@@ -910,32 +910,32 @@ $2',
 
 $2
 
-{{PLURAL:$3|この|これらの}}一時的なパスワードは {{PLURAL:$5|$5 日間}}で有効期限が切れます。
-あなたはすぐにログインして新しいパスワードを変更する必要があります。
-これが他の誰かによる申請である場合、あるいはあなたが自の元のパスワードを
+{{PLURAL:$3|この仮パスワード|これらの仮パスワード}}は {{PLURAL:$5|$5 日間}}で有効期限が切れます。
+あなたはすぐにログインして新しいパスワードを設定する必要があります。
+これが他の誰かによる申請である場合、あるいはあなたが自の元のパスワードを
 覚えていてそれを変更したくない場合には、このメッセージを無視して以前のパスワードを
 使用し続けることができます。',
 'passwordreset-emailtext-user' => '{{SITENAME}} の利用者 $1 があなたの {{SITENAME}} ($4)
 におけるアカウントの詳細情報を送信するよう申請しました。
¸\8bè¨\98ã\81®å\88©ç\94¨è\80\85{{PLURAL:$3|ã\82¢ã\82«ã\82¦ã\83³ã\83\88}}がこのメールアドレスと紐付けられています。
»¥ä¸\8bã\81®å\88©ç\94¨è\80\85{{PLURAL:$3|ã\82¢ã\82«ã\82¦ã\83³ã\83\88\82¢ã\82«ã\82¦ã\83³ã\83\88群}}がこのメールアドレスと紐付けられています。
 
 $2
 
-{{PLURAL:$3|ã\81\93ã\81®ä¸\80æ\99\82ç\9a\84ã\81ªã\83\91ã\82¹ã\83¯ã\83¼ã\83\89\81\93ã\82\8cã\82\89ã\81®ä¸\80æ\99\82ç\9a\84ã\81ªパスワード}}は{{PLURAL:$5|$5日}}で有効期限が切れます。
\81\82ã\81ªã\81\9fã\81¯ã\80\81ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦æ\96°ã\81\97ã\81\84ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92ã\81\99ã\81\90ã\81«é\81¸ã\81必要があります。
-この申請が他の誰かによるものの場合、あるいはあなたが自の元のパスワードを
+{{PLURAL:$3|ã\81\93ã\81®ä»®ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89\81\93ã\82\8cã\82\89ã\81®ä»®パスワード}}は{{PLURAL:$5|$5日}}で有効期限が切れます。
\81\82ã\81ªã\81\9fã\81¯ã\80\81ã\81\99ã\81\90ã\81«ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦æ\96°ã\81\97ã\81\84ã\83\91ã\82¹ã\83¯ã\83¼ã\83\89ã\82\92設å®\9aã\81\99ã\82\8b必要があります。
+この申請が他の誰かによるものの場合、あるいはあなたが自の元のパスワードを
 覚えていて、変更したくない場合は、このメッセージを無視して
 以前のパスワードを使い続けることができます。',
 'passwordreset-emailelement' => '利用者名:$1
 仮パスワード:$2',
-'passwordreset-emailsent' => '確èª\8dã\81®ã\83¡ã\83¼ã\83«ã\81\8cé\80\81ä¿¡ã\81\95ã\82\8cました。',
-'passwordreset-emailsent-capture' => '確認のメールが送信されました。以下に表示します。',
-'passwordreset-emailerror-capture' => '生成された確認メールを以下に表示していますが、利用者への送信には失敗しました: $1',
+'passwordreset-emailsent' => '確èª\8dã\83¡ã\83¼ã\83«ã\82\92ã\81\8aé\80\81ã\82\8aã\81\97ました。',
+'passwordreset-emailsent-capture' => '下記の内容の、確認メールをお送りしました。',
+'passwordreset-emailerror-capture' => '下記の内容の確認メールを生成しましたが、利用者への送信に失敗しました:$1',
 
 # Special:ChangeEmail
 'changeemail' => 'メールアドレスの変更',
 'changeemail-header' => 'アカウントのメールアドレスを変更',
-'changeemail-text' => 'このフォームではメール アドレスを変更できます。この変更を確認するためにパスワードを入力する必要があります。',
+'changeemail-text' => 'このフォームではメールアドレスを変更できます。この変更を確認するためにパスワードを入力する必要があります。',
 'changeemail-no-info' => 'このページに直接アクセスするためにはログインしている必要があります。',
 'changeemail-oldemail' => '現在のメールアドレス:',
 'changeemail-newemail' => '新しいメールアドレス:',
@@ -960,7 +960,7 @@ $2
 'image_tip' => 'ファイルの埋め込み',
 'media_sample' => 'サンプル.ogg',
 'media_tip' => 'ファイルへのリンク',
-'sig_tip' => '時刻印きの署名',
+'sig_tip' => '時刻印きの署名',
 'hr_tip' => '水平線を挿入(利用は控えめに)',
 
 # Edit pages
@@ -974,12 +974,12 @@ $2
 'showlivepreview' => 'ライブプレビュー',
 'showdiff' => '差分を表示',
 'anoneditwarning' => "'''警告:'''ログインしていません。
\81\93ã\81®ã\81¾ã\81¾æ\8a\95稿ã\82\92è¡\8cã\81£ã\81\9få ´å\90\88ã\80\81使用中のIPアドレスがこのページの編集履歴に記録されます。",
-'anonpreviewwarning' => "''ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82æ\8a\95稿ã\82\92ä¿\9då­\98ã\81\99ã\82\8bã\81¨ã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®å±¥æ­´ã\81«ä½¿ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8c記録されます。''",
\81\93ã\81®ã\81¾ã\81¾æ\8a\95稿ã\81\97ã\81\9få ´å\90\88ã\80\81ã\81\94使用中のIPアドレスがこのページの編集履歴に記録されます。",
+'anonpreviewwarning' => "''ã\83­ã\82°ã\82¤ã\83³ã\81\97ã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82æ\8a\95稿ã\82\92ä¿\9då­\98ã\81\99ã\82\8bã\81¨ã\80\81ã\81\94使ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81®å±¥æ­´ã\81«記録されます。''",
 'missingsummary' => "'''注意:'''要約欄が空欄です。
 「{{int:savearticle}}」をもう一度クリックすると、編集は要約なしで保存されます。",
 'missingcommenttext' => '以下にコメントを入力してください。',
-'missingcommentheader' => "'''注意::'' このコメントに対する題名/見出しが空欄です。
+'missingcommentheader' => "'''注意:'''このコメントに対する題名/見出しが空欄です。
 「{{int:savearticle}}」ボタンをもう一度押すと、空のまま編集が保存されます。",
 'summary-preview' => '要約のプレビュー:',
 'subject-preview' => '題名/見出しのプレビュー:',
@@ -995,9 +995,9 @@ $2
 
 このブロックについて、$1もしくは他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]に問い合わせることができます。
 ただし、[[Special:Preferences|個人設定]]で有効なメールアドレスが登録されていない場合、またはメール送信機能の使用がブロックされている場合、「この利用者にメールを送信」の機能は使えません。
\8f¾å\9c¨ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81¯$3ã\80\81ã\81\93ã\81®ã\83\96ã\83­ã\83\83ã\82¯IDã\81¯&#x23;$5です。
-問い合わせを行う際には、上記の情報を必ず書いてください。",
-'autoblockedtext' => "用中のIPアドレスは、$1によって投稿をブロックされた利用者によって使用されたために自動的にブロックされています。
\8f¾å\9c¨ã\81\94使ç\94¨ä¸­ã\81®IPã\82¢ã\83\89ã\83¬ã\82¹ã\81¯$3ã\80\81ã\81\93ã\81®ã\83\96ã\83­ã\83\83ã\82¯IDã\81¯#$5です。
+お問い合わせの際には、上記の情報を必ず書いてください。",
+'autoblockedtext' => "ご使用中のIPアドレスは、$1によって投稿をブロックされた利用者によって使用されたために自動的にブロックされています。
 理由は次の通りです。
 
 :''$2''
@@ -1010,8 +1010,8 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
 
 ただし、[[Special:Preferences|個人設定]]に正しいメールアドレスが登録されていない場合、またはメール送信がブロックされている場合、メール送信機能が使えないことに注意してください。
 
-現在利用中のIPアドレスは$3 、このブロックIDは&#x23;$5です。
-問い合わせを行う際には、この情報を必ず書いてください。",
+現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。
+お問い合わせの際には、この情報を必ず書いてください。",
 'blockednoreason' => '理由が設定されていません',
 'whitelistedittext' => 'このページを編集するには$1する必要があります。',
 'confirmedittext' => 'ページの編集を始める前にメールアドレスの確認をする必要があります。
@@ -1029,7 +1029,7 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこの件につ
 'newarticle' => '(新)',
 'newarticletext' => "まだ存在していないページへのリンクをたどりました。
 このページを新規に作成するには、下のボックスに内容を書き込んでください(詳しくは[[{{MediaWiki:Helppage}}|ヘルプページ]]を参照してください)。
-誤ってこのページにたどり着いた場合には、ブラウザの'''戻る'''ボタンで前のページに戻ってください。",
+誤ã\81£ã\81¦ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81\9fã\81©ã\82\8aç\9d\80ã\81\84ã\81\9få ´å\90\88ã\81«ã\81¯ã\80\81ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®'''æ\88»ã\82\8b'''ã\83\9cã\82¿ã\83³ã\81§å\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81«æ\88»ã\81£ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82",
 'anontalkpagetext' => "----''このページはアカウントをまだ作成していないか使用していない匿名利用者のための議論ページです。
 匿名利用者を識別するために、利用者名の代わりにIPアドレスが使用されています。
 IP アドレスは複数の利用者で共有されている場合があります。
@@ -1038,13 +1038,13 @@ IP アドレスは複数の利用者で共有されている場合がありま
 他のページ内で[[Special:Search/{{PAGENAME}}|このページ名を検索]]するか、
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連する記録を検索]するか、
 [{{fullurl:{{FULLPAGENAME}}|action=edit}} このページを編集]</span>することができます。',
-'noarticletext-nopermission' => '現在このページには内容がありません。他のページに含まれる[[Special:Search/{{PAGENAME}}|このページ名を検索する]]か、もしくは<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索する]</span>ことができます。',
+'noarticletext-nopermission' => '現在このページには内容がありません。他のページに含まれる[[Special:Search/{{PAGENAME}}|このページ名を検索]]するか、もしくは<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索]</span>することができます。',
 'userpage-userdoesnotexist' => '「$1」という利用者アカウントは登録されていません。
 このページの作成/編集が適切かどうか確認してください。',
 'userpage-userdoesnotexist-view' => '利用者アカウント「$1」は登録されていません。',
 'blocked-notice-logextract' => 'この利用者は現在ブロックされています。
-参考のために最新のブロック記録を以下に表示します',
-'clearyourcache' => "'''注意:''' 保存後、変更を確認するにはブラウザのキャッシュを消去する必要がある場合があります。
+参考のために最新のブロック記録を以下に表示します',
+'clearyourcache' => "'''注æ\84\8f:''' ä¿\9då­\98å¾\8cã\80\81å¤\89æ\9b´ã\82\92確èª\8dã\81\99ã\82\8bã\81«ã\81¯ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92æ¶\88å\8e»ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8bå ´å\90\88ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82
 * '''Firefox / Safari:''' ''Shift'' を押しながら ''再読み込み'' をクリックする、もしくは ''Ctrl-F5'' か ''Ctrl-R'' を押してください (Macでは ''&#x2318;-R'' )
 * '''Google Chrome:''' ''Ctrl-Shift-R'' を押してください (Macでは ''&#x2318;-Shift-R'' )
 * '''Internet Explorer:''' ''Ctrl'' を押しながら ''最新の情報に更新'' をクリックする、もしくは ''Ctrl-F5'' を押してください
@@ -1054,7 +1054,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'userjsyoucanpreview' => "'''ヒント:''' 「{{int:showpreview}}」ボタンを使うと、保存前に新しいスクリプトを試験できます。",
 'usercsspreview' => "'''利用者CSSをプレビューしています。'''
 '''まだ保存されていません!'''",
-'userjspreview' => "'''利用者JavaScriptを試験プレビューしています。'''
+'userjspreview' => "'''利用者JavaScriptを試験/プレビューしています。'''
 '''まだ保存されていません!'''",
 'sitecsspreview' => "'''ここでは、CSSをプレビューしているだけに過ぎません。'''
 '''まだ保存されていません!'''",
@@ -1077,7 +1077,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 
 '''この編集が問題ない場合はもう一度保存してください。'''
 それでもうまくいかない場合は一度[[Special:UserLogout|ログアウト]]して、ログインし直してみてください。",
-'token_suffix_mismatch' => "'''使用中のクライアントが編集トークン内の句読点を正しく処理していないため、編集を受け付けられません。'''
+'token_suffix_mismatch' => "'''使用中のクライアントが編集トークン内の句読点を正しく処理していないため、編集を受け付けられません。'''
 ページ本文の破損を防ぐため、編集は反映されません。
 問題のある匿名プロキシ サービスを使用していると、これが発生する場合があります。",
 'edit_form_incomplete' => "'''一部の編集フォームの値がサーバーに届きませんでした。ご確認の上、そのまま再度投稿してください。'''",
@@ -1093,7 +1093,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 上側のテキスト領域の内容'''だけ'''が、「{{int:savearticle}}」をクリックした時に実際に保存されます。",
 'yourtext' => '編集中の文章',
 'storedversion' => '保存された版',
-'nonunicodebrowser' => "'''è­¦å\91\8aï¼\9aã\81\82ã\81ªã\81\9fのブラウザーはUnicodeに未対応です。'''
+'nonunicodebrowser' => "'''è­¦å\91\8aï¼\9aã\81\94使ç\94¨ä¸­のブラウザーはUnicodeに未対応です。'''
 安全にページを編集する回避策を表示しています:編集ボックス内の非ASCII文字を16進数コードで表現しています。",
 'editingold' => "'''警告:このページの古い版を編集しています。'''
 保存すると、この版以降に追加されていた変更がすべて失われます。",
@@ -1108,23 +1108,23 @@ IP アドレスは複数の利用者で共有されている場合がありま
 '''著作権保護されている作品を、許諾なしに投稿してはいけません!'''",
 'longpageerror' => "'''エラー:投稿された文章は {{PLURAL:$1|$1 KB}} の長さがあります。これは投稿できる最大の長さ {{PLURAL:$2|$2 KB}} を超えています。'''
 この編集は保存できません。",
-'readonlywarning' => "'''è­¦å\91\8aï¼\9aã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cã\83¡ã\83³ã\83\86ã\83\8aã\83³ã\82¹ã\81®ã\81\9fã\82\81ã\81«ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81、現在は編集を保存できません。'''
-必要であれば文章をカットアンドペーストしてテキストファイルとして保存し、後ほど保存をやり直してください。
+'readonlywarning' => "'''è­¦å\91\8aï¼\9aã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\81\8cã\83¡ã\83³ã\83\86ã\83\8aã\83³ã\82¹ã\81®ã\81\9fã\82\81ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\8aã\82\8a、現在は編集を保存できません。'''
+必要であれば文章をカット&amp;ペーストしてテキストファイルとして保存し、後ほど保存をやり直してください。
 
 データベースをロックした管理者による説明は以下の通りです:$1",
 'protectedpagewarning' => "'''警告:このページは保護されているため、管理者権限を持つ利用者のみが編集できます。'''
-参考として以下に一番最後の記録を表示します:",
+参考として以下に最後の記録を表示します:",
 'semiprotectedpagewarning' => "'''注意:'''このページは保護されているため、登録利用者のみが編集できます。
-参考として以下に一番最後の記録を表示します:",
-'cascadeprotectedwarning' => "'''è­¦å\91\8aï¼\9a'''ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\82«ã\82¹ã\82±ã\83¼ã\83\89ä¿\9dè­·ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8b以ä¸\8bã\81®{{PLURAL:$1|ã\83\9aã\83¼ã\82¸|ã\83\9aã\83¼ã\82¸ç¾¤}}ã\81\8bã\82\89読ã\81¿è¾¼ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81ã\80\81管ç\90\86è\80\85権é\99\90ã\82\92æ\8c\81ã\81¤å\88©ç\94¨è\80\85ã\81\97ã\81\8bç·¨é\9b\86ã\81§ã\81\8dã\81ªã\81\84ã\82\88ã\81\86ã\81«ä¿\9dè­·ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ã\80\82",
+参考として以下に最後の記録を表示します:",
+'cascadeprotectedwarning' => "'''è­¦å\91\8aï¼\9a'''ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\82«ã\82¹ã\82±ã\83¼ã\83\89ä¿\9dè­·ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8b以ä¸\8bã\81®{{PLURAL:$1|ã\83\9aã\83¼ã\82¸|ã\83\9aã\83¼ã\82¸ç¾¤}}ã\81\8bã\82\89読ã\81¿è¾¼ã\81¾ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81ã\80\81管ç\90\86è\80\85権é\99\90ã\82\92æ\8c\81ã\81¤å\88©ç\94¨è\80\85ã\81®ã\81¿ã\81\8cç·¨é\9b\86ã\81§ã\81\8dã\82\8bã\82\88ã\81\86ã\81«ä¿\9dè­·ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\99ï¼\9a",
 'titleprotectedwarning' => "'''警告:このページは保護されているため、作成には[[Special:ListGroupRights|特定の権限]]が必要です。'''
-参考として以下に一番最後の記録を表示します:",
+参考として以下に最後の記録を表示します:",
 'templatesused' => 'このページで使用されている{{PLURAL:$1|テンプレート}}:',
 'templatesusedpreview' => 'このプレビューで使用されている{{PLURAL:$1|テンプレート}}:',
 'templatesusedsection' => 'この節で使用されている{{PLURAL:$1|テンプレート}}:',
 'template-protected' => '(保護)',
 'template-semiprotected' => '(半保護)',
-'hiddencategories' => 'このページは$1個の隠しカテゴリに属しています:',
+'hiddencategories' => 'このページは {{PLURAL:$1|$1 個の隠しカテゴリ}}に属しています:',
 'edittools' => '<!-- ここに書いたテキストは編集及びアップロードのフォームの下に表示されます。 -->',
 'nocreatetitle' => 'ページの作成が制限されています',
 'nocreatetext' => '{{SITENAME}}ではページの新規作成を制限しています。
@@ -1155,13 +1155,13 @@ IP アドレスは複数の利用者で共有されている場合がありま
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''警告:'''このページでの高負荷なパーサー関数の呼び出し回数が多過ぎます。
 
-{{PLURAL:$2|å\91¼ã\81³å\87ºã\81\97ã\81¯ $2 å\9b\9e}}以ä¸\8bにしてください({{PLURAL:$1|現在は $1 回}})。",
+{{PLURAL:$2|å\91¼ã\81³å\87ºã\81\97ã\82\92 $2 å\9b\9e}}æ\9cªæº\80にしてください({{PLURAL:$1|現在は $1 回}})。",
 'expensive-parserfunction-category' => '高負荷な構文解析関数の呼び出しが多過ぎるページ',
 'post-expand-template-inclusion-warning' => "'''警告:'''テンプレートの読み込みサイズが大き過ぎます。
 いくつかのテンプレートは読み込まれません。",
 'post-expand-template-inclusion-category' => 'テンプレート読み込みサイズが制限値を越えているページ',
-'post-expand-template-argument-warning' => "'''è­¦å\91\8aï¼\9a'''ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81å±\95é\96\8bå¾\8cã\81®ã\82µã\82¤ã\82ºã\81\8c大ã\81\8dã\81\99ã\81\8eã\82\8bå¼\95æ\95°ã\82\92渡ã\81\97ã\81\9fã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\81\8c\81¤ä»¥ä¸\8aå\90«ã\81¾ã\82\8cã\81¦います。
\81\93ã\82\8cã\82\89ã\81®å¼\95æ\95°ã\81¯ç\9c\81ç\95¥ã\81\95ã\82\8cました。",
+'post-expand-template-argument-warning' => "'''è­¦å\91\8aï¼\9a'''ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81å±\95é\96\8bå¾\8cã\81®ã\82µã\82¤ã\82ºã\81\8c大ã\81\8dã\81\99ã\81\8eã\82\8bå¼\95æ\95°ã\82\92渡ã\81\97ã\81\9fã\83\86ã\83³ã\83\97ã\83¬ã\83¼ã\83\88ã\82\92å°\91ã\81ªã\81\8fã\81¨ã\82\82\81¤å\90«ã\82\93ã\81§います。
\81\93ã\82\8cã\82\89ã\81®å¼\95æ\95°ã\82\92ç\9c\81ç\95¥ã\81\97ました。",
 'post-expand-template-argument-category' => '省略されたテンプレート引数を含むページ',
 'parser-template-loop-warning' => 'テンプレートのループが検出されました:[[$1]]',
 'parser-template-recursion-depth-warning' => 'テンプレートの再帰の深さ($1)が上限を超えました',
@@ -1175,7 +1175,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 
 # "Undo" feature
 'undo-success' => 'この編集を取り消せます。
-ä¸\8bè¨\98ã\81®å·®å\88\86ã\82\92確èª\8dã\81\97ã\80\81æ\9c¬å½\93ã\81«å\8f\96ã\82\8aæ¶\88ã\81\99ã\81¹ã\81\8dã\81 ã\81¨ç¢ºèª\8dã\81\97ã\81¦ã\81\8bã\82\89ã\80\81変更を保存して取り消しを完了してください。',
+ä¸\8bè¨\98ã\81®å·®å\88\86ã\82\92確èª\8dã\81\97ã\81¦ã\80\81æ\9c¬å½\93ã\81«å\8f\96ã\82\8aæ¶\88ã\81\97ã\81¦ã\81\84ã\81\84ã\81\8bæ¤\9c証ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82ã\82\88ã\82\8dã\81\97ã\81\91ã\82\8cã\81°変更を保存して取り消しを完了してください。',
 'undo-failure' => '中間の版での編集と競合したため、取り消せませんでした。',
 'undo-norev' => '取り消そうとした編集が存在しないか削除済みのため取り消せませんでした。',
 'undo-summary' => '[[Special:Contributions/$2|$2]]([[User talk:$2|トーク]])による第$1版を取り消し',
@@ -1184,7 +1184,7 @@ IP アドレスは複数の利用者で共有されている場合がありま
 'cantcreateaccounttitle' => 'アカウントを作成できません',
 'cantcreateaccount-text' => "このIPアドレス('''$1''')からのアカウント作成は[[User:$3|$3]]によってブロックされています。
 
-$3が示した理由は ''$2'' です。",
+$3が示した理由:''$2''",
 
 # History pages
 'viewpagelogs' => 'このページに関する記録を閲覧',
@@ -1207,7 +1207,7 @@ $3が示した理由は ''$2'' です。",
 'history-show-deleted' => '削除済みのみ',
 'histfirst' => '最古',
 'histlast' => '最新',
-'historysize' => '$1バイト',
+'historysize' => '({{PLURAL:$1|$1バイト}})',
 'historyempty' => '(空)',
 
 # Revision feed
@@ -1227,33 +1227,33 @@ $3が示した理由は ''$2'' です。",
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
 'rev-deleted-text-unhide' => "この版は'''削除されています'''。
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。
-このまま[$1 この版を見る]ことができます。",
+このまま[$1 この版を閲覧]できます。",
 'rev-suppressed-text-unhide' => "この版は'''秘匿されています'''。
 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。
-このまま[$1 この版を見る]ことができます。",
+このまま[$1 この版を閲覧]できます。",
 'rev-deleted-text-view' => "この版は'''削除されています'''。
-内容を見ることができます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+内容を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
 'rev-suppressed-text-view' => "この版は'''秘匿されています'''。
-内容を見ることができます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
+内容を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
 'rev-deleted-no-diff' => "どちらかの版が'''削除されているため'''、差分表示できません。
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
-'rev-suppressed-no-diff' => "æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få·®å\88\86ã\81¯'''å\89\8aé\99¤ã\81\95ã\82\8cã\81\9f'''ç\89\88ã\82\92å\90«ã\82\93ã\81§ã\81\84ã\82\8bã\81\9fã\82\81ã\80\81é\96²è¦§ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82",
+'rev-suppressed-no-diff' => "指定された差分は'''削除された'''版を含んでいるため、閲覧できません。",
 'rev-deleted-unhide-diff' => "この差分の一方の版は'''削除されています'''。
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。
-このまま[$1 この差分を見る]ことができます。",
+このまま[$1 この差分を閲覧]できます。",
 'rev-suppressed-unhide-diff' => "この差分の一方の版は'''秘匿されています'''。
 [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。
-このまま[$1 この差分を見る]ことができます。",
+このまま[$1 この差分を閲覧]できます。",
 'rev-deleted-diff-view' => "この差分の一方の版は'''削除されています'''。
-この差分を見ることができます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
+この差分を閲覧できます。[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]に詳細情報があるかもしれません。",
 'rev-suppressed-diff-view' => "この差分の一方の版は'''秘匿されています'''。
-この差分を見ることができます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
+この差分を閲覧できます。[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]に詳細情報があるかもしれません。",
 'rev-delundel' => '表示/非表示',
 'rev-showdeleted' => '表示',
 'revisiondelete' => '版の削除と復帰',
 'revdelete-nooldid-title' => '不正な対象版',
 'revdelete-nooldid-text' => 'この操作の対象となる版を指定していないか、指定した版が存在していないか、あるいは最新版を非表示しようとしています。',
-'revdelete-nologtype-title' => 'è¨\98é\8c²ã\81®ç¨®é¡\9eã\81\8cæ\8c\87å®\9aã\81\95ã\82\8cていません',
+'revdelete-nologtype-title' => 'è¨\98é\8c²ã\81®ç¨®é¡\9eã\82\92æ\8c\87å®\9aã\81\97ていません',
 'revdelete-nologtype-text' => 'この操作を実行する記録の種類を指定していません。',
 'revdelete-nologid-title' => '不正な記録項目',
 'revdelete-nologid-text' => 'この操作の対象となる記録の項目を指定していないか、あるいは指定した項目が存在しません。',
@@ -1295,15 +1295,16 @@ $1",
 'pagehist' => 'ページの履歴',
 'deletedhist' => '削除された履歴',
 'revdelete-hide-current' => '$1$2の項目の非表示に失敗しました:これは最新版であるため。
\9a ã\81\99ã\81\93ã\81¨はできません。',
-'revdelete-show-no-access' => '$1$2ã\81®é \85ç\9b®ã\81®è¡¨ç¤ºã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9fï¼\9aã\81\93ã\81®é \85ç\9b®ã\81¯ã\80\8cå\88¶é\99\90ä»\98ã\81\8dã\80\8dã\81«è¨­å®\9aã\81\95ã\82\8cています。
\9d\9e表示ã\81«はできません。',
+'revdelete-show-no-access' => '$1$2ã\81®é \85ç\9b®ã\81®è¡¨ç¤ºã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9fï¼\9aã\81\93ã\81®é \85ç\9b®ã\81«ã\81¯ã\80\8cå\88¶é\99\90ä»\98ã\81\8dã\80\8dã\81®å\8d°ã\81\8cä»\98ã\81\84ています。
 アクセス権限がありません。',
-'revdelete-modify-no-access' => '$1$2ã\81®é \85ç\9b®ã\81®ä¿®æ­£ã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9fï¼\9aã\81\93ã\81®é \85ç\9b®ã\81¯ã\80\8cå\88¶é\99\90ä»\98ã\81\8dã\80\8dã\81«è¨­å®\9aã\81\95ã\82\8cています。
+'revdelete-modify-no-access' => '$1$2ã\81®é \85ç\9b®ã\81®ä¿®æ­£ã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9fï¼\9aã\81\93ã\81®é \85ç\9b®ã\81«ã\81¯ã\80\8cå\88¶é\99\90ä»\98ã\81\8dã\80\8dã\81®å\8d°ã\81\8cä»\98ã\81\84ています。
 アクセス権限がありません。',
 'revdelete-modify-missing' => 'ID$1の項目の変更に失敗しました:データベースに見当たりません!',
 'revdelete-no-change' => "'''警告:''' $1$2の項目には要求された閲覧レベルが既に設定されています。",
-'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:あなたが変更しようとしている間に、他の利用者が変更したようです。',
-'revdelete-only-restricted' => '$1$2の項目の版指定削除に失敗しました:他の閲覧レベルの選択肢のうちどれかをさらに選択しなければ、管理者から項目を秘匿することはできません。',
+'revdelete-concurrent-change' => '$1$2の項目の変更に失敗しました:あなたが変更しようとしている間に、他の誰かが変更したようです。
+記録を確認してください。',
+'revdelete-only-restricted' => '$1$2の項目の版指定削除に失敗しました:他の閲覧レベルの選択肢のうちどれかをさらに選択しなければ、管理者から項目を秘匿できません。',
 'revdelete-reason-dropdown' => '*よくある削除理由
 ** 著作権侵害
 ** 名誉毀損のおそれ
@@ -1320,15 +1321,15 @@ $1",
 
 # History merging
 'mergehistory' => 'ページ履歴の統合',
-'mergehistory-header' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81§ã\81¯ã\80\81ã\81\82ã\82\8bå\85\83ã\83\9aã\83¼ã\82¸ã\81®å±¥æ­´ã\82\92æ\96°ã\81\97ã\81\84ã\83\9aã\83¼ã\82¸ã\81«çµ±å\90\88ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82
+'mergehistory-header' => 'このページでは、ある元ページの履歴を新しいページに統合できます。
 この変更を行ってもページの履歴の連続性が確実に保たれるようにしてください。',
 'mergehistory-box' => '2ページの過去の版を統合する:',
 'mergehistory-from' => '統合元となるページ:',
 'mergehistory-into' => '統合先のページ:',
 'mergehistory-list' => '統合できる編集履歴',
 'mergehistory-merge' => '以下の [[:$1]] の履歴を [[:$2]] に統合できます。
\89¹å®\9aã\81®æ\99\82é\96\93以前に作成された版のみを統合するには、ラジオボタンで版を選択してください。
-案内リンクを使用すると、選択が初期化されるので注意してください。',
\89¹å®\9aã\81®æ\97¥æ\99\82以前に作成された版のみを統合するには、ラジオボタンで版を選択してください。
+案内リンクを使用すると選択が初期化されるためご注意ください。',
 'mergehistory-go' => '統合できる版を表示',
 'mergehistory-submit' => '版を統合',
 'mergehistory-empty' => '統合できる版がありません。',
@@ -1340,7 +1341,7 @@ $1",
 'mergehistory-invalid-destination' => '統合先のページは有効な名前でなければなりません。',
 'mergehistory-autocomment' => '[[:$1]]を[[:$2]]に統合',
 'mergehistory-comment' => '[[:$1]]を[[:$2]]に統合:$3',
-'mergehistory-same-destination' => 'çµ±å\90\88å\85\83ã\81¨çµ±å\90\88å\85\88ã\81«å\90\8cã\81\98ã\83\9aã\83¼ã\82¸ã\82\92設å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
+'mergehistory-same-destination' => 'çµ±å\90\88å\85\83ã\81¨çµ±å\90\88å\85\88ã\81®ã\83\9aã\83¼ã\82¸ã\82\92å\90\8cã\81\98ã\81«ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93',
 'mergehistory-reason' => '理由:',
 
 # Merge log
@@ -1358,8 +1359,8 @@ $1",
 'compareselectedversions' => '選択した版同士を比較',
 'showhideselectedversions' => '選択した版を表示もしくは非表示',
 'editundo' => '取り消し',
-'diff-multi' => '($2人の利用者による、間の$1版が非表示)',
-'diff-multi-manyusers' => '($2人以上の利用者による、間の$1版が非表示)',
+'diff-multi' => '({{PLURAL:$2|$2人の利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
+'diff-multi-manyusers' => '({{PLURAL:$2|$2人を超える利用者}}による、{{PLURAL:$1|間の$1版}}が非表示)',
 
 # Search results
 'searchresults' => '検索結果',
@@ -1374,13 +1375,13 @@ $1",
 'notextmatches' => 'どのページ本文とも一致しませんでした',
 'prevn' => '前の$1件',
 'nextn' => '次の$1件',
-'prevn-title' => '前の$1結果',
-'nextn-title' => '次の$1結果',
-'shown-title' => 'ページあたり$1件の結果を表示',
+'prevn-title' => '前の{{PLURAL:$1|$1結果}}',
+'nextn-title' => '次の{{PLURAL:$1|$1結果}}',
+'shown-title' => 'ページあたり{{PLURAL:$1|$1件の結果}}を表示',
 'viewprevnext' => '($1{{int:pipe-separator}}$2)($3)を表示',
 'searchmenu-legend' => '検索オプション',
 'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります'''",
-'searchmenu-new' => "'''このウィキでページ「[[:$1|$1]]」を新規作成する'''",
+'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成する'''",
 'searchhelp-url' => 'Help:目次',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|この文字列から始まる名前のページを見る]]',
 'searchprofile-articles' => '本文ページ',
@@ -1393,8 +1394,8 @@ $1",
 'searchprofile-images-tooltip' => 'ファイルを検索',
 'searchprofile-everything-tooltip' => '全本文ページ(トークページ含む)を検索',
 'searchprofile-advanced-tooltip' => '特定の名前空間内を検索',
-'search-result-size' => '$1($2単語)',
-'search-result-category-size' => '$1件($2下位カテゴリ、$3ファイル)',
+'search-result-size' => '$1({{PLURAL:$2|$2単語}})',
+'search-result-category-size' => '{{PLURAL:$1|$1件}}({{PLURAL:$2|$2下位カテゴリ}}、{{PLURAL:$3|$3ファイル}})',
 'search-result-score' => '関連度:$1%',
 'search-redirect' => '($1からのリダイレクト)',
 'search-section' => '($1の節)',
@@ -1405,14 +1406,14 @@ $1",
 'search-mwsuggest-enabled' => '検索候補を表示',
 'search-mwsuggest-disabled' => '検索候補を表示しない',
 'search-relatedarticle' => '関連',
-'mwsuggest-disable' => 'AJAXによる検索候補の提示を無効にする',
+'mwsuggest-disable' => 'Ajaxによる検索候補の提示を無効にする',
 'searcheverything-enable' => 'すべての名前空間を検索',
 'searchrelated' => '関連',
 'searchall' => 'すべて',
-'showingresults' => "'''$2'''件目からの{{PLURAL:$1|'''$1'''件の結果}}を表示しています。",
-'showingresultsnum' => "'''$2'''件目からの{{PLURAL:$3|'''$3'''件の結果}}を表示しています。",
+'showingresults' => "'''$2'''件目以降の{{PLURAL:$1|'''$1'''件の結果}}を表示しています。",
+'showingresultsnum' => "'''$2'''件目以降の{{PLURAL:$3|'''$3'''件の結果}}を表示しています。",
 'showingresultsheader' => "「'''$4'''」に対する{{PLURAL:$5|'''$3'''件中の'''$1'''件の結果|'''$3'''件中の'''$1'''件目から'''$2'''件目の結果}}",
-'nonefound' => "'''注æ\84\8f'''ï¼\9aæ\97¢å®\9aã\81§ã\81¯ä¸\80é\83¨ã\81®å\90\8då\89\8d空é\96\93ã\81\97ã\81\8bæ¤\9cç´¢ã\81\95ã\82\8cã\81¾ã\81\9bã\82\93
+'nonefound' => "'''注æ\84\8f'''ï¼\9aæ\97¢å®\9aã\81§ã\81¯ä¸\80é\83¨ã\81®å\90\8då\89\8d空é\96\93ã\81®ã\81¿ã\82\92æ¤\9cç´¢ã\81\97ã\81¾ã\81\99
 ''all:''を前に付けると、すべて(トークページやテンプレートなどを含む)を対象にできます。検索する名前空間を前に付けることもできます。",
 'search-nonefound' => '問い合わせに合致する検索結果はありませんでした。',
 'powersearch' => '高度な検索',
@@ -1486,11 +1487,11 @@ $1",
 'savedprefs' => '個人設定を保存しました。',
 'timezonelegend' => 'タイムゾーン:',
 'localtime' => 'ローカルの時刻:',
-'timezoneuseserverdefault' => '既定を使用 ($1)',
+'timezoneuseserverdefault' => 'ウィキの既定を使用 ($1)',
 'timezoneuseoffset' => 'その他(時差を指定)',
 'timezoneoffset' => '時差¹:',
 'servertime' => 'サーバーの時刻:',
-'guesstimezone' => 'ブラウザの設定から入力',
+'guesstimezone' => 'ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81®è¨­å®\9aã\81\8bã\82\89å\85¥å\8a\9b',
 'timezoneregion-africa' => 'アフリカ',
 'timezoneregion-america' => 'アメリカ',
 'timezoneregion-antarctica' => '南極',
@@ -1522,12 +1523,13 @@ $1",
 'yourrealname' => '本名:',
 'yourlanguage' => '使用言語:',
 'yourvariant' => 'コンテンツ言語変種:',
-'prefs-help-variant' => 'ã\81\82ã\81ªã\81\9fã\81\8cã\81\93ã\81®ã\82¦ã\82£ã\82­ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\81«è¡¨ç¤ºã\81«ä½¿ã\81\84ã\81\9fã\81\84è¨\80èª\9eå¤\89種ã\81¾ã\81\9fã\81¯æ­£æ\9b¸æ³\95',
+'prefs-help-variant' => 'ã\81\93ã\81®ã\82¦ã\82£ã\82­ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\81«è¡¨ç¤ºã\81«ä½¿ç\94¨ã\81\97ã\81\9fã\81\84è¨\80èª\9eå¤\89種ã\81¾ã\81\9fã\81¯æ­£æ\9b¸æ³\95ã\80\82',
 'yournick' => '新しい署名:',
 'prefs-help-signature' => 'トークページ上での発言には「<nowiki>~~~~</nowiki>」と付けて署名すべきです。これは自分の署名に時刻印を付けたものに変換されます。',
 'badsig' => '署名用のソースが正しくありません。
 HTMLタグを見直してください。',
-'badsiglength' => '署名が長すぎます。$1文字以下でなければなりません。',
+'badsiglength' => '署名が長すぎます。
+$1 {{PLURAL:$1|文字}}以下である必要があります。',
 'yourgender' => '性別:',
 'gender-unknown' => '未指定',
 'gender-male' => '男',
@@ -1557,7 +1559,7 @@ HTMLタグを見直してください。',
 'prefs-diffs' => '差分',
 
 # User preference: e-mail validation using jQuery
-'email-address-validity-valid' => 'メール アドレスは有効のようです',
+'email-address-validity-valid' => 'メールアドレスは有効のようです',
 'email-address-validity-invalid' => '有効なメールアドレスを入力',
 
 # User rights
@@ -1620,7 +1622,7 @@ HTMLタグを見直してください。',
 'right-suppressredirect' => 'ページの移動の際に元のページ名からのリダイレクトを作成しない',
 'right-upload' => 'ファイルをアップロード',
 'right-reupload' => '既存のファイルに上書き',
-'right-reupload-own' => '自分がアップロードした既存のファイルに上書き',
+'right-reupload-own' => '自分自身がアップロードした既存のファイルに上書き',
 'right-reupload-shared' => '共有メディアリポジトリ上のファイルのローカルでの上書き',
 'right-upload_by_url' => 'URLからファイルをアップロード',
 'right-purge' => '確認を省略してサイトのキャッシュを破棄',
@@ -1646,7 +1648,7 @@ HTMLタグを見直してください。',
 'right-unblockself' => '自分自身に対するブロックを解除',
 'right-protect' => '保護レベルを変更し、保護されたページを編集',
 'right-editprotected' => '保護ページ(カスケード保護を除く)を編集',
-'right-editinterface' => 'ユーザー インターフェイスを編集',
+'right-editinterface' => 'ユーザーインターフェイスを編集',
 'right-editusercssjs' => '他の利用者のCSSとJavaScriptファイルを編集',
 'right-editusercss' => '他の利用者のCSSファイルを編集',
 'right-edituserjs' => '他の利用者のJavaScriptファイルを編集',
@@ -1703,7 +1705,7 @@ HTMLタグを見直してください。',
 'action-import' => 'このページを他のウィキから取り込む',
 'action-importupload' => 'ファイルアップロードでこのページに取り込む',
 'action-patrol' => '他の利用者の編集を巡回済みにする',
-'action-autopatrol' => '自の編集を巡回済みにする',
+'action-autopatrol' => '自の編集を巡回済みにする',
 'action-unwatchedpages' => 'ウォッチされていないページ一覧を表示',
 'action-mergehistory' => 'このページの履歴を統合',
 'action-userrights' => '全利用者権限の変更',
@@ -1712,11 +1714,11 @@ HTMLタグを見直してください。',
 'action-sendemail' => 'メールを送信',
 
 # Recent changes
-'nchanges' => '$1回の変更',
+'nchanges' => '$1{{PLURAL:$1|回の変更}}',
 'recentchanges' => '最近の更新',
 'recentchanges-legend' => '最近の更新のオプション',
-'recentchanges-summary' => 'このページで最近の更新を確認できます。',
-'recentchanges-feed-description' => 'ã\81\93ã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\81§ã\81\9dã\81®ã\82¦ã\82£ã\82­ã\81¸ã\81®æ\9c\80è¿\91ã\81®æ\9b´æ\96°ã\82\92追跡。',
+'recentchanges-summary' => 'このページでは、このウィキでの最近の更新を確認できます。',
+'recentchanges-feed-description' => 'ã\81\93ã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\81§ã\81\93ã\81®ã\82¦ã\82£ã\82­ã\81®æ\9c\80è¿\91ã\81®æ\9b´æ\96°ã\82\92追跡ã\81§ã\81\8dã\81¾ã\81\99。',
 'recentchanges-label-newpage' => 'この編集で新しいページが作成されました',
 'recentchanges-label-minor' => 'これは細部の編集です',
 'recentchanges-label-bot' => 'この編集はボットによって行われました',
@@ -1739,10 +1741,10 @@ HTMLタグを見直してください。',
 'newpageletter' => '新',
 'boteditletter' => 'ボ',
 'unpatrolledletter' => '!',
-'number_of_watching_users_pageview' => '[$1 人の利用者がウォッチしています]',
+'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 人の利用者}}がウォッチしています]',
 'rc_categories' => 'カテゴリを限定(「|」で区切る)',
 'rc_categories_any' => 'すべて',
-'rc-change-size-new' => '変更後は$1バイト',
+'rc-change-size-new' => '変更後は $1 {{PLURAL:$1|バイト}}',
 'newsectionsummary' => '/* $1 */ 新しい節',
 'rc-enhanced-expand' => '詳細を表示(JavaScript が必要)',
 'rc-enhanced-hide' => '詳細を非表示',
@@ -1793,9 +1795,9 @@ HTMLタグを見直してください。',
 'filestatus' => '著作権情報:',
 'filesource' => '出典:',
 'uploadedfiles' => 'アップロードされたファイル',
-'ignorewarning' => 'è­¦å\91\8aã\82\92ç\84¡è¦\96ã\81\97ã\80\81ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ä¿\9då­\98ã\81\97ã\81¦ã\81\97ã\81¾ã\81\86',
+'ignorewarning' => 'è­¦å\91\8aã\82\92ç\84¡è¦\96ã\81\97ã\81¦ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ä¿\9då­\98',
 'ignorewarnings' => '警告を無視',
-'minlength1' => 'ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\81¯1æ\96\87å­\97以ä¸\8aã\81§ã\81\82ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾す。',
+'minlength1' => 'ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\81«ã\81¯å°\91ã\81ªã\81\8fã\81¨ã\82\82\96\87å­\97å¿\85è¦\81ã\81§す。',
 'illegalfilename' => 'ファイル名「$1」にページ名として許可されていない文字が含まれています。
 ファイル名を変更してからもう一度アップロードしてください。',
 'filename-toolong' => '240バイトを超えるファイル名は禁止されています。',
@@ -1818,15 +1820,15 @@ HTMLタグを見直してください。',
 'overwrite' => '既存のファイルへの上書きは許可されていません。',
 'unknown-error' => '不明なエラーが発生しました。',
 'tmp-create-error' => '一時ファイルを作成できませんでした。',
-'tmp-write-error' => '一時ファイルへの書き込みエラー',
-'large-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82µã\82¤ã\82ºã\81¯$1ã\83\90ã\82¤ã\83\88ã\82\88ã\82\8a大ã\81\8dã\81\8fã\81\97ã\81ªã\81\84ã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cã\81¦ã\81\84ます。
-このファイルは$2バイトです。',
+'tmp-write-error' => '一時ファイルへの書き込みエラーです。',
+'large-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82µã\82¤ã\82ºã\82\92 $1 ã\83\90ã\82¤ã\83\88以ä¸\8bã\81«ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。
+このファイルは $2 バイトです。',
 'largefileserver' => 'このファイルは、サーバー設定で許されている最大サイズより大きいです。',
 'emptyfile' => 'アップロードしたファイルは内容が空のようです。
 ファイル名の指定が間違っている可能性があります。
 本当にこのファイルをアップロードしたいのか、確認してください。',
 'windows-nonascii-filename' => 'このwikiではファイル名に特殊文字を使用できません。',
-'fileexists' => "ã\81\93ã\81®å\90\8då\89\8dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯æ\97¢ã\81«å­\98å\9c¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82ç½®ã\81\8dæ\8f\9bã\81\88ã\82\8bã\81¹ã\81\8dã\81\8bã\81©ã\81\86ã\81\8b確信ã\81\8cã\82\82てない場合は、'''<tt>[[:$1]]</tt>'''を確認してください。
+'fileexists' => "ã\81\93ã\81®å\90\8då\89\8dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯æ\97¢ã\81«å­\98å\9c¨ã\81\97ã\81¾ã\81\99ã\80\82ç½®ã\81\8dæ\8f\9bã\81\88ã\81¦ã\81\84ã\81\84ã\81\8bã\81©ã\81\86ã\81\8b確信ã\81\8cæ\8c\81てない場合は、'''<tt>[[:$1]]</tt>'''を確認してください。
 [[$1|thumb]]",
 'filepageexists' => "このファイルのための説明ページは既に'''<tt>[[:$1]]</tt>'''に作成されていますが、現在、ファイルが存在していません。
 入力した概要は説明ページに反映されません。
@@ -1855,7 +1857,7 @@ HTMLタグを見直してください。',
 'uploadwarning' => 'アップロード警告',
 'uploadwarning-text' => '下記のファイル解説を修正して再試行してください。',
 'savefile' => 'ファイルを保存',
-'uploadedimage' => '「[[$1]]」をアップロードしました',
+'uploadedimage' => '「[[$1]]」をアップロードしました',
 'overwroteimage' => '「[[$1]]」の新しい版をアップロードしました',
 'uploaddisabled' => 'アップロード機能は無効になっています。',
 'copyuploaddisabled' => 'URLからのアップロードは無効になっています。',
@@ -1863,11 +1865,11 @@ HTMLタグを見直してください。',
 'uploaddisabledtext' => 'ファイルのアップロードは、無効になっています。',
 'php-uploaddisabledtext' => 'ファイルのアップロードがPHPで無効化されています。
 file_uploadsの設定を確認してください。',
-'uploadscripted' => 'ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ã\80\81ã\82¦ã\82§ã\83\96ã\83\96ã\83©ã\82¦ã\82¶ã\81\8c誤ã\81£ã\81¦è§£é\87\88ã\81\97ã\81¦ã\81\97ã\81¾ã\81\86ã\81\8aã\81\9dã\82\8cã\81®あるHTMLまたはスクリプトコードを含んでいます。',
+'uploadscripted' => 'ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯ã\80\81ã\82¦ã\82§ã\83\96ã\83\96ã\83©ã\82¦ã\82¶ã\83¼ã\81\8c誤ã\81£ã\81¦è§£é\87\88ã\81\97ã\81¦ã\81\97ã\81¾ã\81\86ã\81\8aã\81\9dã\82\8cã\81\8cあるHTMLまたはスクリプトコードを含んでいます。',
 'uploadvirus' => 'このファイルにはウイルスが含まれています!
 詳細:$1',
 'uploadjava' => 'このファイルは、Javaの.classファイルを含むZIPファイルです。
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81®å\88¶é\99\90ã\82\92å\9b\9eé\81¿ã\81\95ã\82\8cã\82\8bã\81\8aã\81\9dã\82\8cã\81\8cã\81\82ã\82\8bã\81\9fã\82\81ã\80\81Javaã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\99ã\82\8bã\81\93ã\81¨は許可されていません。',
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81®å\88¶é\99\90ã\82\92å\9b\9eé\81¿ã\81\95ã\82\8cã\82\8bã\81\8aã\81\9dã\82\8cã\81\8cã\81\82ã\82\8bã\81\9fã\82\81ã\80\81Javaã\83\95ã\82¡ã\82¤ã\83«ã\81®ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89は許可されていません。',
 'upload-source' => 'アップロード元ファイル',
 'sourcefilename' => 'アップロード元のファイル名:',
 'sourceurl' => 'アップロード元のURL:',
@@ -1881,9 +1883,9 @@ file_uploadsの設定を確認してください。',
 'filename-bad-prefix' => "アップロードしようとしているファイルの名前が'''「$1」'''から始まっていますが、これはデジタルカメラによって自動的に付与されるような具体性を欠いた名前です。
 ファイルの内容をより具体的に説明する名前を使用してください。",
 'filename-prefix-blacklist' => ' #<!-- この行はそのままにしておいてください --> <pre>
-# 構文は以下:
+# 構文は以下の通り:
 #   * "#" 記号から行末まではすべてがコメント
-#   * ç©ºã\81§ã\81ªã\81\84ã\81\99ã\81¹ã\81¦ã\81®è¡\8cã\81¯デジタルカメラによって自動的に付けられる典型的なファイル名の接頭辞
+#   * ç©ºã\81§ã\81¯ã\81ªã\81\84è¡\8cã\81¯ã\81\99ã\81¹ã\81¦デジタルカメラによって自動的に付けられる典型的なファイル名の接頭辞
 CIMG # カシオ
 DSC_ # ニコン
 DSCF # 富士フイルム
@@ -1923,7 +1925,7 @@ $1',
 'backend-fail-notexists' => 'ファイル $1 は存在しません。',
 'backend-fail-hashes' => 'ファイルの比較用のハッシュを取得できませんでした。',
 'backend-fail-notsame' => 'ファイル名 $1 は既に他のファイルが使用しています。',
-'backend-fail-invalidpath' => '$1 ã\81¯ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\91ã\82¹ã\81«ä½¿ç\94¨ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
+'backend-fail-invalidpath' => '$1 はストレージパスに使用できません。',
 'backend-fail-delete' => 'ファイル $1 を削除できませんでした。',
 'backend-fail-alreadyexists' => 'ファイル $1 は既に存在します。',
 'backend-fail-store' => 'ファイル $1 を $2 に格納できませんでした。',
@@ -1934,11 +1936,11 @@ $1',
 'backend-fail-closetemp' => '一時ファイルを閉じることができませんでした。',
 'backend-fail-read' => 'ファイル $1 を読み込めませんでした。',
 'backend-fail-create' => 'ファイル $1 に書き込めませんでした。',
-'backend-fail-maxsize' => '{{PLURAL:$2|$2 バイト}}よりも大きいため、ファイル「$1」に書き込めませんでした。',
-'backend-fail-readonly' => 'ストレージバックエンド「$1」は現在読み取り専用です。理由:「$2」',
-'backend-fail-synced' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\80\81ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89å\86\85é\83¨ã\81«ã\81\8aã\81\84ã\81¦ä¸\8dä¸\80è\87´ã\81®ç\8a¶æ\85\8bã\81«ã\81\82ã\82\8aã\81¾ã\81\99ã\80\82',
-'backend-fail-connect' => 'ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89ã\81«æ\8e¥ç¶\9aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\80\8c$1ã\80\8d',
-'backend-fail-internal' => 'ストレージバックエンド「$1」で原因不明のエラーが発生しました。',
+'backend-fail-maxsize' => 'サイズが {{PLURAL:$2|$2 バイト}}を超えているため、ファイル $1 に書き込めませんでした。',
+'backend-fail-readonly' => "ストレージバックエンド「$1」は現在読み取り専用です。理由:「''$2''」",
+'backend-fail-synced' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\80\81ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89å\86\85é\83¨ã\81§ä¸\8dä¸\80è\87´ã\81®ç\8a¶æ\85\8bã\81«ã\81\82ã\82\8aã\81¾ã\81\99',
+'backend-fail-connect' => 'ã\82¹ã\83\88ã\83¬ã\83¼ã\82¸ã\83\90ã\83\83ã\82¯ã\82¨ã\83³ã\83\89ã\80\8c$1ã\80\8dã\81«æ\8e¥ç¶\9aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82',
+'backend-fail-internal' => 'ストレージバックエンド「$1」内で不明なエラーが発生しました。',
 'backend-fail-contenttype' => '「$1」に保存するコンテンツの種類が判断できませんでした。',
 'backend-fail-batchsize' => 'ストレージバックエンドは $1 件のファイル{{PLURAL:$1|操作}}のバッチを与えられました; 上限は $2 件の{{PLURAL:$2|操作}}です。',
 
@@ -1947,9 +1949,9 @@ $1',
 'filejournal-fail-dbquery' => 'ストレージバックエンド「$1」のジャーナルデータベースを更新できません。',
 
 # Lock manager
-'lockmanager-notlocked' => 'ã\80\8c$1ã\80\8dã\82\92ã\82¢ã\83³ã\83­ã\83\83ã\82¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\83­ã\83\83ã\82¯ã\81¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
+'lockmanager-notlocked' => 'ã\80\8c$1ã\80\8dã\82\92ã\83­ã\83\83ã\82¯è§£é\99¤ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\81¾ã\81\9bã\82\93ã\80\82',
 'lockmanager-fail-closelock' => '「$1」用のロックファイルを閉じることができませんでした。',
-'lockmanager-fail-deletelock' => 'ã\80\8c$1ã\80\8dç\94¨ã\81®ã\83­ã\83\83ã\82¯ã\83\95ã\82¡ã\82¤ã\83«ã\82\92å\89\8aé\99¤ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82',
+'lockmanager-fail-deletelock' => '「$1」用のロックファイルを削除できませんでした。',
 'lockmanager-fail-acquirelock' => '「$1」用のロックを取得できませんでした。',
 'lockmanager-fail-openlock' => '「$1」用のロックファイルを開くことができませんでした。',
 'lockmanager-fail-releaselock' => '「$1」用のロックを解放できませんでした。',
@@ -1961,16 +1963,16 @@ $1',
 'zip-file-open-error' => 'ZIPのチェックを行った際にエラーが検出されました。',
 'zip-wrong-format' => '指定されたファイルはZIPファイルではありませんでした。',
 'zip-bad' => 'このファイルは破損しているか解読不能のZIPファイルです。
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81«ã\81¤ã\81\84ã\81¦é\81©å\88\87ã\81«æ¤\9cæ\9f»ã\81\99ã\82\8bã\81\93ã\81¨ができません。',
-'zip-unsupported' => 'ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯MediaWikiã\81§å\88©ç\94¨ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81ªã\81\84ZIPå½¢å¼\8fを使用したZIPファイルです。
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81«ã\81¤ã\81\84ã\81¦é\81©å\88\87ã\81«æ¤\9cæ\9f»ã\81\99ã\82\8bã\81\93ã\81¨ができません。',
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81«ã\81¤ã\81\84ã\81¦é\81©å\88\87ã\81ªæ¤\9cæ\9f»ができません。',
+'zip-unsupported' => 'ã\81\93ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯MediaWikiã\81\8cæ\9cªå¯¾å¿\9cã\81®ZIPæ©\9fè\83½を使用したZIPファイルです。
\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81«ã\81¤ã\81\84ã\81¦é\81©å\88\87ã\81ªæ¤\9cæ\9f»ができません。',
 
 # Special:UploadStash
 'uploadstash' => '未公開アップロード',
 'uploadstash-summary' => 'このページでは、アップロードされた、もしくはアップロード中の、ウィキ上でまだ公開されていないファイルを表示します。これらのファイルは、アップロードした利用者以外閲覧できません。',
 'uploadstash-clear' => '未公開ファイルを消去',
 'uploadstash-nofiles' => '未公開ファイルはありません。',
-'uploadstash-badtoken' => 'å®\9fè¡\8cã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ã\81\93ã\82\8cã\81¯ã\80\81ç·¨é\9b\86ã\81\99ã\82\8bã\81\9fã\82\81ã\81®èª\8d証ã\81\8cç\84¡å\8a¹ã\81«ã\81ªã\81£ã\81\9fã\81\9fã\82\81である可能性があります。再度お試しください。',
+'uploadstash-badtoken' => 'å®\9fè¡\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9fã\80\82ç·¨é\9b\86ã\81\99ã\82\8bã\81\9fã\82\81ã\81®èª\8d証ã\81\8cç\84¡å\8a¹ã\81«ã\81ªã\81£ã\81\9fã\81\93ã\81¨ã\81\8cå\8e\9få\9b である可能性があります。再度お試しください。',
 'uploadstash-errclear' => 'ファイルの消去に失敗しました。',
 'uploadstash-refresh' => 'ファイルの一覧を更新',
 'invalid-chunk-offset' => '不正なチャンクオフセット',
@@ -1980,19 +1982,19 @@ $1',
 'img-auth-nopathinfo' => 'PATH_INFO が見つかりません。
 サーバーが、この情報を渡すように構成されていません。
 CGI ベースであるため、img_auth に対応できない可能性もあります。
-https://www.mediawiki.org/wiki/Manual:Image_Authorization を参照してください。',
-'img-auth-notindir' => '要求されたパスは、設定済みのアップロード用ディレクトリーの中にありません。',
+https://www.mediawiki.org/wiki/Manual:Image_Authorization をご覧ください。',
+'img-auth-notindir' => '要求されたパスは、設定済みのアップロード用ディレクトリーにありません。',
 'img-auth-badtitle' => '「$1」からは有効なページ名を構築できません。',
 'img-auth-nologinnWL' => 'ログインしておらず、さらに「$1」はホワイトリストに入っていません。',
 'img-auth-nofile' => 'ファイル「$1」は存在しません。',
 'img-auth-isdir' => 'ディレクトリー「$1」にアクセスしようとしています。
 ファイルへのアクセスのみが許可されています。',
 'img-auth-streaming' => '「$1」を転送中。',
-'img-auth-public' => 'img_auth.phpの機能は非公開ウィキからファイルを出力することです。
+'img-auth-public' => 'img_auth.phpの機能は、非公開ウィキからのファイルの出力です。
 このウィキは公開ウィキとして構成されています。
\9c\80é\81©ã\81ªã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\83¼ã\81®ã\81\9fã\82\81ã\80\81img_auth.phpã\81¯ç\84¡å\8a¹å\8c\96ã\81\95ã\82\8cています。',
\9c\80é\81©ã\81ªã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\81®ã\81\9fã\82\81ã\80\81img_auth.phpã\82\92ç\84¡å\8a¹ã\81«ã\81\97ています。',
 'img-auth-noread' => '利用者は「$1」の読み取り権限を持っていません。',
-'img-auth-bad-query-string' => 'URLの中に無効なクエリ文字列があります。',
+'img-auth-bad-query-string' => 'URLの中に無効なクエリ文字列があります。',
 
 # HTTP errors
 'http-invalid-url' => '無効なURL:$1',
@@ -2059,7 +2061,7 @@ URLが正しいものであり、ウェブサイトが稼働していること
 'nolinkstoimage' => 'このファイルへリンクしているページはありません。',
 'morelinkstoimage' => 'このファイルへの[[Special:WhatLinksHere/$1|リンク元を更に]]を表示する。',
 'linkstoimage-redirect' => '$1 (リダイレクト) $2',
-'duplicatesoffile' => '以下の$1ファイルが、このファイルと内容が同一です([[Special:FileDuplicateSearch/$2|詳細]]):',
+'duplicatesoffile' => '以下の $1 {{PLURAL:$1|ファイル}}が、このファイルと重複しています([[Special:FileDuplicateSearch/$2|詳細]]):',
 'sharedupload' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。',
 'sharedupload-desc-there' => 'このファイルは$1のものであり、他のプロジェクトで使用されている可能性があります。
 詳細は[$2 ファイル解説ページ]を参照してください。',
@@ -2070,7 +2072,7 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 'sharedupload-desc-create' => 'このファイルは$1から来ており、他のプロジェクトで使用されている可能性があります。
 $1での[$2 ファイル解説ページ]にある説明を編集したほうがいいかもしれません。',
 'filepage-nofile' => 'この名前のファイルは存在しません。',
-'filepage-nofile-link' => 'ã\81\93ã\81®å\90\8då\89\8dã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¯å­\98å\9c¨ã\81\97ã\81¾ã\81\9bã\82\93ã\81\8cã\80\81[$1 ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82',
+'filepage-nofile-link' => 'この名前のファイルは存在しませんが、[$1 アップロード]できます。',
 'uploadnewversion-linktext' => 'このファイルの新しい版をアップロードする',
 'shared-repo-from' => '$1 より',
 'shared-repo' => '共有リポジトリ',
@@ -2084,7 +2086,7 @@ $1での[$2 ファイル解説ページ]にある説明を編集したほうが
 'filerevert-comment' => '理由:',
 'filerevert-defaultcomment' => '$1$2の版へ差し戻し',
 'filerevert-submit' => '差し戻す',
-'filerevert-success' => "'''[[Media:$1|$1]]'''は[$4  $2$3の版]に差し戻されました。",
+'filerevert-success' => "'''[[Media:$1|$1]]'''は[$4 $2$3の版]に差し戻されました。",
 'filerevert-badversion' => 'このファイルに指定された時刻印を持つ過去の版はありません。',
 
 # File deletion
@@ -2143,9 +2145,9 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'statistics-header-hooks' => 'その他の統計',
 'statistics-articles' => '記事数',
 'statistics-pages' => '総ページ数',
-'statistics-pages-desc' => 'ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\82\84ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81ªã\81©ã\82\92å\90«ã\82\93ã\81 ã\81\93ã\81®ã\82¦ã\82£ã\82­å\86\85ã\81®すべてのページです。',
+'statistics-pages-desc' => 'ã\82¦ã\82£ã\82­å\86\85ã\81®ã\80\81ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\80\81ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81ªã\81©ã\82\92å\90«ã\82\80すべてのページです。',
 'statistics-files' => 'アップロードされたファイル数',
-'statistics-edits' => '{{SITENAME}}ã\81\8cé\96\8b設ã\81\95ã\82\8cã\81¦ã\81\8bã\82\89の編集回数の総計',
+'statistics-edits' => '{{SITENAME}}ã\81®é\96\8b設以é\99\8dの編集回数の総計',
 'statistics-edits-average' => '1ページあたりの編集回数',
 'statistics-views-total' => '総閲覧回数',
 'statistics-views-total-desc' => '存在しないページと特別ページに対する閲覧は含まれていません',
@@ -2203,7 +2205,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'popularpages' => '人気のページ',
 'wantedcategories' => 'カテゴリページが存在しないカテゴリ',
 'wantedpages' => 'ページが存在しないリンク',
-'wantedpages-badtitle' => '結果に不正なページ名が含まれています:$1',
+'wantedpages-badtitle' => '結果に正しくないページ名が含まれています:$1',
 'wantedfiles' => 'ファイル情報ページが存在しないファイル',
 'wantedfiletext-cat' => '以下のファイルは使用されていますが存在しません。外部リポジトリ由来のファイルは、存在していてもここに列挙される場合があります。その場合は<del>取り消し線</del>が付きます。さらに、存在しないファイルを埋め込んでいるページは[[:$1]]に列挙されます。',
 'wantedfiletext-nocat' => '以下のファイルは使用されていますが存在しません。外部リポジトリ由来のファイルは、存在していてもここに列挙される場合があります。その場合は<del>取り消し線</del>が付きます。',
@@ -2230,7 +2232,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'protectedtitlesempty' => 'これらの引数で現在保護されているページはありません。',
 'listusers' => '利用者の一覧',
 'listusers-editsonly' => '投稿記録のある利用者のみを表示',
-'listusers-creationsort' => '作成日順に整列',
+'listusers-creationsort' => '作成日順に並べ替え',
 'usereditcount' => '$1{{PLURAL:$1|回の編集}}',
 'usercreated' => '$1 $2 に{{GENDER:$3|作成}}',
 'newpages' => '新しいページ',
@@ -2239,14 +2241,14 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'move' => '移動',
 'movethispage' => 'このページを移動',
 'unusedimagestext' => '以下のファイルは存在していますが、どのページにも埋め込まれていません。
-ただし、他のウェブサイトが直接URLでファイルにリンクすることがあることに注意してください。以下のファイル一覧には、そのような形で利用中のファイルが含まれていることがあります。',
+ただし、他のウェブサイトがURLでファイルに直接リンクする場合があることに注意してください。以下のファイル一覧には、そのような形で利用中のファイルが含まれている場合があります。',
 'unusedcategoriestext' => '以下のカテゴリはページが存在しますが、他のどのページおよびカテゴリでも使用されていません。',
 'notargettitle' => '対象が存在しません',
 'notargettext' => 'この機能の実行対象となるページまたは利用者が指定されていません。',
 'nopagetitle' => 'そのようなページはありません',
 'nopagetext' => '指定したページは存在しません。',
-'pager-newer-n' => '以後の$1件',
-'pager-older-n' => '以前の$1件',
+'pager-newer-n' => '{{PLURAL:$1|以後の$1件}}',
+'pager-older-n' => '{{PLURAL:$1|以前の$1件}}',
 'suppress' => '秘匿する',
 'querypage-disabled' => 'パフォーマンスに悪影響を与えるおそれがあるため、この特別ページは無効になっています。',
 
@@ -2297,8 +2299,8 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 [[Special:UnusedCategories|未使用のカテゴリ]]はここには表示していません。
 [[Special:WantedCategories|望まれるカテゴリ]]も参照してください。',
 'categoriesfrom' => '最初に表示するカテゴリ:',
-'special-categories-sort-count' => '項目数順',
-'special-categories-sort-abc' => 'アルファベット順',
+'special-categories-sort-count' => '項目数順に並べ替え',
+'special-categories-sort-abc' => '辞書順に並べ替え',
 
 # Special:DeletedContributions
 'deletedcontributions' => '利用者の削除された投稿',
@@ -2310,8 +2312,8 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'linksearch-pat' => '検索パターン:',
 'linksearch-ns' => '名前空間:',
 'linksearch-ok' => '検索',
-'linksearch-text' => '"*.wikipedia.org" のようにワイルドカードを使うことができます。
-少なくとも"*.org" のようなトップレベルドメインが必要です。<br />
+'linksearch-text' => '"*.wikipedia.org" のようにワイルドカードを使できます。
+少なくとも "*.org" のようなトップレベルドメインが必要です。<br />
 対応プロトコル: <tt>$1</tt> (これらを検索に含めないでください)。',
 'linksearch-line' => '$1 が $2 からリンクされています',
 'linksearch-error' => 'ワイルドカードはホスト名の先頭でのみ使用できます。',
@@ -2360,11 +2362,11 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'emailuser' => 'この利用者にメールを送信',
 'emailpage' => '利用者にメールを送信',
 'emailpagetext' => '以下のフォームを使用してこの利用者にメールを送信できます。
-[[Special:Preferences|利用者の個人設定]]で入力したメール アドレスが「差出人」に設定され、受信者があなたに直接返信できるようになります。',
+「差出人」として、[[Special:Preferences|利用者の個人設定]]で入力したメールアドレスが設定されます。これにより、受信者があなたに直接返信できるようになります。',
 'usermailererror' => 'メールが以下のエラーを返しました:',
 'defemailsubject' => '{{SITENAME}} 利用者「$1」からのメール',
 'usermaildisabled' => '利用者メール機能は無効になっています',
-'usermaildisabledtext' => 'このウィキ上で他の利用者へメールを送ることはできません。',
+'usermaildisabledtext' => 'このウィキでは他の利用者にメールを送信できません',
 'noemailtitle' => 'メールアドレスがありません',
 'noemailtext' => 'この利用者は有効なメールアドレスを登録していません。',
 'nowikiemailtitle' => 'メールは許可されていません',
@@ -2398,7 +2400,7 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'watchnologin' => 'ログインしていません',
 'watchnologintext' => 'ウォッチリストを変更するためには、[[Special:UserLogin|ログイン]]している必要があります。',
 'addwatch' => 'ウォッチリストに追加',
-'addedwatchtext' => "ページ 「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。
+'addedwatchtext' => "ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]に追加しました。
 このページと付属のトークページに変更があった際には、ウォッチリストに表示されます。また、ウォッチリストに登録されているページは[[Special:RecentChanges|最近の更新の一覧]]に'''太字'''で表示され、見つけやすくなります。",
 'removewatch' => 'ウォッチリストから除去',
 'removedwatchtext' => 'ページ「[[:$1]]」を[[Special:Watchlist|ウォッチリスト]]から除去しました。',
@@ -2409,13 +2411,13 @@ contenttype/subtypeの形式で指定してください(例:<tt>image/jpeg</
 'notanarticle' => '記事ではありません',
 'notvisiblerev' => '別の利用者による最終版は削除されました',
 'watchnochange' => 'ウォッチリストに登録しているページで、指定期間内に編集されたものはありません。',
-'watchlist-details' => 'ウォッチリストには$1ページが登録されています(トークページは数えません)。',
+'watchlist-details' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています(トークページを除く)。',
 'wlheader-enotif' => '* メール通知が有効になっています',
 'wlheader-showupdated' => "* 最後に訪問したあとに変更されたページは、'''太字'''で表示されます",
 'watchmethod-recent' => '最近の更新内のウォッチされているページを確認中',
 'watchmethod-list' => 'ウォッチされているページ内の最近の更新を確認中',
-'watchlistcontains' => 'ウォッチリストには、$1ページが登録されています。',
-'iteminvalidname' => 'é \85ç\9b®ã\80\8c$1ã\80\8dã\81¯å\95\8fé¡\8cã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\81å\90\8då\89\8dã\81\8cä¸\8dæ­£ã\81§ã\81\99。',
+'watchlistcontains' => 'ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています。',
+'iteminvalidname' => 'é \85ç\9b®ã\80\8c$1ã\80\8dã\81«ã\81¯å\95\8fé¡\8cã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\81å\90\8då\89\8dã\81\8cæ­£ã\81\97ã\81\8fã\81\82ã\82\8aã\81¾ã\81\9bã\82\93。',
 'wlnote' => "$3 $4 までの{{PLURAL:$2|'''$2'''時間}}になされた{{PLURAL:$1|'''$1'''件の変更}}は以下の通りです。",
 'wlshowlast' => '次の期間で表示:$1時間、$2日間、$3',
 'watchlist-options' => 'ウォッチリストのオプション',
@@ -2443,23 +2445,23 @@ $NEWPAGE
 
 編集内容の要約:$PAGESUMMARY($PAGEMINOREDIT)
 
\8a\95稿è\80\85ã\81«é\80£çµ¡
\8a\95稿è\80\85ã\81®é\80£çµ¡å\85\88
 メール:$PAGEEDITOR_EMAIL
 ウィキ:$PAGEEDITOR_WIKI
 
 このページを訪れない限り、これ以上の変更に対する通知は送信されません。
-ウォッチリストからすべての通知を再設定することもできます。
+ウォッチリスト内のすべてのページについて、通知を再設定することもできます。
 
                          {{SITENAME}}通知システム
 
 --
-メール通知の設定は、次のページから変更してください。
+メール通知の設定は、以下のページで変更してください:
 {{canonicalurl:{{#special:Preferences}}}}
 
-ウォッチリストの設定は、次のページから変更して下さい。
+ウォッチリストの設定は、以下のページで変更してください:
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-このページは、次のページでウォッチリストから除去することが出来ます。
+このページは、以下のページでウォッチリストから削除できます:
 $UNWATCHURL
 
 ご意見、お問い合わせ:
@@ -2492,10 +2494,10 @@ $UNWATCHURL
 ** 投稿者依頼
 ** 著作権侵害
 ** 荒らし',
-'delete-edit-reasonlist' => '削除理由を編集する',
-'delete-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81$1ç\89\88ã\82\88ã\82\8aå¤\9aã\81\84編集履歴があります。
+'delete-edit-reasonlist' => '削除理由を編集',
+'delete-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81$1ç\89\88ã\82\92è¶\85ã\81\88ã\82\8b編集履歴があります。
 このようなページの削除は、{{SITENAME}}の偶発的な問題を避けるため、制限されています。',
-'delete-warning-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81 $1ç\89\88ã\82\88ã\82\8aå¤\9aã\81\84編集履歴があります。
+'delete-warning-toobig' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81«ã\81¯ã\80\81 $1ç\89\88ã\82\92è¶\85ã\81\88ã\82\8b編集履歴があります。
 削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。
 十分に注意してください。',
 
@@ -2534,15 +2536,15 @@ $2による直前の版へ変更されました。',
 'protect-title-notallowed' => '「$1」の保護レベルを表示',
 'prot_1movedto2' => '[[$1]] を [[$2]] へ移動',
 'protect-badnamespace-title' => '保護不可能な名前空間',
-'protect-badnamespace-text' => 'ã\81\93ã\81®å\90\8då\89\8d空é\96\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ä¿\9dè­·ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
+'protect-badnamespace-text' => 'この名前空間のページは保護できません。',
 'protect-legend' => '保護の確認',
 'protectcomment' => '理由:',
 'protectexpiry' => '有効期限:',
-'protect_expiry_invalid' => '有効期間が不正です。',
+'protect_expiry_invalid' => '有効期間が正しくありません。',
 'protect_expiry_old' => '有効期限が過去の時刻です。',
 'protect-unchain-permissions' => '追加保護オプションをロック解除',
 'protect-text' => "ページ「'''$1'''」に対する保護レベルの表示と操作ができます。",
-'protect-locked-blocked' => "ブロックは、保護レベルを変更できません。
+'protect-locked-blocked' => "ブロックされている間は、保護レベルを変更できません。
 ページ「'''$1'''」の現在の状態は以下の通りです:",
 'protect-locked-dblock' => "データベースのロックが有効なため、保護レベルを変更できません。
 ページ「'''$1'''」の現在の状態は以下の通りです:",
@@ -2570,7 +2572,7 @@ $2による直前の版へ変更されました。',
 ** 度重なるスパム投稿
 ** 非生産的な編集合戦
 ** 高負荷ページ',
-'protect-edit-reasonlist' => '保護理由を編集する',
+'protect-edit-reasonlist' => '保護理由を編集',
 'protect-expiry-options' => '1時間:1 hour,1日:1 day,1週間:1 week,2週間:2 weeks,1か月:1 month,3か月:3 months,6か月:6 months,1年:1 year,無期限:infinite',
 'restriction-type' => '許可:',
 'restriction-level' => '制限レベル:',
@@ -2592,14 +2594,14 @@ $2による直前の版へ変更されました。',
 # Undelete
 'undelete' => '削除されたページを表示',
 'undeletepage' => '削除されたページの表示と復元',
-'undeletepagetitle' => "'''以下は、[[:$1]]の削除された版です'''。",
+'undeletepagetitle' => "'''以下は、[[:$1|$1]]の削除された版です'''。",
 'viewdeletedpage' => '削除されたページを表示',
-'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ|削除されたページ群}}は、保存版に残っているため復元できます。
+'undeletepagetext' => '以下の{{PLURAL:$1|削除されたページ|&#32;$1 件の削除されたページ}}は、保存版に残っているため復元できます。
 保存版は定期的に消去される可能性があります。',
 'undelete-fieldset-title' => '削除された版の復元',
 'undeleteextrahelp' => "すべての版を復元する場合は、どのボックスにもチェックを入れていない状態で'''''{{int:undeletebtn}}'''''をクリックしてください。
 特定の版を復帰する場合は、復帰する版のボックスにチェックを入れた状態で'''''{{int:undeletebtn}}'''''をクリックしてください。",
-'undeleterevisions' => '$1版が保存されています',
+'undeleterevisions' => '保存版に$1{{PLURAL:$1|版}}あります',
 'undeletehistory' => 'ページの復帰を行うと、すべての版が履歴に復帰します。
 削除されたあとに同じ名前で新しくページが作成されていた場合、復帰した版はそれに先行する履歴として現れます。',
 'undeleterevdel' => '復帰した結果、版指定削除されているページまたはファイルの版が最新となる場合、復帰は実行されません。
@@ -2617,11 +2619,11 @@ $2による直前の版へ変更されました。',
 'undeletereset' => 'リセット',
 'undeleteinvert' => '選択を反転',
 'undeletecomment' => '理由:',
-'undeletedrevisions' => '$1版を復元しました',
-'undeletedrevisions-files' => '$1版と$2ファイルを復元しました',
-'undeletedfiles' => '$1ファイルを復帰しました',
+'undeletedrevisions' => '{{PLURAL:$1|$1版}}を復元しました',
+'undeletedrevisions-files' => '{{PLURAL:$1|$1版}}と{{PLURAL:$2|$2ファイル}}を復元しました',
+'undeletedfiles' => '{{PLURAL:$1|$1ファイル}}を復帰しました',
 'cannotundelete' => '復帰に失敗しました。
-誰かが、既にこのページを復帰した可能性があります。',
+他の誰かがこのページを既に復帰した可能性があります。',
 'undeletedpage' => "'''$1を復元しました。'''
 
 最近の削除と復帰の記録については[[Special:Log/delete|削除記録]]を参照してください。",
@@ -2634,7 +2636,7 @@ $2による直前の版へ変更されました。',
 'undelete-filename-mismatch' => 'ファイルの時刻印$1の版を復帰できません:ファイル名が一致しません。',
 'undelete-bad-store-key' => 'ファイルの時刻印$1の版を復帰できません:削除前にファイルが失われています。',
 'undelete-cleanup-error' => '未使用の保存版のファイル「$1」の削除中にエラーが発生しました。',
-'undelete-missing-filearchive' => 'データベースに存在しないため、ID$1を持つファイルの保存版を復元できません。
+'undelete-missing-filearchive' => 'データベースに存在しないため、ID $1を持つファイルの保存版を復元できません。
 既に復帰されている可能性があります。',
 'undelete-error' => 'ページの復帰エラー',
 'undelete-error-short' => 'ファイルの復帰エラー:$1',
@@ -2647,7 +2649,7 @@ $1',
 # Namespace form on various pages
 'namespace' => '名前空間:',
 'invert' => '選択したものを除く',
-'tooltip-invert' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ï¼\88ã\83\81ã\82§ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9få\90\8då\89\8d空é\96\93ã\82\82ï¼\89ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¤\89æ\9b´ã\82\92é\9d\9e表示ã\81«ã\81\99ã\82\8bã\81«ã\81¯ã\80\81ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\81¾ã\81\99ã\80\82',
+'tooltip-invert' => 'é\81¸æ\8a\9eã\81\97ã\81\9få\90\8då\89\8d空é\96\93ï¼\88ã\83\81ã\82§ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\81¯ã\80\81é\96¢é\80£ä»\98ã\81\91ã\82\89ã\82\8cã\81\9få\90\8då\89\8d空é\96\93ã\82\82ï¼\89ã\81®ã\83\9aã\83¼ã\82¸ã\81®å¤\89æ\9b´ã\82\92é\9d\9e表示ã\81«ã\81\99ã\82\8bã\81«ã\81¯ã\80\81ã\81\93ã\81®ã\83\9cã\83\83ã\82¯ã\82¹ã\81«ã\83\81ã\82§ã\83\83ã\82¯ã\82\92å\85¥ã\82\8cã\82\8b',
 'namespace_association' => '対応付けられた名前空間',
 'tooltip-namespace_association' => '選択した名前空間に関連付けられているトークページまたは対象の名前空間も含めるには、このボックスにチェックを入れる',
 'blanknamespace' => '(標準)',
@@ -2706,7 +2708,7 @@ $1',
 'blockip' => '利用者をブロック',
 'blockip-title' => '利用者のブロック',
 'blockip-legend' => '利用者をブロック',
-'blockiptext' => '以ä¸\8bã\81®ã\83\95ã\82©ã\83¼ã\83 ã\82\92使ç\94¨ã\81\97ã\81¦ã\80\81æ\8c\87å®\9aã\81\97ã\81\9få\88©ç\94¨è\80\85ã\82\84IPã\82¢ã\83\89ã\83¬ã\82¹ã\81\8bã\82\89ã\81®æ\9b¸ã\81\8dè¾¼ã\81¿ã\82¢ã\82¯ã\82»ã\82¹ã\82\92ã\83\96ã\83­ã\83\83ã\82¯ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82
+'blockiptext' => '以下のフォームを使用して、指定した利用者やIPアドレスからの書き込みアクセスをブロックできます。
 このような措置は、荒らしからの防御のためにのみ行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。
 以下にブロックの理由を具体的に書いてください(例えば、荒らされたページへの言及など)。',
 'ipadressorusername' => 'IPアドレスまたは利用者名:',
@@ -2732,18 +2734,18 @@ $1',
 'ipbotherreason' => '他の、または追加の理由:',
 'ipbhidename' => '利用者名を編集履歴や各種一覧から秘匿する',
 'ipbwatchuser' => 'この利用者の利用者ページとトークページをウォッチする',
-'ipb-disableusertalk' => 'この利用者がブロックに自分のトークページを編集するのを不許可',
+'ipb-disableusertalk' => 'この利用者がブロックされている間に自分のトークページを編集するのを不許可',
 'ipb-change-block' => 'これらの設定で、利用者を再びブロック',
 'ipb-confirm' => 'ブロックの確認',
 'badipaddress' => '不正なIPアドレス',
 'blockipsuccesssub' => 'ブロックしました',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]をブロックしました。<br />
 [[Special:BlockList|ブロックの一覧]]を参照してください。',
-'ipb-blockingself' => '自分自身をブロックしようとしています本当に実行しますか?',
+'ipb-blockingself' => '自分自身をブロックしようとしています本当に実行しますか?',
 'ipb-confirmhideuser' => '秘匿が有効になっている利用者をブロックしようとしています。実行すると、すべてのリストやログでこの利用者名が表示されません。本当に実行しますか?',
-'ipb-edit-dropdown' => 'ブロック理由を編集する',
+'ipb-edit-dropdown' => 'ブロック理由を編集',
 'ipb-unblock-addr' => '$1のブロックを解除',
-'ipb-unblock' => '利用者またはIPアドレスのブロックを解除する',
+'ipb-unblock' => '利用者またはIPアドレスのブロックを解除',
 'ipb-blocklist' => '現在有効なブロックを表示',
 'ipb-blocklist-contribs' => '$1の投稿の一覧',
 'unblockip' => 'ブロックを解除',
@@ -2752,9 +2754,9 @@ $1',
 'unblocked' => '[[User:$1|$1]]のブロックを解除しました',
 'unblocked-range' => '$1のブロックは解除されています',
 'unblocked-id' => 'ブロック$1は除去されました',
-'blocklist' => 'ブロック中の利用者',
-'ipblocklist' => 'ã\83\96ã\83­ã\83\83ã\82¯ã\82\92å\8f\97ã\81\91ている利用者',
-'ipblocklist-legend' => 'ブロック中の利用者を検索',
+'blocklist' => 'ブロックされている利用者',
+'ipblocklist' => 'ã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cている利用者',
+'ipblocklist-legend' => 'ブロックされている利用者を検索',
 'blocklist-userblocks' => 'アカウントのブロックを非表示',
 'blocklist-tempblocks' => '有期ブロックを非表示',
 'blocklist-addressblocks' => '単一IPのブロックを非表示',
@@ -2763,7 +2765,7 @@ $1',
 'blocklist-target' => '対象',
 'blocklist-expiry' => '期限',
 'blocklist-by' => 'ブロックした管理者',
-'blocklist-params' => 'ブロックのパラメータ',
+'blocklist-params' => 'ブロックのパラメータ',
 'blocklist-reason' => '理由',
 'ipblocklist-submit' => '検索',
 'ipblocklist-localblock' => 'ローカルでのブロック',
@@ -2778,19 +2780,19 @@ $1',
 'ipblocklist-empty' => 'ブロック一覧は空です。',
 'ipblocklist-no-results' => '指定されたIPアドレスまたは利用者名はブロックされていません。',
 'blocklink' => 'ブロック',
-'unblocklink' => 'ブロック解除',
+'unblocklink' => 'ブロック解除',
 'change-blocklink' => '設定を変更',
 'contribslink' => '投稿記録',
 'emaillink' => 'メールを送信',
-'autoblocker' => '使用中のIPアドレスが「[[User:$1|$1]]」に使用されたため、自動ブロックされています。
-$1のブロックの理由は「$2」です。',
+'autoblocker' => "ご使用中のIPアドレスが「[[User:$1|$1]]」に使用されたため、自動ブロックされています。
+$1のブロックの理由は「''$2''」です。",
 'blocklogpage' => 'ブロック記録',
 'blocklog-showlog' => 'この利用者は以前にブロックされたことがあります。
 参考のため、ブロックの記録を以下に示します:',
 'blocklog-showsuppresslog' => 'この利用者は以前にブロックされ、隠されたことがあります。
 参考のため、秘匿記録を以下に示します:',
-'blocklogentry' => '[[$1]] を$2ブロックしました。ブロックの詳細$3',
-'reblock-logentry' => '[[$1]]ブロック設定を$2に変更しました。ブロックの詳細$3',
+'blocklogentry' => ' が [[$1]] を$2ブロックしました。ブロックの詳細:$3',
+'reblock-logentry' => ' が [[$1]] のブロック設定を$2に変更しました。ブロックの詳細:$3',
 'blocklogtext' => 'このページは利用者のブロックと解除の記録です。
 自動的にブロックされたIPアドレスは表示されていません。
 現時点で有効なブロックは[[Special:BlockList|ブロックの一覧]]をご覧ください。',
@@ -2810,25 +2812,24 @@ $1のブロックの理由は「$2」です。',
 'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
 'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
 'unblock-hideuser' => '利用者名が隠されているため、この利用者のブロックを解除できません。',
-'ipb_cant_unblock' => 'エラー:ブロック ID $1 がありません。
-ブロックが既に解除されている可能性があります。',
-'ipb_blocked_as_range' => 'エラー:IPアドレス$1は直接ブロックされておらず、ブロックを解除できませんでした。
-ただし、$2の範囲でブロックされており、こちらの設定を変更することでブロック解除できます。',
+'ipb_cant_unblock' => 'エラー:ブロック ID $1 はありません。ブロックが既に解除されている可能性があります。',
+'ipb_blocked_as_range' => 'エラー:IPアドレス$1は直接ブロックされておらず、ブロック解除できませんでした。
+ただし、$2の範囲でブロックされており、こちらのブロックは別途解除できます。',
 'ip_range_invalid' => '不正なIP範囲です。',
 'ip_range_toolarge' => '/$1よりサイズの広い範囲ブロックは許可されていません。',
 'blockme' => '自分をブロック',
 'proxyblocker' => 'プロキシブロック係',
 'proxyblocker-disabled' => 'この機能は無効になっています。',
-'proxyblockreason' => '使用中のIPアドレスは公開プロキシであるため投稿ブロックされています。
-使ç\94¨ä¸­ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\8dã\83\83ã\83\88ã\82µã\83¼ã\83\93ã\82¹ã\83\97ã\83­ã\83\90ã\82¤ã\83\80ã\83¼ã\80\81ã\82\82ã\81\97ã\81\8fã\81¯æ\89\80å±\9eçµ\84ç¹\94ã\81®æ\8a\80è¡\93æ\8b\85å½\93è\80\85ã\81«é\80£çµ¡ã\82\92å\8f\96ã\82\8aã\80\81ã\81\93ã\82\8cã\81\8cæ·±å\88»ã\81ªã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£ã\83¼問題であることを伝えてください。',
+'proxyblockreason' => '使用中のIPアドレスは公開プロキシであるため投稿ブロックされています。
+使ç\94¨ä¸­ã\81®ã\82¤ã\83³ã\82¿ã\83¼ã\83\8dã\83\83ã\83\88ã\82µã\83¼ã\83\93ã\82¹ã\83\97ã\83­ã\83\90ã\82¤ã\83\80ã\83¼ã\80\81ã\81¾ã\81\9fã\81¯æ\89\80å±\9eçµ\84ç¹\94ã\81®æ\8a\80è¡\93æ\8b\85å½\93è\80\85ã\81«é\80£çµ¡ã\81\97ã\81¦ã\80\81ã\81\93ã\82\8cã\81\8cæ·±å\88»ã\81ªã\82»ã\82­ã\83¥ã\83ªã\83\86ã\82£問題であることを伝えてください。',
 'proxyblocksuccess' => '完了。',
-'sorbsreason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。',
-'sorbs_create_account_reason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。
-アカウントは作成できません',
-'cant-block-while-blocked' => 'ブロックは、他の利用者をブロックできません。',
+'sorbsreason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。',
+'sorbs_create_account_reason' => '使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。
+アカウント作成はできません',
+'cant-block-while-blocked' => 'ブロックされている間は、他の利用者をブロックできません。',
 'cant-see-hidden-user' => '投稿ブロックしようとした利用者は、既にブロックされ隠されています。
 hideuser権限を持っていないため、この利用者のブロックを閲覧または編集できません。',
-'ipbblocked' => '自分をブロックしているため、他の利用者のブロックやブロック解除はできません',
+'ipbblocked' => '自分自身をブロックしているため、他の利用者のブロックやブロック解除はできません',
 'ipbnounblockself' => '自分自身のブロックは解除できません',
 
 # Developer tools
@@ -2838,7 +2839,7 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 本当にデータベースをロックしていいかどうか確認し、メンテナンスが終了したらロックを解除してください。',
 'unlockdbtext' => 'データベースのロックを解除すると、すべての利用者がページの編集や、個人設定の変更、ウォッチリストの編集、その他データベースでの変更を要求する作業ができるようになります。
 本当にデータベースのロックを解除していいかどうか確認してください。',
-'lockconfirm' => 'æ\9c¬å½\93ã\81«ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92ã\83­ã\83\83ã\82¯ã\81\99ã\82\8b。',
+'lockconfirm' => 'æ\9c¬å½\93ã\81«ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹ã\82\92ã\83­ã\83\83ã\82¯ã\81\97ã\81¾ã\81\99。',
 'unlockconfirm' => '本当にデータベースのロックを解除します。',
 'lockbtn' => 'データベースをロック',
 'unlockbtn' => 'データベースのロックを解除',
@@ -2858,8 +2859,8 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'move-page-legend' => 'ページの移動',
 'movepagetext' => "下のフォームを利用すると、ページ名が変更され、その履歴も変更先へ移動します。
 古いページは変更先へのリダイレクトページとなります。
-å¤\89æ\9b´å\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88ã\81¯è\87ªå\8b\95ç\9a\84ã\81«ä¿®æ­£ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82
-自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。リンクを正しく維持するのはあなたの責任です。
+変更前のページへのリダイレクトは自動的に修正できます。
+自動的な修正を選択しない場合は、[[Special:DoubleRedirects|二重リダイレクト]]や[[Special:BrokenRedirects|迷子のリダイレクト]]を確認する必要があります。リンクを正しく維持するのは移動した人の責任です。
 
 移動先が既に存在する場合は、そのページが空またはリダイレクトで、かつ過去の版を持たない場合を除いて移動'''できません'''。つまり、間違えてページ名を変更した場合には元に戻せます。また移動によって既存のページを上書きしてしまうことはありません。
 
@@ -2876,13 +2877,13 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 '''警告!'''
 多く閲覧されたりリンクされているページを移動すると、予期せぬ大きな変化が起こるかもしれません。
 ページの移動に伴う影響をよく考えてから移動してください。",
-'movepagetalktext' => '関連付けられたトークページは、自動的に一緒に移動されます。ただしこれは、以下の場合を除きます
-* 空でないトークページが新しい名前で存在する場合
+'movepagetalktext' => '関連付けられたトークページは、自動的に一緒に移動されます。ただしこれは、以下の場合を除きます
+* ç©ºã\81§ã\81¯ã\81ªã\81\84ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8cæ\96°ã\81\97ã\81\84å\90\8då\89\8dã\81§å­\98å\9c¨ã\81\99ã\82\8bå ´å\90\88
 * 下のボックスのチェックを消した場合
 
 これらの場合、必要に応じて、トークページを移動または統合する必要があります。',
 'movearticle' => '移動するページ:',
-'moveuserpage-warning' => "'''è­¦å\91\8aï¼\9a'''å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82移å\8b\95ã\82\92è¡\8cã\81£ã\81\9få ´å\90\88ã\80\81ã\83\9aã\83¼ã\82¸ã\81 ã\81\91が移動され、利用者名は''変更されない''点に注意してください。",
+'moveuserpage-warning' => "'''è­¦å\91\8aï¼\9a'''å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\97ã\82\88ã\81\86ã\81¨ã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82移å\8b\95ã\81\97ã\81\9få ´å\90\88ã\80\81ã\83\9aã\83¼ã\82¸ã\81®ã\81¿が移動され、利用者名は''変更されない''点に注意してください。",
 'movenologin' => 'ログインしていません',
 'movenologintext' => 'ページを移動するためには、登録利用者でありかつ、[[Special:UserLogin|ログイン]]している必要があります。',
 'movenotallowed' => 'ページを移動する権限がありません。',
@@ -2898,7 +2899,7 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'movepage-moved-noredirect' => 'リダイレクトは作成されませんでした。',
 'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。
 別の名前を選択してください。',
-'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません',
+'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません',
 'talkexists' => "'''ページ自身は無事に移動されましたが、トークページは移動先のページが存在したため移動できませんでした。
 手動で統合してください。'''",
 'movedto' => '移動先:',
@@ -2923,22 +2924,22 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'delete_and_move_confirm' => 'はい、ページを削除します',
 'delete_and_move_reason' => '「[[$1]]」からの移動のために削除',
 'selfmove' => '移動元と移動先のページ名が同じです。
\87ªå\88\86è\87ªèº«ã\81¸は移動できません。',
-'immobile-source-namespace' => '$1名前空間のページを移動させることはできません。',
-'immobile-target-namespace' => 'ã\80\8c$1ã\80\8då\90\8då\89\8d空é\96\93ã\81¸ã\81¯ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81\95ã\81\9bã\82\8bã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
-'immobile-target-namespace-iw' => 'ウィキ間リンクは、ページの移動では不正な対象です。',
\87ªå\88\86è\87ªèº«ã\81«は移動できません。',
+'immobile-source-namespace' => '「$1」名前空間のページは移動できません',
+'immobile-target-namespace' => 'ã\80\8c$1ã\80\8då\90\8då\89\8d空é\96\93ã\81«ã\81¯ã\83\9aã\83¼ã\82¸ã\82\92移å\8b\95ã\81§ã\81\8dã\81¾ã\81\9bã\82\93',
+'immobile-target-namespace-iw' => 'ウィキ間リンクは、ページの移動先には指定できません。',
 'immobile-source-page' => 'このページは移動できません。',
-'immobile-target-page' => '目的のページ名へは移動させることができません。',
-'imagenocrossnamespace' => 'ファイル名前空間以外に、ファイルを移動することはできません。',
-'nonfile-cannot-move-to-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\81§ã\81ªã\81\84ã\82\82ã\81®ã\82\92ã\80\81ã\83\95ã\82¡ã\82¤ã\83«å\90\8då\89\8d空é\96\93ã\81«ç§»å\8b\95ã\81\99ることはできません',
-'imagetypemismatch' => '新しいファイルの拡張子がファイルのタイプと一致していません',
+'immobile-target-page' => '対象ページ名に移動させることはできません。',
+'imagenocrossnamespace' => 'ファイルを、ファイル名前空間以外に移動させることはできません',
+'nonfile-cannot-move-to-file' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\81§ã\81¯ã\81ªã\81\84ã\82\82ã\81®ã\82\92ã\80\81ã\83\95ã\82¡ã\82¤ã\83«å\90\8då\89\8d空é\96\93ã\81«ç§»å\8b\95ã\81\95ã\81\9bることはできません',
+'imagetypemismatch' => '新しいファイルの拡張子がファイルのタイプと一致していません',
 'imageinvalidfilename' => '対象ファイル名が不正です',
 'fix-double-redirects' => 'このページへのリダイレクトがあればそのリダイレクトを修正',
 'move-leave-redirect' => '移動元にリダイレクトを作成する',
 'protectedpagemovewarning' => "'''警告:'''このページは保護されているため、管理者権限を持つ利用者のみが移動できます。
-参考として以下に一番最後の記録を表示します:",
+参考として以下に最後の記録を表示します:",
 'semiprotectedpagemovewarning' => "'''注意:'''このページは保護されているため、登録利用者のみが移動できます。
-参考として以下に一番最後の記録を表示します:",
+参考として以下に最後の記録を表示します:",
 'move-over-sharedrepo' => '== ファイルが存在します ==
 [[:$1]]は共有リポジトリ上に存在します。ファイルをこの名前に移動すると共有ファイルを上書きします。',
 'file-exists-sharedrepo' => '選ばれたファイル名は既に共有リポジトリ上で使用されています。
@@ -2946,13 +2947,13 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 
 # Export
 'export' => 'ページの書き出し',
-'exporttext' => 'ã\81\93ã\81\93ã\81§ã\81¯å\8d\98ç\8b¬ã\81\82ã\82\8bã\81\84ã\81¯è¤\87æ\95°ã\81®ã\83\9aã\83¼ã\82¸ã\81®æ\9c¬æ\96\87ã\81¨ç·¨é\9b\86履歴ã\82\92ã\80\81XMLã\81®å½¢ã\81§æ\9b¸ã\81\8då\87ºã\81\99ã\81\93ã\81¨ができます。
\81\93ã\81®XMLã\81¯ã\80\81ä»\96ã\81®MediaWikiã\82\92使ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bã\82¦ã\82£ã\82­ã\81§[[Special:Import|å\8f\96ã\82\8aè¾¼ã\81¿ã\83\9aã\83¼ã\82¸]]ã\82\92使ç\94¨ã\81\97ã\81¦å\8f\96ã\82\8aè¾¼ã\82\80ã\81\93ã\81¨ができます。
+'exporttext' => 'ã\81\93ã\81\93ã\81§ã\81¯å\8d\98ç\8b¬ã\81\82ã\82\8bã\81\84ã\81¯è¤\87æ\95°ã\81®ã\83\9aã\83¼ã\82¸ã\81®æ\9c¬æ\96\87ã\81¨ç·¨é\9b\86履歴ã\82\92ã\80\81XMLã\81®å½¢ã\81§æ\9b¸ã\81\8då\87ºã\81\97ができます。
\81\93ã\81®XMLã\81¯ã\80\81ä»\96ã\81®MediaWikiã\82\92使ç\94¨ã\81\97ã\81¦ã\81\84ã\82\8bã\82¦ã\82£ã\82­ã\81§[[Special:Import|å\8f\96ã\82\8aè¾¼ã\81¿ã\83\9aã\83¼ã\82¸]]ã\82\92使ç\94¨ã\81\97ã\81¦å\8f\96ã\82\8aè¾¼ã\81¿ができます。
 
 ページを書き出すには、下の入力ボックスに一行に一つずつ書き出したいページの名前を記入してください。また、編集履歴とともにすべての過去版を含めて書き出すのか、最新版のみを書き出すのか選択してください。
 
 後者の場合ではリンクの形で使うこともできます。例えば、[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]]はページ「[[{{MediaWiki:Mainpage}}]]」が対象になります。',
-'exportall' => 'すべてのページをエクスポート',
+'exportall' => 'すべてのページを書き出し',
 'exportcuronly' => '完全な履歴は含めず、最新版のみを含める',
 'exportnohistory' => "----
 '''注意:'''負荷上の理由により、このフォームによるページの完全な履歴の書き出しは無効化されています。",
@@ -2973,7 +2974,7 @@ hideuser権限を持っていないため、この利用者のブロックを閲
 'allmessagescurrent' => '現在のメッセージ文',
 'allmessagestext' => 'これは MediaWiki 名前空間で利用できるシステム メッセージの一覧です。
 MediaWiki 全般のローカライズ(地域化)に貢献したい場合は、[//www.mediawiki.org/wiki/Localisation/ja MediaWiki のローカライズ] や [//translatewiki.net?setlang=ja translatewiki.net] をご覧ください。',
-'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''ã\81\8cç\84¡å\8a¹ã\81ªã\81®ã\81§ã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92使ã\81\86ã\81\93ã\81¨ã\81¯できません。",
+'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''ã\81\8cç\84¡å\8a¹ã\81®ã\81\9fã\82\81ã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92使ç\94¨できません。",
 'allmessages-filter-legend' => '絞り込み',
 'allmessages-filter' => '変更状態により絞り込む:',
 'allmessages-filter-unmodified' => '変更なし',
@@ -3013,18 +3014,18 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'importtext' => '元のウィキで[[Special:Export|書き出し機能]]を使用してファイルに書き出してください。
 それをコンピューターに保存した後、こちらへアップロードしてください。',
 'importstart' => 'ページを取り込み中...',
-'import-revision-count' => '$1',
+'import-revision-count' => '$1{{PLURAL:$1|版}}',
 'importnopages' => '取り込むページがありません。',
 'imported-log-entries' => '$1 件の{{PLURAL:$1|記録項目}}を取り込みました。',
 'importfailed' => '取り込みに失敗しました:<nowiki>$1</nowiki>',
 'importunknownsource' => '取り込み元のタイプが不明です',
 'importcantopen' => '取り込みファイルが開けませんでした',
 'importbadinterwiki' => 'ウィキ間リンクが正しくありません',
-'importnotext' => '空かもしくは本文がありません',
+'importnotext' => '内容が空、または本文がありません',
 'importsuccess' => '取り込みが完了しました!',
 'importhistoryconflict' => '取り込み時にいくつかの版が競合しました(以前に同じページが取り込まれているかもしれません)',
 'importnosources' => 'ウィキ間移動の取り込み元が定義されていないため、履歴の直接アップロードは無効になっています。',
-'importnofile' => 'ファイルがアップロードされませんでした',
+'importnofile' => '取り込みファイルはアップロードされませんでした。',
 'importuploaderrorsize' => '取り込みファイルのアップロードに失敗しました。
 ファイルが、アップロードできるサイズを超えています。',
 'importuploaderrorpartial' => '取り込みファイルのアップロードに失敗しました。
@@ -3041,17 +3042,17 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'import-invalid-interwiki' => '指定されたウィキから取り込めませんでした。',
 'import-error-edit' => 'あなたにそのページを編集する許可がないため、ページ「$1」は取り込まれませんでした。',
 'import-error-create' => 'あなたにそのページを作成する許可がないため、ページ「$1」は取り込まれませんでした。',
-'import-error-interwiki' => 'å\90\8då\89\8dã\81\8cå¤\96é\83¨ã\83ªã\83³ã\82¯ (interwiki) ã\81«äº\88ç´\84ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81ã\83\9aã\83¼ã\82¸ã\80\8c$1ã\80\8dã\82\92ã\82¤ã\83³ã\83\9dã\83¼ã\83\88ã\81\97ませんでした。',
-'import-error-special' => 'ページ「$1」は、ページが許可されない特別名前空間に属しているためインポートしません。',
-'import-error-invalid' => '名前が正しくないため、ページ「$1」をインポートしませんでした。',
+'import-error-interwiki' => 'å\90\8då\89\8dã\81\8cå¤\96é\83¨ã\83ªã\83³ã\82¯ (interwiki) ã\81«äº\88ç´\84ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bã\81\9fã\82\81ã\80\81ã\83\9aã\83¼ã\82¸ã\80\8c$1ã\80\8dã\82\92å\8f\96ã\82\8aè¾¼ã\81¿ませんでした。',
+'import-error-special' => 'ページ「$1」は、ページが許可されない特別名前空間に属しているため取り込みません。',
+'import-error-invalid' => '名前が正しくないため、ページ「$1」を取り込みませんでした。',
 
 # Import log
 'importlogpage' => '取り込み記録',
 'importlogpagetext' => '管理された他のウィキから編集履歴を伴ったページ取り込みです。',
 'import-logentry-upload' => 'ファイルのアップロードにより[[$1]]を取り込みました',
-'import-logentry-upload-detail' => '$1',
+'import-logentry-upload-detail' => '$1{{PLURAL:$1|版}}',
 'import-logentry-interwiki' => '$1をウィキ間移動しました',
-'import-logentry-interwiki-detail' => '$2の$1',
+'import-logentry-interwiki-detail' => '$2の$1{{PLURAL:$1|版}}',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript をテスト中',
@@ -3070,34 +3071,34 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-pt-mytalk' => '自分のトークページ',
 'tooltip-pt-anontalk' => 'このIPアドレスからなされた編集についての議論',
 'tooltip-pt-preferences' => '個人設定',
-'tooltip-pt-watchlist' => '変更を監視しているページの一覧',
+'tooltip-pt-watchlist' => '変更をウォッチしているページの一覧',
 'tooltip-pt-mycontris' => '自分の投稿の一覧',
-'tooltip-pt-login' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cます。ただし、必須ではありません。',
-'tooltip-pt-anonlogin' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cæ\8e¨å¥¨ã\81\95ã\82\8cます。ただし、必須ではありません。',
+'tooltip-pt-login' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。ただし、必須ではありません。',
+'tooltip-pt-anonlogin' => 'ã\83­ã\82°ã\82¤ã\83³ã\81\99ã\82\8bã\81\93ã\81¨ã\82\92æ\8e¨å¥¨ã\81\97ます。ただし、必須ではありません。',
 'tooltip-pt-logout' => 'ログアウト',
 'tooltip-ca-talk' => '本文ページについての議論',
-'tooltip-ca-edit' => 'このページを編集できます。保存する前にプレビューボタンを使用してください。',
-'tooltip-ca-addsection' => '新しい節を開始',
+'tooltip-ca-edit' => 'このページを編集できます。保存前にプレビューボタンを使用してください。',
+'tooltip-ca-addsection' => '新しい節を開始する',
 'tooltip-ca-viewsource' => 'このページは保護されています。
 ページのソースを閲覧できます。',
 'tooltip-ca-history' => 'このページの過去の版',
-'tooltip-ca-protect' => 'このページを保護',
-'tooltip-ca-unprotect' => 'このページの保護設定を変更',
-'tooltip-ca-delete' => 'このページを削除',
-'tooltip-ca-undelete' => '削除される前になされた編集を復元',
-'tooltip-ca-move' => 'このページを移動',
-'tooltip-ca-watch' => 'このページをウォッチリストに追加',
-'tooltip-ca-unwatch' => 'このページをウォッチリストから除去',
-'tooltip-search' => '{{SITENAME}}内を検索',
-'tooltip-search-go' => 'å\8e³å¯\86ã\81«ä¸\80è\87´ã\81\99ã\82\8bå\90\8då\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81\8cå­\98å\9c¨ã\81\99ã\82\8cã\81°ã\80\81ã\81\9dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ç§»å\8b\95ã\81\97ã\81¾ã\81\99',
-'tooltip-search-fulltext' => 'å\85¥å\8a\9bã\81\95ã\82\8cã\81\9fæ\96\87å­\97å\88\97ã\81\8cå\90«ã\81¾ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\92æ¤\9cç´¢ã\81\97ã\81¾ã\81\99',
-'tooltip-p-logo' => 'メインページに移動',
-'tooltip-n-mainpage' => 'メインページに移動',
+'tooltip-ca-protect' => 'このページを保護する',
+'tooltip-ca-unprotect' => 'このページの保護設定を変更する',
+'tooltip-ca-delete' => 'このページを削除する',
+'tooltip-ca-undelete' => '削除される前になされた編集を復元する',
+'tooltip-ca-move' => 'このページを移動する',
+'tooltip-ca-watch' => 'このページをウォッチリストに追加する',
+'tooltip-ca-unwatch' => 'このページをウォッチリストから除去する',
+'tooltip-search' => '{{SITENAME}}内を検索する',
+'tooltip-search-go' => 'å\8e³å¯\86ã\81«ä¸\80è\87´ã\81\99ã\82\8bå\90\8då\89\8dã\81®ã\83\9aã\83¼ã\82¸ã\81\8cå­\98å\9c¨ã\81\99ã\82\8cã\81°ã\80\81ã\81\9dã\81®ã\83\9aã\83¼ã\82¸ã\81¸ç§»å\8b\95ã\81\99ã\82\8b',
+'tooltip-search-fulltext' => 'å\85¥å\8a\9bã\81\97ã\81\9fæ\96\87å­\97å\88\97ã\81\8cå\90«ã\81¾ã\82\8cã\82\8bã\83\9aã\83¼ã\82¸ã\82\92æ¤\9cç´¢ã\81\99ã\82\8b',
+'tooltip-p-logo' => 'メインページに移動する',
+'tooltip-n-mainpage' => 'メインページに移動する',
 'tooltip-n-mainpage-description' => 'メインページに移動する',
 'tooltip-n-portal' => 'このプロジェクトについて、できること、情報を入手する場所',
 'tooltip-n-currentevents' => '最近の出来事の背景を知る',
 'tooltip-n-recentchanges' => 'このウィキにおける最近の更新の一覧',
-'tooltip-n-randompage' => '無作為に選れたページを読み込む',
+'tooltip-n-randompage' => '無作為に選択されたページを読み込む',
 'tooltip-n-help' => '情報を得る場所',
 'tooltip-t-whatlinkshere' => 'ここにリンクしている全ウィキページの一覧',
 'tooltip-t-recentchangeslinked' => 'このページからリンクしているページの最近の更新',
@@ -3112,7 +3113,7 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-ca-nstab-main' => '本文を閲覧',
 'tooltip-ca-nstab-user' => '利用者ページを表示',
 'tooltip-ca-nstab-media' => 'メディアページを表示',
-'tooltip-ca-nstab-special' => 'ã\81\93ã\82\8cã\81¯ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81§ã\81\99ã\80\82ç·¨é\9b\86ã\81\99ã\82\8bã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
+'tooltip-ca-nstab-special' => 'これは特別ページです。編集できません。',
 'tooltip-ca-nstab-project' => 'プロジェクトページを表示',
 'tooltip-ca-nstab-image' => 'ファイルページを表示',
 'tooltip-ca-nstab-mediawiki' => 'システムメッセージを表示',
@@ -3120,18 +3121,18 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'tooltip-ca-nstab-help' => 'ヘルプページを表示',
 'tooltip-ca-nstab-category' => 'カテゴリページを閲覧',
 'tooltip-minoredit' => 'この編集に細部の変更の印を付ける',
-'tooltip-save' => '変更を保存',
+'tooltip-save' => '変更を保存する',
 'tooltip-preview' => '変更をプレビューで確認できます。保存前に使用してください!',
-'tooltip-diff' => '文章中で変更した箇所を表示',
-'tooltip-compareselectedversions' => 'é\81¸æ\8a\9eã\81\95ã\82\8cã\81\9fäº\8cã\81¤ã\81®ç\89\88ã\81®å·®å\88\86ã\82\92表示ã\81\97ã\81¾ã\81\99ã\80\82',
+'tooltip-diff' => '文章中で変更した箇所を表示する',
+'tooltip-compareselectedversions' => 'é\81¸æ\8a\9eã\81\97ã\81\9f\81¤ã\81®ç\89\88ã\81®å·®å\88\86ã\82\92表示ã\81\99ã\82\8b',
 'tooltip-watch' => 'このページをウォッチリストに追加する',
-'tooltip-watchlistedit-normal-submit' => 'ã\82¿ã\82¤ã\83\88ã\83«ã\82\92å\89\8aé\99¤',
-'tooltip-watchlistedit-raw-submit' => 'ウォッチリストを更新',
+'tooltip-watchlistedit-normal-submit' => 'ã\83\9aã\83¼ã\82¸ã\82\92é\99¤å\8e»ã\81\99ã\82\8b',
+'tooltip-watchlistedit-raw-submit' => 'ウォッチリストを更新する',
 'tooltip-recreate' => '削除されていても、ページを再作成する',
-'tooltip-upload' => 'アップロードを開始',
+'tooltip-upload' => 'アップロードを開始する',
 'tooltip-rollback' => '「巻き戻し」は、このページの最後の編集者によるこのページへの編集を1クリックで差し戻します',
-'tooltip-undo' => '「取り消し」はこの編集を差し戻し、編集画面をプレビューをつけて開きます。要約欄に取り消しの理由を追加することができます。',
-'tooltip-preferences-save' => '設定を保存',
+'tooltip-undo' => '「取り消し」はこの編集を差し戻し、編集画面をプレビューを付けて開きます。要約欄に取り消しの理由を追加できます。',
+'tooltip-preferences-save' => '設定を保存する',
 'tooltip-summary' => '短い要約を入力してください',
 
 # Stylesheets
@@ -3203,8 +3204,8 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'pageinfo-watchers' => 'ウォッチリストに入れている利用者数',
 'pageinfo-edits' => '編集回数',
 'pageinfo-authors' => '投稿者数',
-'pageinfo-views' => '閲覧数',
-'pageinfo-viewsperedit' => '閲覧回数に対する編集回数',
+'pageinfo-views' => '閲覧数',
+'pageinfo-viewsperedit' => '1編集あたりの閲覧回数',
 
 # Skin names
 'skinname-standard' => 'クラシック',
@@ -3221,11 +3222,11 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'markaspatrolleddiff' => '巡回済みにする',
 'markaspatrolledtext' => 'このページを巡回済みにする',
 'markedaspatrolled' => '巡回済みにしました',
-'markedaspatrolledtext' => '選択された[[:$1|$1]]の版を巡回済みにしました。',
+'markedaspatrolledtext' => '[[:$1]]の、選択した版を巡回済みにしました。',
 'rcpatroldisabled' => '最近の更新の巡回は無効です',
 'rcpatroldisabledtext' => '最近の更新の巡回機能は現在無効になっています。',
-'markedaspatrollederror' => '巡回済みにできません',
-'markedaspatrollederrortext' => 'å·¡å\9b\9eæ¸\88ã\81¿ã\81«ã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\81¯ã\80\81ç\89\88ã\82\92æ\8c\87å®\9aã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99ã\80\82',
+'markedaspatrollederror' => '巡回済みにできません',
+'markedaspatrollederrortext' => '巡回済みにするには、版を指定する必要があります。',
 'markedaspatrollederror-noautopatrol' => '自分の編集を巡回済みにする権限がありません。',
 
 # Patrol log
@@ -3239,9 +3240,9 @@ MediaWiki 全般のローカライズ(地域化)に貢献したい場合は
 'filedeleteerror-long' => 'ファイルの削除中にエラーが発生しました:
 
 $1',
-'filedelete-missing' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯å­\98å\9c¨ã\81\97ã\81ªã\81\84ã\81\9fã\82\81ã\80\81å\89\8aé\99¤ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\80\82',
-'filedelete-old-unregistered' => '指定されたファイルの版「$1」はデータベースにありません。',
-'filedelete-current-unregistered' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9fã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯ã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹å\86\85ã\81«ã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82',
+'filedelete-missing' => 'ファイル「$1」は存在しないため、削除できません。',
+'filedelete-old-unregistered' => '指定されたファイルの版「$1」はデータベースにありません。',
+'filedelete-current-unregistered' => '指定されたファイル「$1」はデータベース内にありません。',
 'filedelete-archive-read-only' => '保存版ディレクトリ「$1」は、ウェブサーバーから書き込み不可になっています。',
 
 # Browsing diffs
@@ -3272,7 +3273,7 @@ $1',
 
 # Special:NewFiles
 'newimages' => '新しいファイルのギャラリー',
-'imagelisttext' => "以下は、'''$1'''ファイルの$2で並び替えられた一覧です。",
+'imagelisttext' => "以下は、'''$1'''{{PLURAL:$1|ファイル}}の$2で並べ替えた一覧です。",
 'newimages-summary' => 'この特別ページでは、最近アップロードされたファイルを表示します。',
 'newimages-legend' => '絞り込み',
 'newimages-label' => 'ファイル名(またはその一部):',
@@ -3285,8 +3286,8 @@ $1',
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'video-dims' => '$1、 $2 × $3',
 'seconds' => '{{PLURAL:$1|$1 秒}}',
-'minutes' => '{{PLURAL:$1|$1分}}',
-'hours' => '{{PLURAL:$1|$1時間}}',
+'minutes' => '{{PLURAL:$1|$1 分}}',
+'hours' => '{{PLURAL:$1|$1 時間}}',
 'days' => '{{PLURAL:$1|$1 日}}',
 'ago' => '$1前',
 
@@ -3295,7 +3296,7 @@ $1',
 
 箇条書き項目(*で始まる行)のみが考慮されます。
 各行最初のリンクは、好ましくないファイルへのリンクとしてください。
\90\8cã\81\98è¡\8cã\81§ã\81\9dã\82\8c以é\99\8dã\81«ã\81\82ã\82\8bã\83ªã\83³ã\82¯ã\81¯ä¾\8bå¤\96ã\80\81ã\81¤ã\81¾ã\82\8aã\82¤ã\83³ã\83©ã\82¤ã\83³æ\8c¿å\85¥ã\81\95ã\82\8cã\81¦ã\82\82ã\82\88ã\81\84ã\83\9aã\83¼ã\82¸ã\81¨ã\81¿なされます。',
\90\8cã\81\98è¡\8cã\81§ã\81\9dã\82\8c以é\99\8dã\81«ã\81\82ã\82\8bã\83ªã\83³ã\82¯ã\81¯ä¾\8bå¤\96ã\80\81ã\81¤ã\81¾ã\82\8aã\82¤ã\83³ã\83©ã\82¤ã\83³æ\8c¿å\85¥ã\81\95ã\82\8cã\81¦ã\82\82ã\81\84ã\81\84ã\83\9aã\83¼ã\82¸ã\81¨è¦\8bなされます。',
 
 /*
 Short names for language variants used for language conversion links.
@@ -3303,20 +3304,20 @@ To disable showing a particular link, set it to 'disable', e.g.
 'variantname-zh-sg' => 'disable',
 Variants for Chinese language
 */
-'variantname-zh-hans' => '簡体',
-'variantname-zh-hant' => '繁体',
+'variantname-zh-hans' => '中国語(簡体)',
+'variantname-zh-hant' => '中国語(繁体)',
 'variantname-zh-cn' => '中国簡体',
 'variantname-zh-tw' => '台湾正体',
 'variantname-zh-hk' => '香港正体',
-'variantname-zh-mo' => 'マカオ',
+'variantname-zh-mo' => 'マカオ繁体',
 'variantname-zh-sg' => 'シンガポール簡体',
-'variantname-zh-my' => 'マレーシア',
-'variantname-zh' => '中',
+'variantname-zh-my' => 'マレーシア簡体',
+'variantname-zh' => '中国語',
 
 # Variants for Gan language
-'variantname-gan-hans' => 'hans',
-'variantname-gan-hant' => 'hant',
-'variantname-gan' => 'ã\82¬ã\82¬ã\82¦ã\82º語',
+'variantname-gan-hans' => 'カン語(簡体)',
+'variantname-gan-hant' => 'カン語(繁体)',
+'variantname-gan' => 'ã\82«ã\83³語',
 
 # Variants for Serbian language
 'variantname-sr-ec' => 'セルビア語 (キリル文字)',
@@ -3353,7 +3354,7 @@ Variants for Chinese language
 このファイルが元の状態から変更されている場合、いくつかの項目は、修正されたファイルを完全に反映していないかもしれません。',
 'metadata-expand' => '拡張項目を表示',
 'metadata-collapse' => '拡張項目を非表示',
-'metadata-fields' => 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81«ã\81\82ã\82\8bEXIFメタデータフィールドは、メタデータ表を折り畳んだ状態のときに画像ページに読み込まれます。
+'metadata-fields' => 'ã\81\93ã\81®ã\83¡ã\83\83ã\82»ã\83¼ã\82¸ã\81§å\88\97æ\8c\99ã\81\97ã\81¦ã\81\84ã\82\8bç\94»å\83\8fメタデータフィールドは、メタデータ表を折り畳んだ状態のときに画像ページに読み込まれます。
 他のものは既定では非表示です。
 * make
 * model
@@ -3380,10 +3381,10 @@ Variants for Chinese language
 'exif-planarconfiguration' => '画像データの並び',
 'exif-ycbcrsubsampling' => 'YCCの画素構成 (Cの間引き率)',
 'exif-ycbcrpositioning' => 'YCCの画素構成 (YとCの位置)',
-'exif-xresolution' => '画像の幅の解像度',
-'exif-yresolution' => '画像の高さの解像度',
+'exif-xresolution' => '水平方向の解像度',
+'exif-yresolution' => '垂直方向の解像度',
 'exif-stripoffsets' => '画像データのロケーション',
-'exif-rowsperstrip' => '1ストリップごとの行数',
+'exif-rowsperstrip' => '1ストリップごとの行数',
 'exif-stripbytecounts' => 'ストリップの総バイト数',
 'exif-jpeginterchangeformat' => 'JPEGのSOIへのオフセット',
 'exif-jpeginterchangeformatlength' => 'JPEGデータのバイト数',
@@ -3393,8 +3394,8 @@ Variants for Chinese language
 'exif-referenceblackwhite' => '参照黒色点値と参照白色点値',
 'exif-datetime' => 'ファイル変更日時',
 'exif-imagedescription' => '画像の説明',
-'exif-make' => '画像入力機器のメーカ名',
-'exif-model' => '画像入力機器のモデル名',
+'exif-make' => '撮影機器のメーカー名',
+'exif-model' => '撮影機器のモデル名',
 'exif-software' => '使用ソフトウェア名',
 'exif-artist' => '作者名',
 'exif-copyright' => '撮影著作権者/編集著作権者',
@@ -3417,14 +3418,14 @@ Variants for Chinese language
 'exif-fnumber' => 'F値',
 'exif-exposureprogram' => '露出プログラム',
 'exif-spectralsensitivity' => 'スペクトル感度',
-'exif-isospeedratings' => 'ISOスピードレート',
+'exif-isospeedratings' => 'ISO 感度',
 'exif-shutterspeedvalue' => 'シャッタースピード',
 'exif-aperturevalue' => '絞り値',
 'exif-brightnessvalue' => '輝度値',
 'exif-exposurebiasvalue' => '露出補正値',
 'exif-maxaperturevalue' => 'レンズ最小F値',
 'exif-subjectdistance' => '被写体距離',
-'exif-meteringmode' => '測光方式',
+'exif-meteringmode' => '測光モード',
 'exif-lightsource' => '光源',
 'exif-flash' => 'フラッシュ',
 'exif-focallength' => 'レンズ焦点距離',
@@ -3442,7 +3443,7 @@ Variants for Chinese language
 'exif-exposuremode' => '露出モード',
 'exif-whitebalance' => 'ホワイトバランス',
 'exif-digitalzoomratio' => 'デジタルズーム倍率',
-'exif-focallengthin35mmfilm' => '35mm換算レンズ焦点距離',
+'exif-focallengthin35mmfilm' => '35mmフィルム換算焦点距離',
 'exif-scenecapturetype' => '撮影シーンタイプ',
 'exif-gaincontrol' => 'ゲイン制御',
 'exif-contrast' => '撮影コントラスト',
@@ -3458,24 +3459,24 @@ Variants for Chinese language
 'exif-gpslongitude' => '経度',
 'exif-gpsaltituderef' => '高度の基準',
 'exif-gpsaltitude' => '高度',
-'exif-gpstimestamp' => 'GPSæ\99\82é\96\93\8e\9få­\90æ\99\82è¨\88ã\81®æ\99\82é\96\93)',
+'exif-gpstimestamp' => 'GPSæ\97¥æ\99\82ï¼\88å\8e\9få­\90æ\99\82è¨\88ï¼\89',
 'exif-gpssatellites' => '測位に用いた衛星信号',
 'exif-gpsstatus' => 'GPS受信機の状態',
 'exif-gpsmeasuremode' => 'GPSの測位方法',
 'exif-gpsdop' => '測位の信頼性',
 'exif-gpsspeedref' => '速度の単位',
-'exif-gpsspeed' => '速度',
+'exif-gpsspeed' => 'GPS 受信機の速度',
 'exif-gpstrackref' => '進行方向の単位',
 'exif-gpstrack' => '進行方向',
 'exif-gpsimgdirectionref' => '撮影方向の基準',
-'exif-gpsimgdirection' => '撮影した画像の方向',
+'exif-gpsimgdirection' => '画像の方向',
 'exif-gpsmapdatum' => '測位に用いた地図データ',
-'exif-gpsdestlatituderef' => '目的地の北緯または南緯',
+'exif-gpsdestlatituderef' => '目的地の北緯/南緯',
 'exif-gpsdestlatitude' => '目的地の緯度',
-'exif-gpsdestlongituderef' => '目的地の東経または西経',
+'exif-gpsdestlongituderef' => '目的地の東経/西経',
 'exif-gpsdestlongitude' => '目的地の経度',
 'exif-gpsdestbearingref' => '目的地の方角の単位',
-'exif-gpsdestbearing' => '目的の方角',
+'exif-gpsdestbearing' => '目的の方角',
 'exif-gpsdestdistanceref' => '目的地までの距離の単位',
 'exif-gpsdestdistance' => '目的地までの距離',
 'exif-gpsprocessingmethod' => '測位方式の名称',
@@ -3484,18 +3485,18 @@ Variants for Chinese language
 'exif-gpsdifferential' => 'GPS補正測位',
 'exif-jpegfilecomment' => 'JPEGファイルのコメント',
 'exif-keywords' => 'キーワード',
-'exif-worldregioncreated' => 'この写真が撮られた大陸や地域',
-'exif-countrycreated' => 'この写真が撮られた国',
-'exif-countrycodecreated' => 'この写真が撮られた国の国名コード',
-'exif-provinceorstatecreated' => 'この写真が撮られた州や県',
-'exif-citycreated' => 'この写真が撮られた市町村',
-'exif-sublocationcreated' => 'この写真が撮られた町名や通りの名前',
-'exif-worldregiondest' => '写っている大陸地域',
+'exif-worldregioncreated' => '写真が撮影された大陸/地域',
+'exif-countrycreated' => '写真が撮影された国',
+'exif-countrycodecreated' => '写真が撮影された国のコード',
+'exif-provinceorstatecreated' => '写真が撮影された州/県',
+'exif-citycreated' => '写真が撮影された都市',
+'exif-sublocationcreated' => '写真が撮影された町や通りの名前',
+'exif-worldregiondest' => '写っている大陸/地域',
 'exif-countrydest' => '写っている国',
-'exif-countrycodedest' => '写っている国の国名コード',
-'exif-provinceorstatedest' => '写っている州県',
-'exif-citydest' => '写っている市町村',
-'exif-sublocationdest' => '写っている町や通りの名前',
+'exif-countrycodedest' => '写っている国のコード',
+'exif-provinceorstatedest' => '写っている州/県',
+'exif-citydest' => '写っている都市',
+'exif-sublocationdest' => '写っている町や通りの名前',
 'exif-objectname' => '短いタイトル',
 'exif-specialinstructions' => '取扱いに関する特記事項',
 'exif-headline' => '見出し',
@@ -3511,8 +3512,8 @@ Variants for Chinese language
 'exif-writer' => '記入者',
 'exif-languagecode' => '言語',
 'exif-iimversion' => 'IIMバージョン',
-'exif-iimcategory' => 'カテゴリ',
-'exif-iimsupplementalcategory' => '補足カテゴリ',
+'exif-iimcategory' => 'カテゴリ',
+'exif-iimsupplementalcategory' => '補足カテゴリ',
 'exif-datetimeexpires' => '使用期限',
 'exif-datetimereleased' => '初公開日',
 'exif-originaltransmissionref' => '原転送位置コード',
@@ -3529,7 +3530,7 @@ Variants for Chinese language
 'exif-copyrightowner' => '著作権者',
 'exif-usageterms' => '使用条件',
 'exif-webstatement' => 'オンライン上の著作権文',
-'exif-originaldocumentid' => '元文書の一意な識別子',
+'exif-originaldocumentid' => '元文書の一意なID',
 'exif-licenseurl' => '著作権ライセンスのURL',
 'exif-morepermissionsurl' => '代替ライセンス情報',
 'exif-attributionurl' => 'この作品を再利用する際に、次のURLにリンクしてください',
@@ -3563,10 +3564,10 @@ Variants for Chinese language
 'exif-orientation-2' => '左右反転',
 'exif-orientation-3' => '180°回転',
 'exif-orientation-4' => '上下反転',
-'exif-orientation-5' => '反時計回りに90°回転 上下反転',
-'exif-orientation-6' => '90° 回転 CCW',
-'exif-orientation-7' => '時計回りに90°回転 上下反転',
-'exif-orientation-8' => '90° 回転 CW',
+'exif-orientation-5' => '反時計回りに90°回転上下反転',
+'exif-orientation-6' => '反時計回りに90°回転',
+'exif-orientation-7' => '時計回りに90°回転上下反転',
+'exif-orientation-8' => '時計回りに90°回転',
 
 'exif-planarconfiguration-1' => '点順次フォーマット',
 'exif-planarconfiguration-2' => '面順次フォーマット',
@@ -3776,12 +3777,12 @@ Variants for Chinese language
 以下のボタンを押すとメールアドレスに確認メールが送られます。
 メールには確認用コードを含むリンクが書かれています。
 そのリンクをブラウザーで読み込んで、メールアドレスの正当性を確認してください。',
-'confirmemail_pending' => '確認メールは既に送信されています
\81\93ã\81®ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\82\92ä½\9cæ\88\90ã\81\97ã\81\9fã\81°ã\81\8bã\82\8aã\81§ã\81\82ã\82\8cã\81°ã\80\81ã\83¡ã\83¼ã\83«ã\81\8cå±\8aã\81\8fã\81¾ã\81§æ\95°å\88\86ã\81»ã\81©å¾\85ã\81\9fã\81ªã\81\91ã\82\8cã\81°ã\81ªã\82\89ã\81ªã\81\84ã\81\8bã\82\82ã\81\97ã\82\8cã\81¾ã\81\9bã\82\93。',
-'confirmemail_send' => '確認用コードを送信',
+'confirmemail_pending' => '確認用コードをメールで既にお送りしました
\82¢ã\82«ã\82¦ã\83³ã\83\88ã\82\92ä½\9cæ\88\90ã\81\97ã\81\9fã\81°ã\81\8bã\82\8aã\81®å ´å\90\88ã\81¯ã\80\81ã\83¡ã\83¼ã\83«ã\81\8cå±\8aã\81\8fã\81¾ã\81§ã\81\97ã\81°ã\82\89ã\81\8fã\81\8aå¾\85ã\81¡ã\81\8fã\81 ã\81\95ã\81\84ã\80\82å±\8aã\81\8bã\81ªã\81\84å ´å\90\88ã\81¯æ\96°ã\81\97ã\81\84ã\82³ã\83¼ã\83\89ã\82\92å\86\8d度ç\94³è«\8bã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84。',
+'confirmemail_send' => '確認用コードをメールで送信',
 'confirmemail_sent' => '確認メールを送信しました。',
-'confirmemail_oncreate' => 'ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81®æ­£å½\93æ\80§ã\82\92確èª\8dã\81\99ã\82\8bã\81\9fã\82\81ã\81®ã\82³ã\83¼ã\83\89ã\82\92å\90«ã\82\93ã\81 ã\83¡ã\83¼ã\83«ã\82\92é\80\81ä¿¡しました。
-この確認を行わなくてもログインはできますが、確認するまでメール通知の機能は無効化されます。',
+'confirmemail_oncreate' => 'ã\81\82ã\81ªã\81\9fã\81®ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81«ç¢ºèª\8dç\94¨ã\82³ã\83¼ã\83\89ã\82\92ã\83¡ã\83¼ã\83«ã\81§ã\81\8aé\80\81ã\82\8aしました。
+この確認をしなくてもログインはできますが、確認するまでウィキ内のメール関連の機能は無効化されます。',
 'confirmemail_sendfailed' => '{{SITENAME}}は確認メールを送信できませんでした。
 メールアドレスに不正な文字が含まれていないかどうか確認してください。
 
@@ -3809,7 +3810,7 @@ $5
 
 この確認用コードは、$4に期限切れになります。',
 'confirmemail_body_changed' => '誰か(おそらくあなた)が IP アドレス $1 から、
-{{SITENAME}} のアカウント「$2」のメール アドレスをこのアドレスに変更しました。
+{{SITENAME}} のアカウント「$2」のメールアドレスをこのアドレスに変更しました。
 
 このアカウントが本当にあなたのものであれば、以下のリンクをブラウザーで開いて、
 {{SITENAME}} のメール機能を再び有効にしてください:
@@ -3817,21 +3818,21 @@ $5
 $3
 
 もしあなたのアカウント *ではない* 場合は、
-ブラウザーで以下のリンクを開いて、メール アドレスの確認をキャンセルしてください:
+ブラウザーで以下のリンクを開いて、メールアドレスの確認をキャンセルしてください:
 
 $5
 
 この確認コードは $4 に期限切れになります。',
 'confirmemail_body_set' => '誰か(おそらくあなた)が IP アドレス $1 から
-{{SITENAME}} のアカウント「$2」のメール アドレスをこのアドレスに設定しました。
+{{SITENAME}} のアカウント「$2」のメールアドレスをこのアドレスに設定しました。
 
 このアカウントが本当にあなたのものであれば、以下のリンクをブラウザーで開いて、
 {{SITENAME}} のメール機能を再び有効にしてください。
 
 $3
 
-もしあなたのアカウントでない場合は、
-次のリンクをブラウザーで開いて、メール アドレスの確認をキャンセルしてください:
\82\82ã\81\97ã\81\82ã\81ªã\81\9fã\81®ã\82¢ã\82«ã\82¦ã\83³ã\83\88ã\81§ã\81¯ã\81ªã\81\84å ´å\90\88ã\81¯ã\80\81
+次のリンクをブラウザーで開いて、メールアドレスの確認をキャンセルしてください:
 
 $5
 
@@ -3848,8 +3849,8 @@ $5
 'deletedwhileediting' => "'''警告:'''このページが、編集開始後に削除されました!",
 'confirmrecreate' => "[[User:$1|$1]]([[User talk:$1|トーク]])が、このページの編集開始後に、このページを、次の理由で削除しました。
 : ''$2''
-本当にこのままこのページを再作成していか確認してください。",
-'confirmrecreate-noreason' => 'ã\81\82ã\81ªã\81\9fã\81®ç·¨é\9b\86ã\82\92é\96\8bå§\8bã\81\97ã\81\9få¾\8cã\80\81ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92[[User:$1|$1]] ([[User talk:$1|ã\83\88ã\83¼ã\82¯]])ã\81\8cå\89\8aé\99¤ã\81\97ã\81¾ã\81\97ã\81\9fã\80\82æ\9c¬å½\93ã\81«ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92å\86\8dä½\9cæ\88\90ã\81\97ã\81¦ã\81\84ã\81\84ã\81®ã\81\8bã\81\94確èª\8dã\81\8fã\81 ã\81\95ã\81\84ã\80\82',
+本当にこのままこのページを再作成していか確認してください。",
+'confirmrecreate-noreason' => 'あなたの編集を開始した後、このページを[[User:$1|$1]] ([[User talk:$1|トーク]])が削除しました。本当にこのページを再作成していいかご確認ください。',
 'recreate' => '再作成する',
 
 # action=purge
@@ -3900,6 +3901,11 @@ $5
 'size-kilobytes' => '$1キロバイト',
 'size-megabytes' => '$1メガバイト',
 'size-gigabytes' => '$1ギガバイト',
+'size-terabytes' => '$1 TB',
+'size-petabytes' => '$1 PB',
+'size-exabytes' => '$1 EB',
+'size-zetabytes' => '$1 ZB',
+'size-yottabytes' => '$1 YB',
 
 # Live preview
 'livepreview-loading' => '読み込み中...',
@@ -3910,19 +3916,19 @@ $5
 通常のプレビューを試してください。',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'この一覧には、$1より前の変更が表示されていない可能性があります。',
-'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1より前の変更が表示されていない可能性があります。',
+'lag-warn-normal' => 'この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
+'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'ウォッチリストには、$1件のページ名が含まれています(トークページは除く)。',
-'watchlistedit-noitems' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81¯ã\83\9aã\83¼ã\82¸å\90\8dã\81\8c\81¤ã\82\82ã\81\82ã\82\8aません。',
+'watchlistedit-numitems' => 'ウォッチリストには {{PLURAL:$1|$1 件のページ}}が登録されています(トークページを除く)。',
+'watchlistedit-noitems' => 'ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«ã\81¯ã\81©ã\81®ã\83\9aã\83¼ã\82¸ã\82\82ç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ません。',
 'watchlistedit-normal-title' => 'ウォッチリストの編集',
 'watchlistedit-normal-legend' => 'ウォッチリストからページ名を除去',
 'watchlistedit-normal-explain' => 'ウォッチリストに入っているページ名を以下に表示しています。
 ページ名を除去するには、隣のボックスにチェックを入れて「{{int:watchlistedit-normal-submit}}」をクリックしてください。
 また、[[Special:EditWatchlist/raw|ウォッチリストをそのまま編集]]も使用できます。',
 'watchlistedit-normal-submit' => 'ページを除去',
-'watchlistedit-normal-done' => 'ウォッチリストから $1 {{PLURAL:$1|件}}を削除しました:',
+'watchlistedit-normal-done' => 'ウォッチリストから {{PLURAL:$1|$1 件のページ}}を削除しました:',
 'watchlistedit-raw-title' => 'ウォッチリストをそのまま編集',
 'watchlistedit-raw-legend' => 'ウォッチリストをそのまま編集',
 'watchlistedit-raw-explain' => 'ウォッチリストに含まれるページ名を以下に表示しています。この一覧で追加または除去ができます。
@@ -3932,8 +3938,8 @@ $5
 'watchlistedit-raw-titles' => 'ページ名:',
 'watchlistedit-raw-submit' => 'ウォッチリストを更新',
 'watchlistedit-raw-done' => 'ウォッチリストを更新しました。',
-'watchlistedit-raw-added' => '$1のページ名が追加されました:',
-'watchlistedit-raw-removed' => '$1件のページ名が除去されました:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|$1 件のページ}}を追加しました:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|$1 件のページ}}を除去しました:',
 
 # Watchlist editing tools
 'watchlisttools-view' => '関連する変更を閲覧',
@@ -4003,7 +4009,7 @@ $5
 
 # Core parser functions
 'unknown_extension_tag' => '不明な拡張機能タグ「$1」です',
-'duplicate-defaultsort' => "'''警告:'''既定の並ã\81³æ\9b¿ã\81\88ã\82­ã\83¼ã\80\8c$2ã\80\8dã\81\8cã\80\81ã\81\9dã\81®å\89\8dã\81«æ\9b¸ã\81\8bã\82\8cã\81¦ã\81\84ã\82\8bæ\97¢å®\9aã\81®ä¸¦ã\81³æ\9b¿ã\81\88ã\82­ã\83¼ã\80\8c$1ã\80\8dã\82\92ä¸\8aæ\9b¸ã\81\8dã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82",
+'duplicate-defaultsort' => "'''警告:'''既定のã\82½ã\83¼ã\83\88ã\82­ã\83¼ã\80\8c$2ã\80\8dã\81\8cã\80\81ã\81\9dã\81®å\89\8dã\81«æ\9b¸ã\81\8bã\82\8cã\81¦ã\81\84ã\82\8bæ\97¢å®\9aã\81®ã\82½ã\83¼ã\83\88ã\82­ã\83¼ã\80\8c$1ã\80\8dã\82\92ä¸\8aæ\9b¸ã\81\8dã\81\97ã\81¦ã\81\84ã\81¾ã\81\99ã\80\82",
 
 # Special:Version
 'version' => 'バージョン情報',
@@ -4025,19 +4031,19 @@ $5
 'version-license' => 'ライセンス',
 'version-poweredby-credits' => "このウィキは、'''[//www.mediawiki.org/ MediaWiki]'''(copyright © 2001-$1 $2)で動作しています。",
 'version-poweredby-others' => 'その他',
-'version-license-info' => 'MediaWikiはフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約にもとづき、このライブラリの再配布や改変をすることができます。
+'version-license-info' => 'MediaWikiはフリーソフトウェアです。あなたは、フリーソフトウェア財団の発行するGNU一般公衆利用許諾書 (GNU General Public License)(バージョン2、またはそれ以降のライセンス)の規約に基づき、このライブラリを再配布および改変できます。
 
-MediaWikiは、有用であることを期待して配布されていますが、商用あるいは特定の目的に適するかどうかも含めて、暗黙的にも、一切保証されません。詳しくは、GNU一般公衆利用許諾書をご覧さい。
+MediaWikiは、有用であることを期待して配布されていますが、商用あるいは特定の目的に適するかどうかも含めて、暗黙的にも、一切保証されません。詳しくは、GNU一般公衆利用許諾書をご覧ください。
 
-あなたはこのプログラムと共に、[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書の複製]を受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団(the Free Software Foundation, Inc., 59Temple Place, Suite 330, Boston, MA 02111-1307 USA)まで請求するか、[//www.gnu.org/licenses/old-licenses/gpl-2.0.html オンラインで閲覧]してください。',
+あなたはこのプログラムと共に、[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書の複製]を受け取ったはずです。もし受け取っていなければ、フリーソフトウェア財団(the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA)まで請求するか、[//www.gnu.org/licenses/old-licenses/gpl-2.0.html オンラインで閲覧]してください。',
 'version-software' => 'インストール済みソフトウェア',
 'version-software-product' => '製品',
 'version-software-version' => 'バージョン',
-'version-entrypoints' => 'エントリー ポイントの URL',
-'version-entrypoints-header-entrypoint' => 'エントリー ポイント',
+'version-entrypoints' => 'エントリーポイントの URL',
+'version-entrypoints-header-entrypoint' => 'エントリーポイント',
 'version-entrypoints-header-url' => 'URL',
-'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 記事のパス]',
-'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath スクリプト パス]',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath/ja 記事のパス]',
+'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath/ja スクリプトパス]',
 
 # Special:FilePath
 'filepath' => 'ファイルパス',
@@ -4054,15 +4060,14 @@ MediaWikiは、有用であることを期待して配布されていますが
 'fileduplicatesearch-submit' => '検索',
 'fileduplicatesearch-info' => '$1×$2 ピクセル<br />ファイルサイズ:$3<br />MIMEタイプ:$4',
 'fileduplicatesearch-result-1' => 'ファイル「$1」と重複するファイルはありません。',
-'fileduplicatesearch-result-n' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81¯$2件ã\81®ã\83\95ã\82¡ã\82¤ã\83«ã\81¨é\87\8dè¤\87ã\81\97ã\81¦ã\81\84ます。',
+'fileduplicatesearch-result-n' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\80\8c$1ã\80\8dã\81«ã\81¯ {{PLURAL:$2|$2 ä»¶ã\81®é\87\8dè¤\87ã\83\95ã\82¡ã\82¤ã\83«}}ã\81\8cã\81\82ã\82\8aます。',
 'fileduplicatesearch-noresults' => '「$1」という名前のファイルはありません。',
 
 # Special:SpecialPages
 'specialpages' => '特別ページ',
 'specialpages-note' => '----
 * 通常の特別ページ
-* <span class="mw-specialpagerestricted">制限されている特別ページ</span>
-* <span class="mw-specialpagecached">(廃止されたかもしれない)キャッシュされた特別ページ</span>',
+* <span class="mw-specialpagerestricted">制限されている特別ページ</span>',
 'specialpages-group-maintenance' => 'メンテナンス報告',
 'specialpages-group-other' => 'その他の特別ページ',
 'specialpages-group-login' => 'ログイン/利用者登録',
@@ -4082,10 +4087,10 @@ MediaWikiは、有用であることを期待して配布されていますが
 
 # External image whitelist
 'external_image_whitelist' => '  #この行はそのままにしておいてください<pre>
-#この下に正規表現(//の間にる記述)を置いてください
+#この下に正規表現(//の間にる記述)を置いてください
 #外部の(ホットリンクされている)画像の URL と一致するか検査されます
 #一致する場合は画像として、一致しない場合は画像へのリンクとして表示されます
-#行の頭に # をけるとコメントとして扱われます
+#行の頭に # をけるとコメントとして扱われます
 #大文字と小文字は区別されません
 
 #正規表現はすべてこの行の上に置いてください。この行を変更しないでください</pre>',
@@ -4095,7 +4100,7 @@ MediaWikiは、有用であることを期待して配布されていますが
 'tag-filter' => '[[Special:Tags|タグ]]絞り込み:',
 'tag-filter-submit' => '絞り込み',
 'tags-title' => 'タグ',
-'tags-intro' => 'このページは、ソフトウェアが編集に対してけるタグとその意味の一覧です。',
+'tags-intro' => 'このページは、ソフトウェアが編集に対してけるタグとその意味の一覧です。',
 'tags-tag' => 'タグ名',
 'tags-display-header' => '変更一覧に表示されるもの',
 'tags-description-header' => '詳細な意味の説明',
@@ -4121,17 +4126,17 @@ MediaWikiは、有用であることを期待して配布されていますが
 このウェブサイトに技術的な問題が発生しています。',
 'dberr-again' => '数分間待った後、もう一度読み込んでください。',
 'dberr-info' => '(データベースサーバー:$1に接続できませんでした。)',
-'dberr-usegoogle' => 'å\85\83ã\81«æ\88»ã\82\8bã\81¾ã\81§ã\80\81Googleã\82\92å\88©ç\94¨ã\81\97ã\81¦æ¤\9cç´¢ã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\99ã\80\82',
+'dberr-usegoogle' => '元に戻るまで、Googleを利用して検索できます。',
 'dberr-outofdate' => 'それらが収集した内容は古い可能性があることに注意してください。',
 'dberr-cachederror' => 'これは要求されたページをキャッシュした複製であり、古くなっている可能性があります。',
 
 # HTML forms
-'htmlform-invalid-input' => '入力になんらかの問題があります',
-'htmlform-select-badoption' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8cæ\9c\89å\8a¹ã\81ªã\82\82ã\81®ではありません。',
-'htmlform-int-invalid' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c整数ではありません。',
-'htmlform-float-invalid' => 'æ\8c\87å®\9aã\81\95ã\82\8cた値は数値ではありません。',
-'htmlform-int-toolow' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c$1の最小値未満です',
-'htmlform-int-toohigh' => 'æ\8c\87å®\9aã\81\95ã\82\8cã\81\9få\80¤ã\81\8c$1の最大値を超えています',
+'htmlform-invalid-input' => '入力にらかの問題があります',
+'htmlform-select-badoption' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯æ\9c\89å\8a¹ã\81ªé\81¸æ\8a\9eè\82¢ではありません。',
+'htmlform-int-invalid' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯整数ではありません。',
+'htmlform-float-invalid' => 'æ\8c\87å®\9aã\81\97た値は数値ではありません。',
+'htmlform-int-toolow' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯$1の最小値未満です',
+'htmlform-int-toohigh' => 'æ\8c\87å®\9aã\81\97ã\81\9få\80¤ã\81¯$1の最大値を超えています',
 'htmlform-required' => 'この値は必要です',
 'htmlform-submit' => '送信',
 'htmlform-reset' => '変更を取り消す',
@@ -4171,31 +4176,32 @@ MediaWikiは、有用であることを期待して配布されていますが
 'logentry-newusers-create' => '$1 が利用者アカウントを作成しました',
 'logentry-newusers-create2' => '$1 が利用者アカウント「$3」を作成しました',
 'logentry-newusers-autocreate' => 'アカウント「$1」が自動的に作成されました',
-'newuserlog-byemail' => 'パスワードをメールで送信しました',
+'newuserlog-byemail' => 'パスワードをメールでお送りしました',
 
 # Feedback
-'feedback-bugornote' => '技術的な問題の詳細をご説明する準備ができているなら[$1 バグを報告]してください。それ以外の場合、下の簡易フォームを使用すれば、あなたのコメントが"[$3 $2]"にあなたの利用者名と使用中のブラウザ名と共に追加されます。',
+'feedback-bugornote' => '技術的な問題の詳細を説明なさる準備ができている場合は[$1 バグを報告]してください。
+そうではない場合は、下の簡易フォームを使用してください。あなたのコメントがあなたの利用者名とご使用中のブラウザー名と共に、ページ"[$3 $2]"に追加されます。',
 'feedback-subject' => '件名:',
 'feedback-message' => 'メッセージ:',
 'feedback-cancel' => 'キャンセル',
 'feedback-submit' => 'フィードバックを送信',
-'feedback-adding' => 'ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\83\90ã\83\83ã\82¯ã\82\92追å\8a ã\81\99ã\82\8b...',
+'feedback-adding' => 'ã\83\9aã\83¼ã\82¸ã\81¸ã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\83\90ã\83\83ã\82¯ã\81®è¿½å\8a ...',
 'feedback-error1' => 'エラー:APIから認識されない結果が返ってきました',
 'feedback-error2' => 'エラー:編集に失敗しました',
 'feedback-error3' => 'エラー:APIからの応答がありません',
-'feedback-thanks' => 'ã\81\82ã\82\8aã\81\8cã\81¨ã\81\86ã\81\94ã\81\96ã\81\84ã\81¾ã\81\99ã\80\82ã\81\82ã\81ªã\81\9fã\81®ã\83\95ã\82£ã\83¼ã\83\89ã\83\90ã\83\83ã\82¯ã\81¯ã\80\8c[$2 $1]ã\80\8dã\81®ã\83\9aã\83¼ã\82¸ã\81«æ\8a\95稿ã\81\95ã\82\8cました。',
+'feedback-thanks' => 'ã\81\82ã\82\8aã\81\8cã\81¨ã\81\86ã\81\94ã\81\96ã\81\84ã\81¾ã\81\99ã\80\82ã\83\95ã\82£ã\83¼ã\83\89ã\83\90ã\83\83ã\82¯ã\82\92ã\80\8c[$2 $1]ã\80\8dã\81®ã\83\9aã\83¼ã\82¸ã\81«æ\8a\95稿ã\81\97ました。',
 'feedback-close' => '完了',
 'feedback-bugcheck' => 'Great! [$1 既出のバグ]に既に含まれていないか確認してください。',
-'feedback-bugnew' => 'チェック済み。バグを報告する。',
+'feedback-bugnew' => 'チェックしました。バグを報告します。',
 
 # API errors
 'api-error-badaccess-groups' => 'このウィキへのファイルのアップロードが許可されていません。',
 'api-error-badtoken' => '内部エラー:トークンが不正です。',
 'api-error-copyuploaddisabled' => 'URLによるアップロードはこのサーバーでは無効になっています。',
 'api-error-duplicate' => '当ウェブサイト上には、既に同じ内容の{{PLURAL:$1|[$2 他のファイル]が|[$2 他のファイルがいくつか]}}存在しています。',
-'api-error-duplicate-archive' => '同じ内容で既に削除済みの{{PLURAL:$1|[$2 他のファイル]が|[$2 他のファイルがいくつか]}}サイト上にあります。',
+'api-error-duplicate-archive' => 'サイト上に同じ内容の{{PLURAL:$1|[$2 別のファイル]が|[$2 他のファイルがいくつか]}}既にありましたが、{{PLURAL:$1|それは|それらは}}削除されました。',
 'api-error-duplicate-archive-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}は削除済みです。',
-'api-error-duplicate-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}',
+'api-error-duplicate-popup-title' => '重複した{{PLURAL:$1|ファイル|ファイル群}}です。',
 'api-error-empty-file' => '送信されたファイルは空でした。',
 'api-error-emptypage' => '内容がないページの新規作成は許可されていません。',
 'api-error-fetchfileerror' => '内部エラー:ファイルの取得中に問題が発生しました。',
@@ -4208,14 +4214,14 @@ MediaWikiは、有用であることを期待して配布されていますが
 'api-error-illegal-filename' => 'ファイル名が許可されていません。',
 'api-error-internal-error' => '内部エラー:ウィキ上でアップロードを処理する際に問題が発生しました。',
 'api-error-invalid-file-key' => '内部エラー:一時格納場所にファイルが見つかりませんでした。',
-'api-error-missingparam' => '内部エラー:リクエストのパラメータが足りません。',
+'api-error-missingparam' => 'å\86\85é\83¨ã\82¨ã\83©ã\83¼ï¼\9aã\83ªã\82¯ã\82¨ã\82¹ã\83\88ã\81®ã\83\91ã\83©ã\83¡ã\83¼ã\82¿ã\83¼ã\81\8c足ã\82\8aã\81¾ã\81\9bã\82\93ã\80\82',
 'api-error-missingresult' => '内部エラー:複製に成功したか判断できませんでした。',
 'api-error-mustbeloggedin' => 'ファイルをアップロードするにはログインする必要があります。',
-'api-error-mustbeposted' => 'このソフトウェアにバグがありました。適切なHTTPメソッドを使用していません。',
+'api-error-mustbeposted' => '内部エラー:リクエストはHTTP POSTである必要があります。',
 'api-error-noimageinfo' => 'アップロードには成功しましたが、サーバーはファイルに関する情報を返しませんでした。',
 'api-error-nomodule' => '内部エラー:アップロードを処理するモジュールが設定されていません。',
 'api-error-ok-but-empty' => '内部エラー:サーバーからの応答がありません。',
-'api-error-overwrite' => '既存のファイルへ上書きすることは許可されていません。',
+'api-error-overwrite' => '既存のファイルへの上書きは許可されていません。',
 'api-error-stashfailed' => '内部エラー:サーバーは一時ファイルを格納できませんでした。',
 'api-error-timeout' => 'サーバーが決められた時間内に応答しませんでした。',
 'api-error-unclassified' => '不明なエラーが発生しました。',
index 84be2d1..4bb059b 100644 (file)
@@ -641,6 +641,7 @@ Yèn isih tetep ora kasil, cobanen metu log lan mlebu manèh.'''",
 '''Yèn iki sawijining upaya suntingan sing absah, mangga dicoba manèh. Yèn isih tetep ora kasil, cobanen metu log utawa oncat lan mlebua manèh.'''",
 'token_suffix_mismatch' => "'''Suntingan panjenengan ditulak amerga aplikasi klièn panjenengan ngowahi karakter tandha wewacan ing suntingan. Suntingan iku ditulak kanggo untuk menggak kaluputan ing tèks artikel. Prekara iki kadhangkala dumadi yèn panjenengan ngangem dines layanan proxy anonim adhedhasar situs wèb sing duwé masalah.'''",
 'editing' => 'Nyunting $1',
+'creating' => 'Nggawé $1',
 'editingsection' => 'Nyunting $1 (bagian)',
 'editingcomment' => 'Nyunting $1 (bagéyan anyar)',
 'editconflict' => 'Konflik panyuntingan: $1',
index 6f99dc9..c8a0c2c 100644 (file)
@@ -1890,7 +1890,7 @@ $1',
 'statistics-articles' => 'სტატიების',
 'statistics-pages' => 'გვერდები',
 'statistics-pages-desc' => 'ვიკის ყველა გვერდი, განხილვის, გადამისამართების და სხვ. ჩათვლით.',
-'statistics-files' => 'á\83\90á\83\95á\83¢á\83\95á\83\98á\83 á\83\97á\83£á\83\9aá\83\98 á\83¤á\83\90á\83\98á\83\9aá\83\94á\83\91á\83\98',
+'statistics-files' => 'ატვირთული ფაილები',
 'statistics-edits' => 'გვერდის შესწორებები {{SITENAME}}-ის შექმნიდან',
 'statistics-edits-average' => 'რედაქტირების საერთო რაოდენობა გვერდზე',
 'statistics-views-total' => 'სულ ხილვა',
@@ -2014,6 +2014,7 @@ $1',
 შეგიძლიათ გაცხრილოთ იგი ჩანაწერის ტიპის, მომხმარებლის სახელის, ან დაკავშირებული გვერდის შერჩევით.',
 'logempty' => 'შედეგები არ არის სიაში.',
 'log-title-wildcard' => 'სათაურების ძებნა, რომლებიც იწყება ამ ტექსტით',
+'showhideselectedlogentries' => 'არჩეული ჟურნალის ჩანაწერის ჩვენება/დამალვა',
 
 # Special:AllPages
 'allpages' => 'ყველა გვერდი',
index f4aed9f..17f4000 100644 (file)
@@ -865,7 +865,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'grouppage-bureaucrat' => '{{ns:project}}:Burokrati',
 
 # Rights
-'right-read' => 'Pelu bıwane',
+'right-read' => 'Pelan bıwanê',
 'right-edit' => 'Pelu bıvurne',
 'right-move' => 'Pelu bere',
 'right-movefile' => 'Dosyu bere',
@@ -949,6 +949,7 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'filestatus' => 'Halê heqa telifi:',
 'filesource' => 'Çıme:',
 'uploadedfiles' => 'Dosyê barkerdey',
+'empty-file' => 'Dosya ke ti şawit veng biy.',
 'savefile' => 'Dosya qeyd ke',
 'uploadedimage' => '"[[$1]]" bar bi',
 'upload-source' => 'Dosya çımey',
@@ -1211,6 +1212,7 @@ Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedem
 'undeletereset' => 'Vaz be',
 'undeleteinvert' => 'Weçinıtey ters bıçarne',
 'undeletecomment' => 'Sebeb:',
+'undelete-header' => 'Peleyê ke veror de besterneyayê êna bıvinê: [[Special:Log/delete|qeydê esterneya]].',
 'undelete-search-submit' => 'Cıfeteliye',
 'undelete-show-file-submit' => 'Heya',
 
index 9b9e1a1..93ff9dd 100644 (file)
@@ -1231,6 +1231,7 @@ $3 келтірілген себебі: ''$2''",
 
 # Diffs
 'history-title' => '«$1» — өңдеу тарихы',
+'difference-title' => 'Нұсқалар арасындағы айырмашылық: "$1"',
 'difference-multipage' => '(Беттер арасындағы айырмашылық)',
 'lineno' => 'Жол нөмірі $1:',
 'compareselectedversions' => 'Таңдалған нұсқаларды салыстыру',
@@ -3186,5 +3187,7 @@ $5
 # New logging system
 'revdelete-restricted' => 'әкімшілерге тиымдар қолдады',
 'revdelete-unrestricted' => 'әкімшілерден тиымдарды аластады',
+'logentry-move-move-noredirect' => '$1 $3 бетін $4 бетіне жылжытты (айдатқыш қалдырылмады)',
+'logentry-move-move_redir-noredirect' => '$1 $3 бетін $4 деген айдатқыш үстіне жылжытты (айдатқыш қалдырылмады)',
 
 );
index c33c3da..4b4290d 100644 (file)
@@ -74,7 +74,7 @@ $specialPageAliases = array(
        'BrokenRedirects'           => array( '끊긴넘겨주기' ),
        'Categories'                => array( '분류' ),
        'ChangeEmail'               => array( '이메일변경', '이메일바꾸기' ),
-       'ChangePassword'            => array( '비밀번호변경', '비밀번호바꾸기' ),
+       'ChangePassword'            => array( '비밀번호변경', '비밀번호바꾸기', '비밀단어변경', '비밀단어바꾸기' ),
        'ComparePages'              => array( '문서비교' ),
        'Confirmemail'              => array( '이메일인증' ),
        'Contributions'             => array( '기여', '기여목록', '사용자기여' ),
@@ -102,7 +102,7 @@ $specialPageAliases = array(
        'Listusers'                 => array( '사용자', '사용자목록' ),
        'Lockdb'                    => array( 'DB잠금', 'DB잠그기' ),
        'Log'                       => array( '기록', '로그' ),
-       'Lonelypages'               => array( '외톨이문서' ),
+       'Lonelypages'               => array( '외톨이문서', '홀로된문서' ),
        'Longpages'                 => array( '긴문서' ),
        'MergeHistory'              => array( '역사합치기' ),
        'MIMEsearch'                => array( 'MIME찾기', 'MIME검색' ),
@@ -119,7 +119,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( '내가올린파일' ),
        'Newimages'                 => array( '새파일', '새그림' ),
        'Newpages'                  => array( '새문서' ),
-       'PasswordReset'             => array( '암호변경' ),
+       'PasswordReset'             => array( '비밀번호초기화', '비밀단어초기화' ),
        'PermanentLink'             => array( '고유링크', '영구링크' ),
        'Popularpages'              => array( '인기있는문서' ),
        'Preferences'               => array( '환경설정' ),
@@ -144,11 +144,11 @@ $specialPageAliases = array(
        'Uncategorizedtemplates'    => array( '분류안된틀' ),
        'Undelete'                  => array( '삭제취소', '삭제된문서' ),
        'Unlockdb'                  => array( 'DB잠금취소', 'DB잠금해제' ),
-       'Unusedcategories'          => array( '안쓰는분류' ),
-       'Unusedimages'              => array( '안쓰는파일', '안쓰는그림' ),
-       'Unusedtemplates'           => array( '안쓰는틀' ),
+       'Unusedcategories'          => array( '안쓰는분류', '쓰이지않는분류' ),
+       'Unusedimages'              => array( '안쓰는파일', '안쓰는그림', '쓰이지않는파일', '쓰이지않는그림' ),
+       'Unusedtemplates'           => array( '안쓰는틀', '쓰이지않는틀' ),
        'Unwatchedpages'            => array( '주시안되는문서' ),
-       'Upload'                    => array( '파일올리기', '그림올리기' ),
+       'Upload'                    => array( '올리기', '파일올리기', '그림올리기' ),
        'UploadStash'               => array( '올린비공개파일' ),
        'Userlogin'                 => array( '로그인' ),
        'Userlogout'                => array( '로그아웃' ),
@@ -167,10 +167,10 @@ $magicWords = array(
        'redirect'                => array( '0', '#넘겨주기', '#REDIRECT' ),
        'notoc'                   => array( '0', '__목차숨김__', '__NOTOC__' ),
        'nogallery'               => array( '0', '__화랑숨김__', '__갤러리숨김__', '__NOGALLERY__' ),
-       'forcetoc'                => array( '0', '__목차보임__', '__FORCETOC__' ),
+       'forcetoc'                => array( '0', '__목차보임__', '__목차표시__', '__FORCETOC__' ),
        'toc'                     => array( '0', '__목차__', '__TOC__' ),
        'noeditsection'           => array( '0', '__단락편집숨김__', '__NOEDITSECTION__' ),
-       'noheader'                => array( '0', '__헤더숨김__', '__NOHEADER__' ),
+       'noheader'                => array( '0', '__머릿글숨김__', '__헤더숨김__', '__NOHEADER__' ),
        'currentmonth'            => array( '1', '현재월', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'           => array( '1', '현재월1', 'CURRENTMONTH1' ),
        'currentmonthname'        => array( '1', '현재월이름', 'CURRENTMONTHNAME' ),
@@ -204,6 +204,7 @@ $magicWords = array(
        'pagenamee'               => array( '1', '문서이름E', 'PAGENAMEE' ),
        'namespace'               => array( '1', '이름공간', 'NAMESPACE' ),
        'namespacee'              => array( '1', '이름공간E', 'NAMESPACEE' ),
+       'namespacenumber'         => array( '1', '이름공간수', 'NAMESPACENUMBER' ),
        'talkspace'               => array( '1', '토론이름공간', 'TALKSPACE' ),
        'talkspacee'              => array( '1', '토론이름공간E', 'TALKSPACEE' ),
        'subjectspace'            => array( '1', '본문서이름공간', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -221,8 +222,9 @@ $magicWords = array(
        'msg'                     => array( '0', '메시지:', 'MSG:' ),
        'subst'                   => array( '0', '풀기:', 'SUBST:' ),
        'safesubst'               => array( '0', '안전풀기:', 'SAFESUBST:' ),
-       'img_thumbnail'           => array( '1', '섬네일', '썸네일', 'thumbnail', 'thumb' ),
-       'img_manualthumb'         => array( '1', '섬네일=$1', '썸네일=$1', 'thumbnail=$1', 'thumb=$1' ),
+       'msgnw'                   => array( '0', '위키잘못메시지:', 'MSGNW:' ),
+       'img_thumbnail'           => array( '1', '섬네일', '썸네일', '축소판', 'thumbnail', 'thumb' ),
+       'img_manualthumb'         => array( '1', '섬네일=$1', '썸네일=$1', '축소판=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'               => array( '1', '오른쪽', 'right' ),
        'img_left'                => array( '1', '왼쪽', 'left' ),
        'img_none'                => array( '1', '없음', 'none' ),
@@ -231,14 +233,19 @@ $magicWords = array(
        'img_framed'              => array( '1', '프레임', 'framed', 'enframed', 'frame' ),
        'img_frameless'           => array( '1', '프레임없음', 'frameless' ),
        'img_page'                => array( '1', '문서=$1', 'page=$1', 'page $1' ),
+       'img_upright'             => array( '1', '위오른쪽', '위오른쪽=$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'              => array( '1', '테두리', 'border' ),
        'img_baseline'            => array( '1', '밑줄', 'baseline' ),
        'img_sub'                 => array( '1', '아래첨자', 'sub' ),
        'img_super'               => array( '1', '위첨자', 'super', 'sup' ),
        'img_top'                 => array( '1', '위', 'top' ),
+       'img_text_top'            => array( '1', '글자위', '텍스트위', 'text-top' ),
        'img_middle'              => array( '1', '중간', 'middle' ),
        'img_bottom'              => array( '1', '아래', 'bottom' ),
+       'img_text_bottom'         => array( '1', '글자아래', '텍스트아래', 'text-bottom' ),
        'img_link'                => array( '1', '링크=$1', 'link=$1' ),
+       'img_alt'                 => array( '1', '대체글=$1', 'alt=$1' ),
+       'int'                     => array( '0', '정수:', 'INT:' ),
        'sitename'                => array( '1', '사이트이름', 'SITENAME' ),
        'ns'                      => array( '0', '이름:', '이름공간:', 'NS:' ),
        'nse'                     => array( '0', '이름E:', '이름공간E:', 'NSE:' ),
@@ -251,6 +258,8 @@ $magicWords = array(
        'stylepath'               => array( '0', '스타일경로', 'STYLEPATH' ),
        'grammar'                 => array( '0', '문법:', 'GRAMMAR:' ),
        'gender'                  => array( '0', '성별:', 'GENDER:' ),
+       'notitleconvert'          => array( '0', '__제목변환없음__', '__제변없음__', '__제목변환안함__', '__제변안함__', '__NOTITLECONVERT__', '__NOTC__' ),
+       'nocontentconvert'        => array( '0', '__내용변환없음__', '__내변없음__', '__내용변환안함__', '__내변안함__', '__NOCONTENTCONVERT__', '__NOCC__' ),
        'currentweek'             => array( '1', '현재주', 'CURRENTWEEK' ),
        'currentdow'              => array( '1', '현재요일숫자', 'CURRENTDOW' ),
        'localweek'               => array( '1', '지역주', 'LOCALWEEK' ),
@@ -266,11 +275,14 @@ $magicWords = array(
        'plural'                  => array( '0', '복수:', '복수형:', 'PLURAL:' ),
        'fullurl'                 => array( '0', '전체주소:', 'FULLURL:' ),
        'fullurle'                => array( '0', '전체주소E:', 'FULLURLE:' ),
+       'canonicalurl'            => array( '0', '표준주소:', 'CANONICALURL:' ),
+       'canonicalurle'           => array( '0', '표준주소E:', 'CANONICALURLE:' ),
        'lcfirst'                 => array( '0', '첫소문자:', 'LCFIRST:' ),
        'ucfirst'                 => array( '0', '첫대문자:', 'UCFIRST:' ),
        'lc'                      => array( '0', '소문자:', 'LC:' ),
        'uc'                      => array( '0', '대문자:', 'UC:' ),
-       'displaytitle'            => array( '1', '제목표시', 'DISPLAYTITLE' ),
+       'raw'                     => array( '0', '원시:', 'RAW:' ),
+       'displaytitle'            => array( '1', '제목보이기', '제목표시', 'DISPLAYTITLE' ),
        'newsectionlink'          => array( '1', '__새글쓰기__', '__NEWSECTIONLINK__' ),
        'nonewsectionlink'        => array( '1', '__새글쓰기숨기기__', '__NONEWSECTIONLINK__' ),
        'currentversion'          => array( '1', '현재버전', 'CURRENTVERSION' ),
@@ -278,11 +290,16 @@ $magicWords = array(
        'anchorencode'            => array( '0', '책갈피인코딩', 'ANCHORENCODE' ),
        'currenttimestamp'        => array( '1', '현재타임스탬프', 'CURRENTTIMESTAMP' ),
        'localtimestamp'          => array( '1', '지역타임스탬프', 'LOCALTIMESTAMP' ),
+       'directionmark'           => array( '1', '명령검토', 'DIRECTIONMARK', 'DIRMARK' ),
        'language'                => array( '0', '#언어:', '#LANGUAGE:' ),
        'contentlanguage'         => array( '1', '기본언어', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
        'pagesinnamespace'        => array( '1', '이름공간문서수', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
        'numberofadmins'          => array( '1', '관리자수', 'NUMBEROFADMINS' ),
+       'formatnum'               => array( '0', '수형식', 'FORMATNUM' ),
+       'padleft'                 => array( '0', '대체왼쪽', 'PADLEFT' ),
+       'padright'                => array( '0', '대체오른쪽', 'PADRIGHT' ),
        'special'                 => array( '0', '특수기능', 'special' ),
+       'speciale'                => array( '0', '특수기능E', '특수기능e', 'speciale' ),
        'defaultsort'             => array( '1', '기본정렬:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                => array( '0', '파일경로:', '그림경로:', 'FILEPATH:' ),
        'tag'                     => array( '0', '태그', 'tag' ),
@@ -290,11 +307,16 @@ $magicWords = array(
        'pagesincategory'         => array( '1', '분류문서수', 'PAGESINCATEGORY', 'PAGESINCAT' ),
        'pagesize'                => array( '1', '문서크기', 'PAGESIZE' ),
        'index'                   => array( '1', '__색인__', '__INDEX__' ),
-       'noindex'                 => array( '1', '__색인거부__', '__NOINDEX__' ),
+       'noindex'                 => array( '1', '__색인안함__', '__색인거부__', '__NOINDEX__' ),
        'numberingroup'           => array( '1', '권한별사용자수', '그룹별사용자수', 'NUMBERINGROUP', 'NUMINGROUP' ),
        'staticredirect'          => array( '1', '__넘겨주기고정__', '__STATICREDIRECT__' ),
        'protectionlevel'         => array( '1', '보호수준', 'PROTECTIONLEVEL' ),
        'formatdate'              => array( '0', '날짜형식', 'formatdate', 'dateformat' ),
+       'url_path'                => array( '0', '경로', 'PATH' ),
+       'url_wiki'                => array( '0', '위키', 'WIKI' ),
+       'url_query'               => array( '0', '쿼리', 'QUERY' ),
+       'defaultsort_noerror'     => array( '0', '오류없음', 'noerror' ),
+       'defaultsort_noreplace'   => array( '0', '바꾸기없음', 'noreplace' ),
 );
 
 $bookstoreList = array(
@@ -461,7 +483,7 @@ $messages = array(
 'qbedit' => '편집',
 'qbpageoptions' => '문서 기능',
 'qbpageinfo' => '문서 정보',
-'qbmyoptions' => '내 문서',
+'qbmyoptions' => '내 사용자 문서',
 'qbspecialpages' => '특수 문서',
 'faq' => '자주 묻는 질문',
 'faqpage' => 'Project:FAQ',
@@ -474,7 +496,7 @@ $messages = array(
 'vector-action-undelete' => '되살리기',
 'vector-action-unprotect' => '보호 설정 변경',
 'vector-simplesearch-preference' => '향상된 검색어 제안 사용하기 (벡터 스킨 전용)',
-'vector-view-create' => '생성',
+'vector-view-create' => '만들기',
 'vector-view-edit' => '편집',
 'vector-view-history' => '역사',
 'vector-view-view' => '읽기',
@@ -499,7 +521,7 @@ $messages = array(
 'print' => '인쇄',
 'view' => '보기',
 'edit' => '편집',
-'create' => '생성',
+'create' => '만들기',
 'editthispage' => '이 문서 편집하기',
 'create-this-page' => '이 문서 만들기',
 'delete' => '삭제',
@@ -672,7 +694,7 @@ $1',
 'cannotdelete-title' => '"$1" 문서를 삭제할 수 없습니다.',
 'badtitle' => '잘못된 제목',
 'badtitletext' => '문서 제목이 잘못되었거나 비어있습니다.',
-'perfcached' => '다음 자료는 캐시된 것이므로 현재 상황을 반영하지 않을 수 있습니다. 캐시에 최대 {{PLURAL:$1|$1개의 결과}}가 있습니다.',
+'perfcached' => '다음 자료는 캐시된 것이므로 현재 상황을 반영하지 않을 수 있습니다. 캐시에 최대 {{PLURAL:$1|결과 $1개}}가 있습니다.',
 'perfcachedts' => '다음 자료는 캐시된 것으로, $1에 마지막으로 갱신되었습니다.  캐시에 최대 {{PLURAL:$4|$4개의 결과}}가 있습니다.',
 'querypage-no-updates' => '이 문서의 갱신이 현재 비활성화되어 있습니다. 자료가 잠시 갱신되지 않을 것입니다.',
 'wrong_wfQuery_params' => 'wfQuery()에서 잘못된 매개변수 발생<br />함수: $1<br />쿼리: $2',
@@ -805,7 +827,7 @@ $2',
 # Change password dialog
 'resetpass' => '비밀번호 바꾸기',
 'resetpass_announce' => '이메일로 받은 임시 비밀번호로 로그인했습니다. 로그인을 마치려면 새 비밀번호를 여기에서 설정해야 합니다:',
-'resetpass_text' => '<!-- 여기에 텍스트를 하세요 -->',
+'resetpass_text' => '<!-- 여기에 텍스트를 추가하세요 -->',
 'resetpass_header' => '비밀번호 변경',
 'oldpassword' => '이전 비밀번호:',
 'newpassword' => '새 비밀번호:',
@@ -1026,7 +1048,7 @@ $1, 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 
 'nocreatetext' => '{{SITENAME}}에서 새로운 문서를 생성하는 것은 제한되어 있습니다. 이미 존재하는 다른 문서를 편집하거나, [[Special:UserLogin|로그인하거나 계정을 만들 수 있습니다]].',
 'nocreate-loggedin' => '새 문서를 만들 권한이 없습니다.',
 'sectioneditnotsupported-title' => '부분 편집 지원 안됨',
-'sectioneditnotsupported-text' => '이 문서에서는  편집을 지원하지 않습니다.',
+'sectioneditnotsupported-text' => '이 문서에서는 문단 편집을 지원하지 않습니다.',
 'permissionserrors' => '권한 오류',
 'permissionserrorstext' => '해당 명령을 수행할 권한이 없습니다. 다음의 {{PLURAL:$1|이유}}를 확인해보세요:',
 'permissionserrorstext-withaction' => '$2 권한이 없습니다. 다음의 {{PLURAL:$1|이유}}를 확인해주세요:',
@@ -1095,7 +1117,7 @@ $2개 보다 적게 써야 하지만 지금은 $1개를 쓰고 있습니다.",
 'page_first' => '처음',
 'page_last' => '마지막',
 'histlegend' => "비교하려는 판을 선택한 다음 엔터나 아래의 버튼을 누르세요.<br />
-설명: '''({{int:cur}})''' = 최신판과 비교,
+설명: '''({{int:cur}})''' = 최신 판과 비교,
 '''({{int:last}})''' = 이전 판과 비교, '''{{int:minoreditletter}}'''= 사소한 편집",
 'history-fieldset-title' => '문서의 변경 내력 찾기',
 'history-show-deleted' => '삭제된 것만',
@@ -1248,7 +1270,7 @@ $1",
 'difference-title-multipage' => '문서 "$1"과 "$2" 간의 차이',
 'difference-multipage' => '(문서간의 차이)',
 'lineno' => '$1번째 줄:',
-'compareselectedversions' => '선택된 판들을 비교하기',
+'compareselectedversions' => '선택한 판을 비교하기',
 'showhideselectedversions' => '선택한 판을 보이기/숨기기',
 'editundo' => '편집 취소',
 'diff-multi' => '({{PLURAL:$2|한 사용자의|사용자 $2명의}} 중간의 편집 $1개 숨겨짐)',
@@ -1290,7 +1312,7 @@ $1",
 'search-result-category-size' => '문서 {{PLURAL:$1|1|$1}}개, 하위 분류 {{PLURAL:$2|1|$2}}개, 파일 {{PLURAL:$3|1|$3}}',
 'search-result-score' => '유사도: $1%',
 'search-redirect' => '($1에서 넘어옴)',
-'search-section' => '($1 )',
+'search-section' => '($1 문단)',
 'search-suggest' => '$1 문서를 찾고 계신가요?',
 'search-interwiki-caption' => '자매 프로젝트',
 'search-interwiki-default' => '$1 결과:',
@@ -1653,8 +1675,8 @@ $1",
 'upload-tryagain' => '수정된 파일 설명을 저장',
 'uploadnologin' => '로그인하지 않음',
 'uploadnologintext' => '파일을 올리려면 [[Special:UserLogin|로그인]]해야 합니다.',
-'upload_directory_missing' => 'í\8c\8cì\9d¼ ì\98¬ë¦¬ê¸°ì\9a© ë\94\94ë \89í\86 리($1)가 없고 웹 서버가 생성하지 못했습니다.',
-'upload_directory_read_only' => 'í\8c\8cì\9d¼ ì \80ì\9e¥ ë\94\94ë \89í\86 리($1)에 쓰기 권한이 없습니다.',
+'upload_directory_missing' => 'í\8c\8cì\9d¼ ì\98¬ë¦¬ê¸°ì\9a© ë\94\94ë \89í\84°리($1)가 없고 웹 서버가 생성하지 못했습니다.',
+'upload_directory_read_only' => 'í\8c\8cì\9d¼ ì \80ì\9e¥ ë\94\94ë \89í\84°리($1)에 쓰기 권한이 없습니다.',
 'uploaderror' => '올리기 오류',
 'upload-recreate-warning' => "'''경고: 이 파일로 된 이름이 삭제되었거나 옮겨졌습니다.'''
 
@@ -1675,7 +1697,7 @@ $1",
 갤러리 형식으로 확인하고 싶으시다면 [[Special:NewFiles|새 파일 목록]]을 보세요.',
 'filename' => '파일 이름',
 'filedesc' => '파일의 설명',
-'fileuploadsummary' => 'ì\84¤ëª\85:',
+'fileuploadsummary' => 'ì\9a\94ì\95½:',
 'filereuploadsummary' => '파일 변경에 대한 요약:',
 'filestatus' => '저작권 상태:',
 'filesource' => '출처:',
@@ -1758,7 +1780,7 @@ $1",
 'filename-bad-prefix' => '올리려고 하는 파일 이름이 \'\'\'"$1"\'\'\'(으)로 시작합니다.
 "$1"은(는) 디지털 사진기가 자동으로 붙이는 의미없는 이름입니다.
 파일에 대해 알기 쉬운 이름을 골라주세요.',
-'filename-prefix-blacklist' => ' #<!-- ì\9d´ ì¤\84ì\9d\80 ê·¸ë\8c\80ë¡\9c ë\91\90ì\84¸ì\9a\94 --> <pre>
+'filename-prefix-blacklist' => ' #<!-- ì\9d´ ì¤\84ì\9d\80 ê·¸ë\8c\80ë¡\9c ë\91\90ì\8b­ì\8b\9cì\98¤ --> <pre>
 # 문법은 다음과 같습니다:
 #   * "#"에서 그 줄의 끝까지는 코멘트입니다.
 #   * 비어 있지 않은 줄은 디지털 카메라에서 자동적으로 부여하는 파일 접두어입니다.
@@ -1771,7 +1793,7 @@ IMG # 일반
 JD # 제놉틱
 MGP # 펜탁스
 PICT # 기타
- #</pre> <!-- ì\9d´ ì¤\84ì\9d\80 ê·¸ë\8c\80ë¡\9c ë\91\90ì\84¸ì\9a\94 -->',
+ #</pre> <!-- ì\9d´ ì¤\84ì\9d\80 ê·¸ë\8c\80ë¡\9c ë\91\90ì\8b­ì\8b\9cì\98¤ -->',
 'upload-success-subj' => '올리기 성공',
 'upload-success-msg' => '파일을 [$2]에서 성공적으로 올렸습니다. 당신이 올린 파일이 여기 있습니다: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => '올리기 실패',
@@ -2136,6 +2158,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 로그 종류, 계정 이름, 문서 이름을 선택해서 볼 수 있습니다. 검색시에는 대소문자를 구별합니다.',
 'logempty' => '일치하는 항목이 없습니다.',
 'log-title-wildcard' => '다음 글로 시작하는 제목 검색',
+'showhideselectedlogentries' => '선택한 기록 항목 보이기/숨기기',
 
 # Special:AllPages
 'allpages' => '모든 문서 목록',
@@ -2440,7 +2463,7 @@ $UNWATCHURL
 # Restrictions (nouns)
 'restriction-edit' => '편집',
 'restriction-move' => '이동',
-'restriction-create' => '생성',
+'restriction-create' => '만들기',
 'restriction-upload' => '올리기',
 
 # Restriction levels
@@ -2931,7 +2954,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'tooltip-pt-logout' => '로그아웃',
 'tooltip-ca-talk' => '문서의 내용에 대한 토론 문서',
 'tooltip-ca-edit' => '문서를 편집할 수 있습니다. 저장하기 전에 미리보기를 해 주세요.',
-'tooltip-ca-addsection' => ' 추가하기',
+'tooltip-ca-addsection' => '문단 추가하기',
 'tooltip-ca-viewsource' => '문서가 잠겨 있습니다. 문서의 소스만 볼 수 있습니다.',
 'tooltip-ca-history' => '문서의 과거 버전들',
 'tooltip-ca-protect' => '문서 보호하기',
@@ -3347,7 +3370,7 @@ Variants for Chinese language
 'exif-disclaimer' => '면책 조항',
 'exif-contentwarning' => '콘텐츠 경고',
 'exif-giffilecomment' => 'GIF 파일 주석',
-'exif-intellectualgenre' => '컨텐츠 정보',
+'exif-intellectualgenre' => 'ì½\98텐츠 정보',
 'exif-subjectnewscode' => '주제 코드',
 'exif-scenecode' => 'IPTC 장면 코드',
 'exif-event' => '묘사된 사건',
@@ -3750,11 +3773,11 @@ $5
 'version-license' => '라이선스',
 'version-poweredby-credits' => "이 위키는 '''[//www.mediawiki.org/ MediaWiki]'''를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
 'version-poweredby-others' => '그 외 다른 개발자',
-'version-license-info' => '미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.
+'version-license-info' => "미디어위키는 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 파일을 재배포하거나 수정할 수 있습니다.
 
-미디어위키가 유용하게 사용될 수 있기를 바라지만 상용으로 사용되거나 특정 목적에 맞을 것이라는 것을 보증하지 않습니다. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참고하십시오.
+미디어위키가 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''. 자세한 내용은 GNU 일반 공중 사용 허가서 전문을 참고하십시오.
 
-당신은 이 프로그램을 통해 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 일반 공중 사용 허가서 전문]을 받았습니다; 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 온라인]으로 읽어보시기 바랍니다.',
+당신은 이 프로그램을 통해 [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU 일반 공중 사용 허가서 전문]을 받았습니다; 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 온라인으로 읽어보시기] 바랍니다.",
 'version-software' => '설치된 프로그램',
 'version-software-product' => '제품',
 'version-software-version' => '버전',
@@ -3789,7 +3812,7 @@ $5
 * <span class="mw-specialpagerestricted">제한된 특수 문서.</span>',
 'specialpages-group-maintenance' => '관리용 목록',
 'specialpages-group-other' => '다른 특수 문서',
-'specialpages-group-login' => '로그인 / 등록',
+'specialpages-group-login' => '로그인 / 가입',
 'specialpages-group-changes' => '최근 바뀜과 기록',
 'specialpages-group-media' => '파일 관리',
 'specialpages-group-users' => '사용자와 권한',
@@ -3872,8 +3895,8 @@ $5
 'logentry-delete-event-legacy' => '$1 사용자가 $3 문서 기록의 표시 설정을 변경하였습니다.',
 'logentry-delete-revision-legacy' => '$1 사용자가 $3 문서 편집의 표시 설정을 변경하였습니다.',
 'logentry-suppress-delete' => '$1 사용자가 $3 문서를 숨겼습니다.',
-'logentry-suppress-event' => '$1 사용자가 비공개적으로 $3의 {{PLURAL:$5|$5개의 기록}}에 대해 표시 설정을 바꾸었습니다: $4',
-'logentry-suppress-revision' => '$1 사용자가 비공개적으로 $3 문서의 {{PLURAL:$5|$5개의 판}}에 대해 표시 설정을 바꾸었습니다: $4',
+'logentry-suppress-event' => '$1 사용자가 비공개적으로 $3의 {{PLURAL:$5|기록 $5개}}에 대해 표시 설정을 바꾸었습니다: $4',
+'logentry-suppress-revision' => '$1 사용자가 비공개적으로 $3 문서의 {{PLURAL:$5|판 $5개}}에 대해 표시 설정을 바꾸었습니다: $4',
 'logentry-suppress-event-legacy' => '$1 사용자가 비공개적으로 $3의 항목에 대한 표시 설정을 바꾸었습니다.',
 'logentry-suppress-revision-legacy' => '$1 사용자가 비공개적으로 $3 문서의 특정 판에 대한 표시 설정을 바꾸었습니다.',
 'revdelete-content-hid' => '내용 숨겨짐',
@@ -3909,8 +3932,8 @@ $5
 'feedback-error3' => '오류: API가 응답하지 않음',
 'feedback-thanks' => '감사합니다! ‘[$2 $1]’ 문서에 당신의 의견을 남겼습니다.',
 'feedback-close' => '완료',
-'feedback-bugcheck' => 'ê°\90ì\82¬í\95©ë\8b\88ë\8b¤! í\98¹ì\8b\9c í\95´ë\8b¹ ì\82¬í\95­ì\9d´ [$1 ê¸°ì¡´ì\9d\98 ë²\84ê·¸ ë¦¬í\8f¬í\8a¸]에 올라와 있는지 확인해주세요.',
-'feedback-bugnew' => 'í\99\95ì\9d¸í\96\88ì\8aµë\8b\88ë\8b¤. ì\83\88ë¡\9cì\9a´ ë²\84ê·¸ ë¦¬í\8f¬í\8a¸를 작성합니다.',
+'feedback-bugcheck' => 'ê°\90ì\82¬í\95©ë\8b\88ë\8b¤! í\98¹ì\8b\9c í\95´ë\8b¹ ì\82¬í\95­ì\9d´ [$1 ê¸°ì¡´ì\9d\98 ë²\84ê·¸ ë³´ê³ ì\84\9c]에 올라와 있는지 확인해주세요.',
+'feedback-bugnew' => 'í\99\95ì\9d¸í\96\88ì\8aµë\8b\88ë\8b¤. ì\83\88ë¡\9cì\9a´ ë²\84ê·¸ ë³´ê³ ì\84\9c를 작성합니다.',
 
 # API errors
 'api-error-badaccess-groups' => '당신은 이 위키에 파일을 올릴 권한이 없습니다.',
index 84c6b01..1fd6c5c 100644 (file)
@@ -542,11 +542,14 @@ $2',
 'passwordreset-capture' => 'Джазылгъан билдириуню эсебине къара?',
 'passwordreset-capture-help' => 'Бу белгини салсагъыз, къошулуучугъа ийилген болджаллы пароль бла билдириу сизге кёргюзюллюкдю.',
 'passwordreset-email' => 'Электрон почтаны адреси:',
+'passwordreset-emailtitle' => '{{SITENAME}} сайтдагъы тергеу джазыуну юсюнден билгиле',
 
 # Special:ChangeEmail
 'changeemail-no-info' => 'Бу бетни кёрюр ючюн сиз системагъа тергеу джазыуугъуз (аккаунтугъуз) бла кирирге керексиз.',
+'changeemail-oldemail' => 'Почтаны бусагъатдагъы адреси:',
 'changeemail-newemail' => 'Электрон почтаны джангы адреси:',
 'changeemail-none' => '(джокъ)',
+'changeemail-submit' => 'Адресни тюрлендир',
 'changeemail-cancel' => 'Ызына алыу',
 
 # Edit page toolbar
@@ -933,6 +936,8 @@ $1",
 
 # Diffs
 'history-title' => '$1 — тюрлениу тарихи',
+'difference-title' => '$1 — версияларыны арасында башхалыкъла',
+'difference-title-multipage' => '«$1» эм «$2» бетлени арасында башхалыкъла',
 'difference-multipage' => '(Бетле арасында башхалыкъ)',
 'lineno' => 'Тизгин $1:',
 'compareselectedversions' => 'Сайланнган версияланы тенглешдириу',
@@ -964,14 +969,14 @@ $1",
 'searchhelp-url' => 'Help:Ичиндегиле',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикс бла бетни кёргюз]]',
 'searchprofile-articles' => 'Баш бетле',
-'searchprofile-project' => 'Болушлукъ бла проектлени бетлери',
+'searchprofile-project' => 'Болушлукъ эм проект бетле',
 'searchprofile-images' => 'Мультимедия',
-'searchprofile-everything' => 'ХаÑ\80 Ð½Ðµ',
+'searchprofile-everything' => 'ХаÑ\80 ÐºÑ\8aайда',
 'searchprofile-advanced' => 'Кенгерген',
 'searchprofile-articles-tooltip' => '$1 ичинде изле',
 'searchprofile-project-tooltip' => '$1 ичинде изле',
 'searchprofile-images-tooltip' => 'Файлланы изле',
-'searchprofile-everything-tooltip' => 'Бютеу бетледе изле (сюзюу бетледеда)',
+'searchprofile-everything-tooltip' => 'Бютёу бетледе изле (сюзюу бетледе да)',
 'searchprofile-advanced-tooltip' => 'Энчи ат аланладада изле',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 сёз}})',
 'search-result-category-size' => '{{PLURAL:$1|1 элемент|$1 элемент}} ({{PLURAL:$2|1 тюбкатегория|$2 тюбкатегория}}, {{PLURAL:$3|1 файл|$3 файл}})',
@@ -986,13 +991,13 @@ $1",
 'search-mwsuggest-disabled' => 'юретиулесиз',
 'search-relatedarticle' => 'Байламлы',
 'mwsuggest-disable' => 'AJAX юретиулени джукълатыгъыз',
-'searcheverything-enable' => 'Атланы бютеу аланларында изле',
+'searcheverything-enable' => 'Атланы бютёу аламларында изле',
 'searchrelated' => 'бейламлы',
-'searchall' => 'бютеу',
+'searchall' => 'бютёу',
 'showingresults' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|эсеб|эсебле}} {{PLURAL:$1|кёргюзюлгенди|кёргюзюлгендиле}}.',
 'showingresultsnum' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|эсеб|эсебле}} {{PLURAL:$3|кёргюзюлгенди|кёргюзюлгендиле}}.',
 'showingresultsheader' => "'''$4''' ючюн {{PLURAL:$5|'''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
-'nonefound' => "'''Эсгериу.''' Тынгылау бла излеу бютеу атланы аламында бардырылмайды. Бютеу атланы аламында (къошулуучуланы сюзюулери, шаблонла эмда башхала) излер ючюн аллындан ''all:'' префиксни хайырландырыгъыз неда керекли атланы аламын хайырландырыгъыз.",
+'nonefound' => "'''Эсгериу.''' Тынгылау бла излеу бютёу атланы аламында бардырылмайды. Бютёу атланы аламында (къошулуучуланы сюзюулери, шаблонла эмда башхала) излер ючюн аллындан ''all:'' префиксни хайырландырыгъыз неда керекли атланы аламын белгилегиз.",
 'search-nonefound' => 'Соруу бла келишген эсеб джокъду',
 'powersearch' => 'Кенг излеу',
 'powersearch-legend' => 'Кенг излеу',
@@ -1000,8 +1005,8 @@ $1",
 'powersearch-redir' => 'Джибериулени кёргюз',
 'powersearch-field' => 'Излеу:',
 'powersearch-togglelabel' => 'Белгиле:',
-'powersearch-toggleall' => 'Барысыда',
-'powersearch-togglenone' => 'Бирида',
+'powersearch-toggleall' => 'Барысы да',
+'powersearch-togglenone' => 'Бири да',
 'search-external' => 'Тыш излеу',
 'searchdisabled' => '{{SITENAME}} сайтда излеу талай заманнга тохтатылгъанды. Бусагъатда Google бла хайырланыб {{SITENAME}} ичинде излеу этерге боллукъсуз. Излеу сайтлада индекслери бир кесек эски болургъа боллугъун унутмагъыз.',
 
@@ -1012,6 +1017,7 @@ $1",
 'qbsettings-fixedright' => 'Онгу къатды',
 'qbsettings-floatingleft' => 'Солгъа джюзеди',
 'qbsettings-floatingright' => 'Оннга джюзеди',
+'qbsettings-directionality' => 'Тилигизни джазмасыны онг/сол таба джазылгъанына кёре бегитилибди',
 
 # Preferences page
 'preferences' => 'Джарашдырыула',
@@ -2110,6 +2116,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Атла алам:',
 'invert' => 'Сайланнганны айландыр',
+'namespace_association' => 'Байламлы ат алам',
 'blanknamespace' => '(Баш)',
 
 # Contributions
@@ -3418,6 +3425,7 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'revdelete-unrestricted' => 'администратолра ючюн этилген чеклениуле къоратылгъандыла',
 'logentry-move-move' => '$1, $3 бетни атын $4 деб тюрлендирди',
 'logentry-patrol-patrol-auto' => '$1, $3 бетни $4 версиясын автомат халда тинтиб чыкъды',
+'logentry-newusers-create' => '$1 тергеу джазыу (аккаунт) къурады',
 'newuserlog-byemail' => 'пароль электрон почта бла джиберилгенди',
 
 # Feedback
index dbcabdc..0f2bd3f 100644 (file)
@@ -198,7 +198,7 @@ $specialPageAliases = array(
 
 $magicWords = array(
        'redirect'                => array( '0', '#ÖMLEIDE_OP', '#ÖMLEIDE', '#LEIDT_ÖM_OP', '#ÖMLEIDUNG', '#WEITERLEITUNG', '#REDIRECT' ),
-       'nogallery'               => array( '0', '__KEIN_JALLERIE__', '__KEINE_GALERIE__', '__NOGALLERY__' ),
+       'nogallery'               => array( '0', '__KEIN_JALLERIE__', '__KEINE_GALERIE__', '__KEINEGALERIE__', '__NOGALLERY__' ),
        'toc'                     => array( '0', '__ENHALLT__', '__INHALTSVERZEICHNIS__', '__TOC__' ),
        'img_right'               => array( '1', 'rähß', 'räts', 'rechts', 'right' ),
        'img_left'                => array( '1', 'lengks', 'lenks', 'links', 'left' ),
@@ -614,6 +614,11 @@ $2',
 'customjsprotected' => 'Do darfs di JavaSkep-Sigg heh nit ändere. Se jehööt enem andere Metmacher un es e Stöck funn dämm sing eije Enstellunge.',
 'ns-specialprotected' => '{{int:nstab-special}}e künne mer nit ändere.',
 'titleprotected' => "Dä Tittel för en Sigg eß verbodde, fum [[User:$1]], un dr Jrond wohr: ''„$2“''",
+'filereadonlyerror' => 'Mer künne di Dattei „$1“ nit ändere, weil dä Dateijebeshtand „$2“ bloß för ze Lässe doh es.
+
+Dä Wiki_Köbes dovun hät beim Deeschmaache als Jrond aanjejovve: „$3“',
+'invalidtitle-knownnamespace' => '„$3“ es ene onjöltijje Tittel för em Appachtemang „$2“',
+'invalidtitle-unknownnamespace' => '„$2“ es ene onjöltijje Tittel för e Appachtemang met dä verkehte Nommer $1.',
 
 # Virus scanner
 'virus-badscanner' => "Fääler en de Enstellunge: Dat Projramm ''$1'' fö noh Kompjuterwiere ze söke, dat kenne mer nit.",
@@ -735,6 +740,7 @@ för der Momang nit noch mit Metmaacher neu aanmellde.',
 'emailconfirmlink' => 'Dun Ding <i lang="en">e-mail</i> Adress bestätije looße',
 'invalidemailaddress' => 'Wat De do als en Adreß för Ding <i lang="en">e-mail</i> aanjejovve häs, süht noh Dress us. En <i lang="en">e-mail</i> Adreß en däm Format, dat jitt et nit. Muss De repareere - oder Do mähs dat Feld leddich un schrievs nix eren. Un dann versök et noch ens.',
 'cannotchangeemail' => 'Sing <i lang="en">e-mail<i> Addreß kam_mer ehe em Wiki nit ändere.',
+'emaildisabled' => 'Heh dat Wiki kann kein <i lang="en">e-mails</i> verschecke.',
 'accountcreated' => 'Aanjemeldt',
 'accountcreatedtext' => 'De Aanmeldung för dä Metmaacher „<strong>$1</strong>“ es dorsch, De kanns jetz enlogge.',
 'createaccount-title' => 'Enne neue Metmaacher aanmelde för {{GRAMMAR:Akkusativ|{{SITENAME}}}}',
@@ -985,6 +991,7 @@ aanfange dun, alsu etwa: {{ns:user}}:Name/vector.css, un {{ns:user}}:Name/vector
 'updated' => '(Aanjepack)',
 'note' => "'''Opjepass:'''",
 'previewnote' => "'''Heh kütt nor de Vör-Aansich — Ding Änderunge sin noch nit jesechert!'''",
+'continue-editing' => 'Jangk tiräk nohm Plaz zom Schrieve',
 'previewconflict' => 'Heh die Vör-Aansich zeich dä Enhald vum bovvere Texfeld.
 Esu wööd dä Atikkel ussinn, wann De n jetz avspeichere däts.',
 'session_fail_preview' => "'''Schad: Ding Änderunge kunnte mer su nix met aanfange.
@@ -998,6 +1005,7 @@ Wann dat widder nit flupp, dann versök et ens met [[Special:UserLogout|Uslogge]
 'token_suffix_mismatch' => "'''Ding Änderung ham_mer nit övvernomme. Dinge Brauser hät Sazzeijche em verstoche <i lang=\"en\">Token</i> för et Ändere versout. Dat paßeet och ens, wann enne <i lang=\"en\">Proxy</i> nit fungkßjeneet. Et Affspeichere wör do jefährlesch, do künt dä Sigge_Enhaldt kapott bei jon.'''",
 'edit_form_incomplete' => "'''Ene Aandeil vun dämm Fommulaa es nit reshtesh om ẞööver aanjekumme. Donn Ding Ennjaabe prööve, repareere, un versöhg et norrens.'''",
 'editing' => 'De Sigg „$1“ ändere',
+'creating' => 'De Sigg „$1“ aanlääje',
 'editingsection' => 'Ne Avschnedd vun dä Sigg: „$1“ ändere',
 'editingcomment' => '„$1“ ändere (ene neue Avschnedd schrieve)',
 'editconflict' => 'Problemche: „$1“ dubbelt bearbeidt.',
@@ -1050,7 +1058,7 @@ Heh kütt der neuste Enndrach em Logbooch doh drövver:",
 'templatesusedsection' => '{{PLURAL:$1|De Schablon|Schablone|-nix-}} en däm Avschnedd heh:',
 'template-protected' => '(jeschöz)',
 'template-semiprotected' => '(halfjeschöz - tabu för neu Metmaacher un ohne Enlogge)',
-'hiddencategories' => 'Die Sigg heh is en {{PLURAL:$1|de verstoche Saachjrupp: |$1 verstoche Saachjruppe: |keij verstoche Saachjruppe dren.}}',
+'hiddencategories' => 'Die Sigg heh is en {{PLURAL:$1|dä verstoche Saachjrupp: |dä $1 verstoche Saachjruppe: |keij verstoche Saachjruppe dren.}}',
 'edittools' => '<!-- Dä Tex hee zeich et Wiki unger däm Texfeld zom „Ändere/Bearbeide“ un beim Texfeld vum „Huhlade“. -->',
 'nocreatetitle' => 'Neu Sigge Aanläje eß nit einfach esu müjjelesch.',
 'nocreatetext' => 'Sigge neu aanläje es nor müjjelich, wann de [[Special:UserLogin|enjelogg]] bes. Der ohne kanns De ävver Sigge ändere, die ald do sin.',
@@ -1071,6 +1079,7 @@ Ene Jrond weße mer nit.',
 'edit-conflict' => 'Dubbelt beärbeit.',
 'edit-no-change' => 'Do häs ja nix aan dä Sigg jeändert, do dom_mer och nix domet.',
 'edit-already-exists' => 'Kunnt kei neu Sigg aanlääje. Di Sigg jidd_et ald.',
+'defaultmessagetext' => 'Dä standaadmäßije Tex',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Opjepaß:''' Die Sigg heh määt zovill Opwand met Paaser-Funkßjohne.
@@ -1084,6 +1093,12 @@ Ene Jrond weße mer nit.',
 'parser-template-loop-warning' => 'Schablon roofe sesch em Kringel op: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Schablone refe sesch zo öff sellver op ($1)',
 'language-converter-depth-warning' => 'Zoh vill Verschachtelunge (övver $1) beim Täx-Ömwandelle vun ein Shprooch en andere.',
+'node-count-exceeded-category' => 'Sigge, woh dä  node-count övverschredde es',
+'node-count-exceeded-warning' => 'Heh di Sigg hät dä  node-count övverschredde',
+'expansion-depth-exceeded-category' => 'Sigge, woh de  expansion depth övverschredde es',
+'expansion-depth-exceeded-warning' => 'Heh di Sigg hät  the expansion depth övverschredde',
+'parser-unstrip-loop-warning' => 'Ene Befähl em Täx betrick sesch op sesch sellef.',
+'parser-unstrip-recursion-limit' => 'Ene Befähl em Täx es mieh wi {{PLURAL:$1|eijmohl|$1 Mohl|jaa nit}} met  sesch sellef verschachtelt.',
 
 # "Undo" feature
 'undo-success' => 'De Änderung könnte mer zeröck nämme. Beloor Der de Ungerscheid un dann donn di Sigg avspeichere, wann De dengks, et es en Oodenung esu.',
@@ -1262,6 +1277,8 @@ Donn de Version makeere bes wohen (inklusive) dat övverdraare wäde sull. Donn
 
 # Diffs
 'history-title' => 'Älder Versione vun dä Sigg „$1“',
+'difference-title' => 'Ongerscheide zwesche Versione vun dä Sigg „$1“',
+'difference-title-multipage' => 'Ongerscheide zwesche dä Sigge „$1“ un „$2“',
 'difference-multipage' => '(Ongerscheide zwesche Sigge)',
 'lineno' => 'Reih $1:',
 'compareselectedversions' => 'Dun de markeete Version verjliche',
@@ -1368,6 +1385,7 @@ dat dänne ihr Daate topaktuell sin,
 'prefs-beta' => 'Saache zum Ußprobeere, di schun en Zick lang erproob woode sin',
 'prefs-datetime' => 'Datum un Uhrzigge',
 'prefs-labs' => 'Neu Saache zom Ußprobeere, die künnte noch nit akeraat fluppe',
+'prefs-user-pages' => 'Metmaachersigge',
 'prefs-personal' => 'De Enstellunge',
 'prefs-rc' => 'Neuste Änderunge',
 'prefs-watchlist' => 'De Oppassliss',
@@ -1840,6 +1858,7 @@ Wann et nit flupp, verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
 'upload-too-many-redirects' => 'Zoh vill Ömleitunge en däm <i lang="en">URL</i>',
 'upload-unknown-size' => 'Mer weße nit, wi jruuß',
 'upload-http-error' => 'Ene <i lang="en">HTTP</i>-Fäähler es opjetrodde: $1',
+'upload-copy-upload-invalid-domain' => 'Fun dä Domain künne mer nix noh heh huh laade. Di es nit zohjelohße.',
 
 # File backend
 'backend-fail-stream' => 'Mer kunnte di Dattei $1 nit övverdraare.',
@@ -1847,6 +1866,7 @@ Wann et nit flupp, verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
 'backend-fail-notexists' => 'En Dattei $1 jidd et nit.',
 'backend-fail-hashes' => 'Mer kunnte kein Pröfsomme vun dä Datteje träcke zom verjliesche.',
 'backend-fail-notsame' => 'En Dattei mem Name $1 jidd et ald, di es ävver ongerscheidlesch.',
+'backend-fail-invalidpath' => '„$1“ es keine jölteje Pahd för et Speischere.',
 'backend-fail-delete' => 'Mer kunnte di Dattei $1 nit fottschmiiße.',
 'backend-fail-alreadyexists' => 'En Dattei $1 jidd et ald.',
 'backend-fail-store' => 'Mer kunnte di Dattei $1 nit onger $2 affschpeischere.',
@@ -1857,7 +1877,19 @@ Wann et nit flupp, verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
 'backend-fail-closetemp' => 'Mer kunnte de Zweschedattei no zohmaache.',
 'backend-fail-read' => 'Mer kunnte di Dattei $1 nit lässe.',
 'backend-fail-create' => 'Mer kunnte di Dattei $1 nit schrieve.',
+'backend-fail-maxsize' => 'Mer kunnte di Dattei $1 nit schrieve, weil se jrüüßer wi {{PLURAL:$2|ein Byte|$2 Bytes|kein Byte}} es.',
+'backend-fail-readonly' => 'Dem Wiki sing  Schpeischersysteem „$1“ es em Momang bloß för ze Lässe enjeschtallt.
+Als Jrond es aanjejovve: „$2“',
+'backend-fail-synced' => 'Di Dattei „$1“ es em Momang en enem onklohre Zohschtand en dem Wiki singe ennere Schpeischersysteeme.',
+'backend-fail-connect' => 'Mer kunnte kein Verbendong met däm Schpeischersysteem „$1“ opnämme.',
+'backend-fail-internal' => 'Ene onklohre Fähler es opjetrodde met däm Schpeischersysteem „$1“.',
 'backend-fail-contenttype' => 'Mer kunnte de Zoot Enhalt nit eruß krijje, di en dä Dattei „$1“ faßjehallde wääde sull.',
+'backend-fail-batchsize' => 'Dat Schpeischersysteem hät ene Pöngel met {{PLURAL:$1|einem Befähl|$1 Befähle|keinem Befähl}} krääje, ävver et kann bloß {{PLURAL:$2|eine Befähl|$2 Befähle|keine Befähl}} op eijmohl.',
+'backend-fail-usable' => 'Mer kunnte di Dattei $1 nit schrieve, weil e Verzeischnes udder ene container fählt, udder et Rääsch, dren ze schrieve.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Mer kunnte kein Verbendong opnämme met dä Daatebangk för et Logbooch vum Schpeischersysteem „$1“.',
+'filejournal-fail-dbquery' => 'Mer kunnte en et Logbooch vum Schpeischersysteem „$1“ nix eren schriive.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Mer kunnte „$1“ nit freijävve. Ed es nit jeschpächt.',
@@ -1977,6 +2009,10 @@ Mer han och [$2 jenouer Date övver se].',
 'sharedupload-desc-here' => 'Di Datei kütt vun $1 un kann en ander Projekte jebruch wäde.
 Jenouer Date övver se fingk mer op dä [$2 Sigg övver se].
 Dat sellve shteiht hee dronger.',
+'sharedupload-desc-edit' => 'Heh di Dateti es vun $1 un künnt anderswoh och jebruch wääde.
+Velleisch sullts De dä [$2 Täx övver se doh]  aanpasse.',
+'sharedupload-desc-create' => 'Heh di Dateti es vun $1 un künnt anderswoh och jebruch wääde.
+Velleisch sullts De dä [$2 Täx övver se doh]  aanpasse.',
 'filepage-nofile' => 'Et jit kein Datei met dämm Nahme.',
 'filepage-nofile-link' => 'Et jit kein Datei met dämm Nahme, ävver De kanns se [$1 huhlaade].',
 'uploadnewversion-linktext' => 'Dun en neu Version vun dä Datei huhlade',
@@ -2119,6 +2155,13 @@ Tipp: Merk Der dä Tittel vun dä Sigg dovör.',
 'wantedpages' => 'Sigge, die mer noch nit han, die noch jebruch wääde',
 'wantedpages-badtitle' => 'Ene onjöltijje Tittel för en Sigg: $1',
 'wantedfiles' => 'Dateie, di onß noch fähle',
+'wantedfiletext-cat' => 'Heh di Datteije sin nit doh. Se wääde ävver jebruch, wi wann se doh wööre.
+Datteije uß frembde Sammlonge künne heh opjeleß sin, och wann et se jitt.
+Di sin dann <del>dorschjeschtresche</del>. 
+Sigge, woh Datteije jebruch wääde sulle, die mer jaa nit han, fengk mer och en dä [[:$1]].',
+'wantedfiletext-nocat' => 'Heh di Datteije sin nit doh. Se wääde ävver jebruch, wi wann se doh wööre.
+Datteije uß frembde Sammlonge künne heh opjeleß sin, och wann et se jitt.
+Di sin dann <del>dorschjeschtresche</del>.',
 'wantedtemplates' => 'Schablone, die mer noch nit han, die noch jebruch wääde',
 'mostlinked' => 'Atikele met de miehste Links drop',
 'mostlinkedcategories' => 'Saachjruppe met de miehste Links drop',
@@ -2193,6 +2236,7 @@ oder de Sigge ehr Name, un esu, einzel zoteet aanluure.
 Bei de Name moß mer op Jruß- un Kleinschreff aachjävve.",
 'logempty' => '<i>Mer han kein zopass Endräch en däm Logboch.</i>',
 'log-title-wildcard' => 'Sök noh Titelle, di aanfange met …',
+'showhideselectedlogentries' => 'Ußjesöhk Endrääsch verschteische udder zeije',
 
 # Special:AllPages
 'allpages' => 'All Sigge',
@@ -2211,6 +2255,12 @@ Bei de Name moß mer op Jruß- un Kleinschreff aachjävve.",
 'allpagesbadtitle' => 'Dä Siggename es nit ze jebruche. Dä hät e Köözel för en Sproch oder för ne Interwiki Link am Aanfang, oder et kütt e Zeiche dren för, wat en Siggename nit jeiht, villeich och mieh wie
 eins vun all däm op eimol.',
 'allpages-bad-ns' => "Dat Appachtemeng „$1“ ha'mer nit.",
+'allpages-hide-redirects' => 'Ömleidunge fott lohße',
+
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Dat heh küdd ussem Zewescheschpeischer un kann bes op $1 alt sin.',
+'cachedspecial-viewing-cached-ts' => 'Dat heh küdd ussem Zewescheschpeischer un nünnt nidd om neuste Schtand sin.',
+'cachedspecial-refresh-now' => 'De neuste Version.',
 
 # Special:Categories
 'categories' => 'Saachjruppe',
@@ -2285,11 +2335,12 @@ Adress en Dinge [[Special:Preferences|ming Enstellunge]] stonn han, öm en E-Mai
 schecke.',
 'emailuser' => 'E-mail aan dä Metmaacher',
 'emailpage' => 'E-mail aan ene Metmaacher',
-'emailpagetext' => 'Wann dä Metmaacher en E-mail Adress aanjejovve hätt en singe Enstellunge,
-un die deit et och, dann kanns De met däm Fomular hee unge en einzelne E-Mail aan dä Metmaacher schecke.
-Ding E-mail Adress, die De en [[Special:Preferences|Ding eije Enstellunge]] aanjejovve häs,
-die weed als em Avsender sing Adress en die E-Mail enjedrage.
-Domet kann, wä die E-Mail kritt, drop antwoote, un die Antwood jeiht tirek aan Dech.
+'emailpagetext' => 'Wann heh dä Metmaacher en Adräß för sing <i lang="en">e-mail</i> aanjejovve hätt en singe Enstellunge,
+un die deit et och, dann kanns De met däm Fomular hee unge en einzel <i lang="en">e-mail</i> aan dä Metmaacher schecke.
+
+Ding <i lang="en">e-mail</i>-Adräß, di De en [[Special:Preferences|Ding eije Enstellunge]] aanjejovve häs,
+di weed als em Afsender sing Adräß en Ding <i lang="en">e-mail</i> enjedrage.
+Domet kann, wä di <i lang="en">e-mail</i> kritt, drop antwoote, un di Antwood jeiht tirek aan Desch.
 Alles klor?',
 'usermailererror' => 'Dat E-Mail-Objek jov ene Fähler us:',
 'defemailsubject' => 'e-mail fum $1 {{GRAMMAR:fun|{{SITENAME}}}}.',
@@ -2371,14 +2422,14 @@ dann klick op „Nimieh drop oppasse“ wann De die Sigg om Schirm häs.",
 'enotif_anon_editor' => 'Dä namelose Metmaacher $1',
 'enotif_body' => 'Leeven $WATCHINGUSERNAME,
 
-{{GRAMMAR:em|{{SITENAME}}}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE vun „$PAGEEDITOR“ $CHANGEDORCREATED, unger $PAGETITLE_URL fings Do de neuste Version.
+{{GRAMMAR:em|{{SITENAME}}}} wood die Sigg „$PAGETITLE“ am $PAGEEDITDATE {{GENDER:$PAGEEDITOR|vum|vum|vum_Metmaacher|vun dä|vum}} „$PAGEEDITOR“ $CHANGEDORCREATED, unger $PAGETITLE_URL fings Do de neuste Version.
 
 $NEWPAGE
 
 {{int:summary}} „$PAGESUMMARY“ $PAGEMINOREDIT
 
 Do kanns dä Metmaacher „$PAGEEDITOR“ aanspreche:
-* E-mail: $PAGEEDITOR_EMAIL
+* Övver e-mail: $PAGEEDITOR_EMAIL
 * Em Wiki: $PAGEEDITOR_WIKI
 
 Do kriss vun jetz aan kein e-mail mieh, bes dat Do Der di Sigg aanjeluurt häs,
@@ -2391,10 +2442,10 @@ Ene schöne Jroß {{GRAMMAR:vun|{{SITENAME}}}}.
 Öm de Enshtällonge för Nohreeschet aan Desch ze ändere, jangk op:
 {{canonicalurl:{{#special:Preferences}}}}
 
-Do kanns hee Ding Oppassliss ändere:
+Do kanns hee Ding Oppassl ändere:
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-Öm di Sigg vun Dinger Oppassliss ze schmieße:
+Öm di Sigg vun Dinger Oppassl ze schmieße:
 $UNWATCHURL
 
 Do kanns hee noh Hölp luure:
@@ -2990,6 +3041,7 @@ Bes esu joot, un versök et noch ens.',
 'javascripttest-pagetext-frameworks' => 'Bes esu jood un söök eine vun dä Prööfömjävvonge us: $1',
 'javascripttest-pagetext-skins' => 'Sööke en Bovverfläsch udder et Ußsinn uß, öm di Prööfonge domet ze maache:',
 'javascripttest-qunit-intro' => 'Loor noh dä [$1 Dokemäntation övver et Prööfe] op mediawiki.org.',
+'javascripttest-qunit-heading' => 'De Sammlong vum MediaWiki sing JavaSkrep-<i lang="en">QUnit</i>-Pröövunge',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Don Ding eije Metmaachersigg aanzeije',
@@ -3895,6 +3947,9 @@ Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU Ge
 'version-software' => 'Installeete Soffwäer',
 'version-software-product' => 'Produk',
 'version-software-version' => 'Version',
+'version-entrypoints' => '<i lang="en>URLs</i> för enzeschteije',
+'version-entrypoints-header-entrypoint' => 'Enschteesch',
+'version-entrypoints-header-url' => '<i lang="en">URL</i>',
 
 # Special:FilePath
 'filepath' => 'Medije-Dateie med ier URL zëije',
@@ -4086,4 +4141,15 @@ Wat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg
 'api-error-uploaddisabled' => 'Et Huhlaade es en heh däm Wiki nit zohjelohße.',
 'api-error-verification-error' => 'Di Dattei künnt kappott sin, udder en verkehte Endong em Naame han.',
 
+# Durations
+'duration-seconds' => '{{PLURAL:$1|ein Sekund|$1 Sekunde|kein Sekund}}',
+'duration-minutes' => '{{PLURAL:$1|ein Menutt|$1 Menutte|kein Menutt}}',
+'duration-hours' => '{{PLURAL:$1|en Stund|$1 Stunde|kein Shtund}}',
+'duration-days' => '{{PLURAL:$1|ene Daach|$1 Dääsch|keine Daach}}',
+'duration-weeks' => '{{PLURAL: $1|en Woch|§1 Woche|kein Woch}}',
+'duration-years' => '{{PLURAL:$1|e Johr|$1 Johre|kei Johr}}',
+'duration-decades' => '{{PLURAL:$1|zehn Johre|$1 Johrzehnte|kei Johrzehnt}}',
+'duration-centuries' => '{{PLURAL:$1|e Johrhondert|$1 Johrhonderte|kei Johrhondert}}',
+'duration-millennia' => '{{PLURAL:$1|e Johrdousend|$1 Johrdousende|kei Johrdousend}}',
+
 );
index a82f0cf..ba7113e 100644 (file)
@@ -49,7 +49,7 @@ $specialPageAliases = array(
        'Randompage'                => array( 'Rûpela_tesadufî' ),
        'Randomredirect'            => array( 'Redirecta_tasadufî' ),
        'Recentchanges'             => array( 'Guherandinên_dawî' ),
-       'Search'                    => array( 'Lêbigere' ),
+       'Search'                    => array( 'Lê_bigere' ),
        'Statistics'                => array( 'Statîstîk' ),
        'Uncategorizedcategories'   => array( 'Kategoriyên_bê_kategorî' ),
        'Uncategorizedpages'        => array( 'Rûpelên_bê_kategorî' ),
@@ -59,27 +59,32 @@ $specialPageAliases = array(
 );
 
 $magicWords = array(
+       'redirect'                => array( '0', '#BERALÎKIRIN', '#REDIRECT' ),
        'notoc'                   => array( '0', '_NAVEROKTUNE_', '__NOTOC__' ),
        'nogallery'               => array( '0', '_GALERÎTUNE_', '__NOGALLERY__' ),
        'toc'                     => array( '0', '_NAVEROK_', '__TOC__' ),
        'noheader'                => array( '0', '_SERÎTUNE_', '__NOHEADER__' ),
+       'currentmonth1'           => array( '1', 'MEHANIHA1', 'CURRENTMONTH1' ),
        'currentday'              => array( '1', 'ROJA_NIHA', 'CURRENTDAY' ),
        'currentday2'             => array( '1', 'ROJA_NIHA2', 'CURRENTDAY2' ),
+       'currenttime'             => array( '1', 'DEMA_NIHA', 'CURRENTTIME' ),
        'numberofpages'           => array( '1', 'HEJMARA_RÛPELAN', 'NUMBEROFPAGES' ),
        'numberofarticles'        => array( '1', 'HEJMARA_GOTARAN', 'NUMBEROFARTICLES' ),
        'numberoffiles'           => array( '1', 'HEJMARA_DOSYEYAN', 'NUMBEROFFILES' ),
        'numberofusers'           => array( '1', 'HEJMARA_BIKARHÊNERAN', 'NUMBEROFUSERS' ),
        'numberofactiveusers'     => array( '1', 'HEJMARA_BIKARHÊNERÊN_ÇALAK', 'NUMBEROFACTIVEUSERS' ),
-       'numberofedits'           => array( '1', 'HEJMARA_GUHERANDINAN', 'NUMBEROFEDITS' ),
+       'numberofedits'           => array( '1', 'HEJMARA_GUHERTINAN', 'NUMBEROFEDITS' ),
        'subpagename'             => array( '1', 'BINRÛPEL', 'SUBPAGENAME' ),
        'img_right'               => array( '1', 'rast', 'right' ),
        'img_left'                => array( '1', 'çep', 'left' ),
-       'img_link'                => array( '1', 'lînk=$', 'link=$1' ),
+       'img_link'                => array( '1', 'girêdan=$', 'link=$1' ),
+       'sitename'                => array( '1', 'NAVÊ_PROJEYÊ', 'SITENAME' ),
        'grammar'                 => array( '0', 'RÊZIMAN.', 'GRAMMAR:' ),
        'gender'                  => array( '0', 'ZAYEND.', 'GENDER:' ),
        'plural'                  => array( '0', 'PIRRJIMAR:', 'PLURAL:' ),
        'currentversion'          => array( '1', 'VERSIYONA_NIHA', 'CURRENTVERSION' ),
-       'numberofadmins'          => array( '1', 'HEJMARA_ADAMÎNISTRATORAN', 'NUMBEROFADMINS' ),
+       'language'                => array( '0', '#ZIMAN', '#LANGUAGE:' ),
+       'numberofadmins'          => array( '1', 'HEJMARA_RÊVEBERAN', 'NUMBEROFADMINS' ),
        'special'                 => array( '0', 'taybet', 'special' ),
 );
 
@@ -148,8 +153,8 @@ $messages = array(
 'sun' => 'Ykş',
 'mon' => 'Duş',
 'tue' => 'Sêş',
-'wed' => 'Çarş',
-'thu' => 'Pşem',
+'wed' => 'Çrş',
+'thu' => 'Pşm',
 'fri' => 'În',
 'sat' => 'Şem',
 'january' => 'rêbendan',
@@ -159,23 +164,23 @@ $messages = array(
 'may_long' => 'gulan',
 'june' => 'pûşper',
 'july' => 'tîrmeh',
-'august' => 'tebax',
+'august' => 'gelawêj',
 'september' => 'rezber',
 'october' => 'kewçêr',
 'november' => 'sermawez',
-'december' => 'Berfanbar',
+'december' => 'berfanbar',
 'january-gen' => 'Rêbendan',
 'february-gen' => 'Reşemî',
 'march-gen' => 'Adar',
 'april-gen' => 'Avrêl',
 'may-gen' => 'Gulan',
-'june-gen' => 'Pûşper',
+'june-gen' => 'pûşper',
 'july-gen' => 'Tîrmeh',
 'august-gen' => 'Gelawêj',
-'september-gen' => 'Rezber',
+'september-gen' => 'rezber',
 'october-gen' => 'Kewçêr',
 'november-gen' => 'Sermawez',
-'december-gen' => 'Berfanbar',
+'december-gen' => 'berfanbar',
 'jan' => 'rêb',
 'feb' => 'reş',
 'mar' => 'adr',
@@ -209,7 +214,7 @@ $messages = array(
 'about' => 'Der barê',
 'article' => 'Gotar',
 'newwindow' => '(di rûpeleke din de wê were nîşandan)',
-'cancel' => 'Betalkirin',
+'cancel' => 'Betal bike',
 'moredotdotdot' => 'Bêhtir...',
 'mypage' => 'Rûpela min',
 'mytalk' => 'Gotûbêja min',
@@ -245,7 +250,7 @@ $messages = array(
 'variants' => 'Variyant',
 
 'errorpagetitle' => 'Çewtî',
-'returnto' => 'Bizîvire $1.',
+'returnto' => 'Vegere $1.',
 'tagline' => 'Ji {{SITENAME}}',
 'help' => 'Alîkarî',
 'search' => 'Lêgerîn',
@@ -269,8 +274,8 @@ $messages = array(
 'protect' => 'Biparêze',
 'protect_change' => 'guherandin',
 'protectthispage' => 'Vê rûpelê biparêze',
-'unprotect' => 'Parastinê rake',
-'unprotectthispage' => 'Parastina vê rûpelê rake',
+'unprotect' => 'Parastinê biguherîne',
+'unprotectthispage' => 'Parastina vê rûpelê biguherîne',
 'newpage' => 'Rûpela nû',
 'talkpage' => 'Vê rûpelê gotûbêj bike',
 'talkpagelinktext' => 'gotûbêj',
@@ -281,7 +286,7 @@ $messages = array(
 'talk' => 'Gotûbêj',
 'views' => 'Dîtin',
 'toolbox' => 'Qutiya amûran',
-'userpage' => 'Li rûpela vê/vî bikarhênerê/î binêre',
+'userpage' => 'Li rûpela bikarhêner binêre',
 'projectpage' => 'Li rûpela projeyê binêre',
 'imagepage' => 'Rûpela dosyeyan bibîne',
 'mediawikipage' => 'Rûpela peyamê bibîne',
@@ -297,7 +302,7 @@ $messages = array(
 'protectedpage' => 'Rûpela parastî',
 'jumpto' => 'Here cem:',
 'jumptonavigation' => 'navîgasyon',
-'jumptosearch' => 'lêbigere',
+'jumptosearch' => 'lêgerîn',
 'view-pool-error' => 'Bibore, server niha zêde barkirî ne. Gelek bikarhêner niha hewl didin ku vê rûpelê bibînin. Ji kerema xwe kêlîkekê bisekine, berî ku tu dîsa hewl bidî rûpelê bibînî.',
 'pool-errorunknown' => 'Çewtiyeke nenas',
 
@@ -318,7 +323,7 @@ $messages = array(
 'policy-url' => 'Project:Rêgez',
 'portal' => 'Portala komê',
 'portal-url' => 'Project:Portala komê',
-'privacy' => 'Parastina daneyan',
+'privacy' => 'Siyaseta taybetîtiyê',
 'privacypage' => 'Project:Parastina daneyan',
 
 'badaccess' => 'Çewtiya destûrê',
@@ -328,11 +333,11 @@ $messages = array(
 'versionrequired' => 'Versiyona $1 a MediaWiki pêwîst e',
 'versionrequiredtext' => 'Versiyona $1 a MediaWiki ji bo bikaranîna vê rûpelê pêwîst e. Li [[Special:Versiyon|rûpela versiyonê]] binêre.',
 
-'ok' => 'Temam',
+'ok' => 'Baş e',
 'retrievedfrom' => 'Ji "$1" hatiye standin.',
 'youhavenewmessages' => '$1 yên te hene ($2).',
 'newmessageslink' => 'Peyamên nû',
-'newmessagesdifflink' => 'ciyawazî ji guhertoya berê',
+'newmessagesdifflink' => 'cudayî ji guhertoya berê',
 'youhavenewmessagesmulti' => 'Peyamên nû li $1 ji te re hene.',
 'editsection' => 'biguherîne',
 'editold' => 'biguherîne',
@@ -359,7 +364,7 @@ $messages = array(
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Rûpel',
-'nstab-user' => 'Bikarhêner',
+'nstab-user' => 'Rûpela bikarhêner',
 'nstab-media' => 'Medya',
 'nstab-special' => 'Rûpela taybet',
 'nstab-project' => 'Rûpela projeyê',
@@ -397,7 +402,7 @@ Sedema girtinê ev e: $1',
 'internalerror' => 'Çewtiyeke navxweyî',
 'internalerror_info' => 'Çewtiya navxweyî: $1',
 'fileappenderror' => '"$1" li "$2" nehate zêdekirin.',
-'filecopyerror' => 'Daneya „$1“ ji bo „$2“ naye kopîkirin.',
+'filecopyerror' => 'Daneya "$1" ji bo "$2" naye kopîkirin.',
 'filerenameerror' => 'Navê pelê "$1" nebû "$2".',
 'filedeleteerror' => '"$1" jê nehate birîn.',
 'directorycreateerror' => 'Rêbera "$1" nehate çêkirin.',
@@ -406,7 +411,7 @@ Sedema girtinê ev e: $1',
 'unexpected' => 'Tiştekî nedihate hêvîkirin: "$1"="$2".',
 'formerror' => 'Çewtî: Ew nivîs pêk nehat.',
 'badarticleerror' => 'Ev çalakî di vê rûpelê de nabe.',
-'cannotdelete' => 'Ev rûpel nikare were jêbirin. Dibe ku kesekî din ev rûpel jêbiribe.',
+'cannotdelete' => 'Ev rûpel an wêne nikare were jêbirin. Dibe ku kesekî din ev rûpel jêbiribe.',
 'badtitle' => 'Sernivîsa nebaş',
 'badtitletext' => 'Sernavê rûpelê yê xwestî ne derbasdar, vala an jî ne xwediyê girêdaneke rast e.
 Dibe ku di sernavê de karakterên nayên bikaranîn hatibin nivîsandin.',
@@ -424,10 +429,8 @@ Pirs: $2',
 'protectedinterface' => "Di vê rûpelê da nivîsandin ji bo interface'î zimanan yê vê software'ê ye. Ew tê parstin ji bo vandalîzm li vê derê çênebe.",
 'editinginterface' => "'''Hişyarî:''' Tu rûpeleke ku di Wîkîpediya de ji bo sîstemê girîng e diguherînî. Guherandinên di vê rûpelê de wê ji aliyê hemû bikarhêneran ve werin dîtin. Ji bo wergerê ji kerema xwe di [//translatewiki.net/wiki/Main_Page?setlang=ku translatewiki.net] de bixebite, projeya MediaWiki.",
 'sqlhidden' => '(Jêpirskirina SQL hatiye veşartin)',
-'cascadeprotected' => '<strong>Ev rûpel hatiye parastin ji ber guherandinê, ji ber ku ev rûpela di {{PLURAL:$1|vê rûpelê|van rûpelan da}} tê bikaranîn:
-$2
-
-</strong>',
+'cascadeprotected' => 'Ev rûpel hatiye parastin ji ber guherandinê, ji ber ku ev rûpela di {{PLURAL:$1|vê rûpelê|van rûpelan da}} tê bikaranîn:
+$2',
 'namespaceprotected' => "Destûra te ji bo guhertina vê rûpelê '''$1''' di valahiya nav de nîne.",
 'ns-specialprotected' => 'Rûpelên taybet {{ns:special}} nikarin werin guherandin.',
 'titleprotected' => "Rûpelek bi vî navî nikare were çêkirin. Ev astengkirin ji [[User:$1|$1]] bi sedema ''$2'' hate çêkirin.",
@@ -436,7 +439,7 @@ $2
 'virus-unknownscanner' => 'Antîvîrusa nenas:',
 
 # Login and logout pages
-'logouttext' => "'''Tu niha derketî (logged out).'''
+'logouttext' => "'''Tu niha derketî.'''
 
 Tu dikarî {{SITENAME}} niha weke bikarhênerekî nediyarkirî bikarbînî, yan jî tu dikarî dîsa bi vî navê xwe yan navekî din wek bikarhêner [[Special:UserLogin|dîsa têkevî]].
 Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd kiriyî werin nîşandan, heta ku tu nîşanên çavlêgerandina (browser) xwe jênebî.",
@@ -451,16 +454,16 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
 'externaldberror' => 'Çewtiyeke bingeha daneyan heye, an jî destûra te ya rojanekirina hesabê xweyê navxweyî nîne.',
 'login' => 'Têkeve',
 'nav-login-createaccount' => 'Têkeve / hesabekî nû çêke',
-'loginprompt' => "<b>Eger tu xwe nû qeyd bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo xwe qeyd kirinê di {{SITENAME}} de divê ku ''cookies'' gengaz be.",
-'userlogin' => 'Têkeve an hesabeke nû çêke',
+'loginprompt' => "<b>Eger tu xwe nû tomar bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo tomarkirina te ya di {{SITENAME}} de divê ku ''cookies'' gengaz bin.",
+'userlogin' => 'Têkeve an hesabekî nû çêke',
 'userloginnocreate' => 'Têkeve',
 'logout' => 'Derkeve',
 'userlogout' => 'Derkeve',
-'notloggedin' => 'Xwe qeyd nekir (not logged in)',
+'notloggedin' => 'Xwe tomar nekir',
 'nologin' => 'Hesabê te nîne? $1.',
 'nologinlink' => 'Bibe endam',
 'createaccount' => 'Hesabê nû çêke',
-'gotaccount' => "Hesabê te heye? '''$1'''.",
+'gotaccount' => 'Hesabê te heye? $1.',
 'gotaccountlink' => 'Têkeve',
 'userlogin-resetlink' => 'Te agahiyên hesabê xwe ji bîr kirin?',
 'createaccountmail' => 'bi e-name',
@@ -471,9 +474,9 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
 'nocookiesnew' => "Hesabê bikarhêner hatibû çêkirin, lê te xwe qeyd nekiriye. {{SITENAME}} ji bo qeydkirina bikarhêneran cookie'yan bikartîne. Te bikaranîna cookie'yan girtiye. Xêra xwe cookie'yan qebûl bike, piştre bi navê bikarhêner û şîfreya xwe têkeve.",
 'nocookieslogin' => 'Ji bo qeydkirina bikarhêneran {{SITENAME}} "cookies" bikartîne. Te fonksîyona "cookies" girtîye. Xêra xwe kerema xwe "cookies" gengaz bike û careke din biceribîne.',
 'noname' => 'Navê ku te nivîsand derbas nabe.',
-'loginsuccesstitle' => 'Têketin serkeftî!',
-'loginsuccess' => 'Tu niha di {{SITENAME}} de qeydkirî yî wek "$1".',
-'nosuchuser' => 'Bikarhênera/ê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabeke nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
+'loginsuccesstitle' => 'Têketin serkevtî bû!',
+'loginsuccess' => 'Tu niha di {{SITENAME}} de tomarkirî yî wek "$1".',
+'nosuchuser' => 'Bikarhênerê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabekî nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
 'nosuchusershort' => 'Li vê derê ne bikarhênerek bi navî "$1" heye. Li nivîsandinê xwe seke.',
 'nouserspecified' => 'Divê tu navekî ji bo bikarhêneriyê hilbijêrî.',
 'login-userblocked' => 'Rê li ber vî/vê bikarhênerî/ê hatiye girtin. Destûr bo têketinê nîne.',
@@ -483,18 +486,18 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
 'password-name-match' => 'Divê şîfreya te ji navê te yê bikaranînê cuda be.',
 'password-login-forbidden' => 'Bikaranîna vî navî û vê şîfreyê hatiye qedexekirin.',
 'mailmypassword' => 'Şîfreyeke nû bi e-mail ji min re bişîne',
-'passwordremindertitle' => 'Şîfreyakekî nuh ji hesabekî {{SITENAME}} ra',
-'passwordremindertext' => 'Kesek (têbê tu, bi IP\'ya $1) xwast ku şîfreyekî nuh ji {{SITENAME}} ($4) ji te ra were şandin. Şîfreya nuh ji bikarhêner "$2" niha "$3" e. Tu dikarî niha têkevê û şîfreya xwe biguherînê.
+'passwordremindertitle' => 'Şîfreyeke nû ya ji hesabekî {{SITENAME}} re',
+'passwordremindertext' => 'Kesek (têbê tu, bi IP\'ya $1) xwast ku şîfreyeke nû ji {{SITENAME}} ($4) ji te ra were şandin. Şîfreya nû ya bikarhêner "$2" niha "$3" e. Tu dikarî niha têkevê û şîfreya xwe biguherînê.
 
 Eger kesekî din vê xastinê ji te ra xast ya şîfreya kevin dîsa hate bîrê te, tu dikarê guh nedê vê peyamê û tu dikarê bi şîfreya xwe yê kevin hên karbikê.',
 'noemail' => 'Navnîşana bikarhênerê/î "$1" nehat tomar kirine.',
 'noemailcreate' => 'Divê tu e-nameyeke derbasdar binivîsî',
 'passwordsent' => 'Ji navnîşana e-mail ku ji bo "$1" hat tomarkirin şîfreyekê nû hat şandin. Vê bistîne û dîsa têkeve.',
-'blocked-mailpassword' => "IP'ya te yê ji te niha tê bikaranin ji bo guherandinê ra hatîye astengkirin. Ji bo tiştên şaş çênebin, xastinê te ji bo şifreyeka nuh jî hatîye qedexekirin.",
+'blocked-mailpassword' => "IP'ya ku tu niha bi kar tînî ji guherandinê re hatiye astengkirin. Ji bo tiştên şaş çênebin, xwestina te ya ji bo şîfreyeke nû jî hatiye qedexekirin.",
 'eauthentsent' => 'E-nameyeka naskirinê ji adresa nivîsî ra hate şandin. Berî e-name ji bikarhênerên din bi vê rêkê dikaribim bi te gên, ew adresa û rastbûna xwe gireke werin naskirin. Xêra xwe e-nameyê naskirinê bixûne!',
-'throttled-mailpassword' => 'Berî {{PLURAL:$1|saetekê|$1 saetan}} şîfreyekî nuh hate xastin. Ji bo şaşbûn bi vê fonksyonê çênebin, bes her {{PLURAL:$1|saetekê|$1 saetan}} şîfreyekî nuh dikare were xastin.',
+'throttled-mailpassword' => 'Berî {{PLURAL:$1|saetekê|$1 saetan}} şîfreyeke nû hate xwestin. Ji bo şaşbûn bi vê fonksiyonê çênebin, bes her {{PLURAL:$1|saetekê|$1 saetan}} şîfreyeke nû dikare were xwestin.',
 'mailerror' => 'Şaşbûnek li cem şandina e-nameyekê: $1',
-'acct_creation_throttle_hit' => 'Biborîne! Te hesab $1 vekirine. Tu êdî nikarî hesabên din vekî.',
+'acct_creation_throttle_hit' => 'Bibexşe! Te hesabê bikarhêneriyê $1 vekiriye. Tu êdî nikarî hesabên din vekî.',
 'emailauthenticated' => 'Adresa e-nameya te hate naskirin: $1.',
 'emailnotauthenticated' => 'Adresa e-nameyan yê te hên nehatîye naskirin. Fonksyonên e-nameyan piştî naskirina te dikarin ji te werin kirin.',
 'noemailprefs' => "'''Te hên adresa e-nameyan nenivîsandîye''', fonksyonên e-nameyan hên ji te ra ne tên qebûlkirin.",
@@ -515,7 +518,8 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
 
 # Change password dialog
 'resetpass' => 'Şîfreyê biguherîne',
-'resetpass_announce' => 'Te xwe bi şîfreyekê qeydkir, yê bi e-nameyekê ji te ra hate şandin. Ji bo xelaskirinê qeydkirinê, tu niha gireke şîfreyeka nuh binivisînê.',
+'resetpass_announce' => 'Te xwe bi şîfreyekê tomar kiriye ku bi riya e-nameyekê ji te re hatiye şandin.
+Ji bo xelaskirina tomarkirinê, divê tu niha şîfreyeke nû binivîsî:',
 'resetpass_text' => '<!-- Nivîsê li vir binivisîne -->',
 'resetpass_header' => 'Şîfreya hesabê xwe biguherîne',
 'oldpassword' => 'Şîfreya kevn',
@@ -567,7 +571,7 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
 'hr_tip' => 'Rastexêza berwarî (kêm bi kar bîne)',
 
 # Edit pages
-'summary' => 'Kurte û çavkanî (Te çi kir?):',
+'summary' => 'Kurte (Te çi kir?):',
 'subject' => 'Mijar/sernivîs:',
 'minoredit' => 'Ev guhertineke biçûk e',
 'watchthis' => 'Vê gotarê bişopîne',
@@ -650,25 +654,26 @@ Astengkirina dawî bi referansa li jêr hatiye piştrastkirin:',
 'editingcomment' => '$1 (şîrove) tê guherandin.',
 'editconflict' => 'Têkçûna guherandinan: $1',
 'explainconflict' => "Ji dema te dest bi guherandinê kir heta niha kesekê/î din ev rûpel guherand.
-Jor guhartoya heyî tê dîtîn.
-Guherandinên te jêr tên nîşan dan.
-Divê tû wan bikî yek.
-Heke niha tomar bikî, '''bi tene''' nivîsara qutiya jor wê bê tomarkirin.",
+Li jor guhertoya heyî tê dîtîn.
+Guherandinên te li jêr tên nîşandan.
+Divê tu wan bikî yek.
+Heke niha tomar bikî, '''bi tenê''' nivîsara qutiya jor wê bê tomarkirin.",
 'yourtext' => 'Nivîsara te',
 'storedversion' => 'Versiyona qeydkirî',
 'editingold' => "'''Hişyarî: Tu li ser guhertoyeke kevn a vê rûpelê dixebitî.
 Heke tu qeyd bikî, hemû guhertinên piştî vê revîzyonê winda dibin.
 '''",
-'yourdiff' => 'Ciyawazî',
-'copyrightwarning' => "Hişyarî: Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre). Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
-Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane ''(public domain)'' girt.
-'''BERHEMÊN MAFÊN WAN PARASTΠ(©) BÊ DESTÛR NEWEŞÎNE!'''",
+'yourdiff' => 'Cudahî',
+'copyrightwarning' => "Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre).
+Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
+Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane (''public domain'') girt.
+'''Berhemên mafên wan parastî bê destûr neweşîne!'''",
 'protectedpagewarning' => "'''Hişyarî:  Ev rûpel tê parastin. Bi tenê bikarhênerên ku xwediyên mafên \"koordînatoriyê\" ne, dikarin vê rûpelê biguherînin.'''",
 'semiprotectedpagewarning' => "'''Hişyarî:''' Ev rûpel tê parastin, lewma bes bikarhênerên tomarkirî dikarin vê biguherînin.
 Guhertina herî dawî bi referansa li jêr hatiye piştrastkirin:",
-'templatesused' => 'Şablon di van rûpelan da tê bikaranîn',
-'templatesusedpreview' => 'Şablon yê di vê pêşdîtinê da tên bikaranîn:',
-'templatesusedsection' => 'Şablon yê di vê perçê da tên bikaranîn:',
+'templatesused' => 'Şablon di van rûpelan de tê bikaranîn',
+'templatesusedpreview' => 'Şablonên ku di vê pêşdîtinê de tên bikaranîn:',
+'templatesusedsection' => 'Şablonên ku di vê parçeyê de tên bikaranîn:',
 'template-protected' => '(tê parastin)',
 'template-semiprotected' => '(nîv-parastî)',
 'hiddencategories' => 'Ev rûpel endamê{{PLURAL:$1|1 hidden category|$1 hidden categories}} ye:',
@@ -690,8 +695,8 @@ Sedema jêbirina rûpelê bi referansa li jêr hatiye piştrastkirin.',
 Ew berê heye.',
 
 # "Undo" feature
-'undo-success' => 'Ev guherandina kane were şondakirin. Xêra xwe ferqê piştî tomarkirinê bibîne û seke, ku tu ew versîyona dixwazê û tomarbike. Eger te şaşbûnekî kir, xêra xwe derkeve.',
-'undo-failure' => 'Ev guherandina nikane were şondakirin ji ber ku guherandinên piştî wê.',
+'undo-success' => 'Ev guherandin dikare were şûndekirin. Ji kerema xwe ferqa piştî tomarkirinê bibîne, bê ka tu dixwazî vê guhertoyê tomar bikî an na. Ger te şaşîtiyek kir, ji kerema xwe derkeve.',
+'undo-failure' => 'Ev guhertin ji ber guherandinên piştî wê re nikare were şûndekirin.',
 'undo-summary' => 'Guhertoya $1 ya [[Special:Contributions/$2|$2]] ([[User talk:$2|gotûbêj]]) şûnde kir',
 
 # Account creation failure
@@ -708,13 +713,13 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'revisionasof' => 'Guhertoya $1',
 'revision-info' => 'Guhertoya $1 ya ji aliyê $2 ve',
 'previousrevision' => '←Guhertoya kevintir',
-'nextrevision' => 'Guhertoya nûtir→',
+'nextrevision' => 'Guhertoya nûtir →',
 'currentrevisionlink' => 'Guhertoya niha nîşan bide',
-'cur' => 'ferq',
+'cur' => 'cudahî',
 'next' => 'pêş',
 'last' => 'berê',
-'page_first' => 'yekemîn',
-'page_last' => 'paşîn',
+'page_first' => 'ya pêşîn',
+'page_last' => 'ya paşîn',
 'histlegend' => 'Rênîşan: (cudahî) = cudahiya nav vê û versiyona niha,
 (berê) = cudahiya nav vê û ya berî vê, B = guhertina biçûk',
 'history-fieldset-title' => 'Li dîrokê bigere',
@@ -773,7 +778,8 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'revertmerge' => 'Veqetîne',
 
 # Diffs
-'history-title' => 'Dîroka versyonên "$1"',
+'history-title' => 'Dîroka guhertoyên "$1"',
+'difference-title' => 'Cudahiya di navbera guhertoyên "$1" de',
 'difference-multipage' => '(Cudahî di navbera rûpelan de)',
 'lineno' => 'Rêz $1:',
 'compareselectedversions' => 'Guhertoyan bide ber hev',
@@ -784,17 +790,18 @@ Sedema qedexekirina $3 ev e: ''$2''",
 # Search results
 'searchresults' => 'Encamên lêgerînê',
 'searchresults-title' => 'Encamên lêgerrînê bo "$1"',
-'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} de, binêre [[{{MediaWiki:Helppage}}|Searching {{SITENAME}}]].',
+'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} de, binêre [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => 'Te daxwaza "[[:$1]]" kir. ([[Special:Prefixindex/$1|hemî rûpelên bi "$1" dest pê dikin]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|hemî rûpelên ku bi "$1" ve hatine girêdan]])',
 'searchsubtitleinvalid' => "Tu li '''$1''' geriyayî",
 'titlematches' => 'Dîtinên di sernivîsên gotaran de',
 'notitlematches' => 'Di nav sernivîsan de nehat dîtin.',
 'textmatches' => 'Dîtinên di nivîsara rûpelan de',
-'notextmatches' => 'Di nivîsarê de nehat dîtin.',
+'notextmatches' => 'Di nav sernivîsan de nehat dîtin.',
 'prevn' => '{{PLURAL:$1|$1}} paş',
 'nextn' => '{{PLURAL:$1|$1}} pêş',
 'prevn-title' => '{{PLURAL:$1|result|Encamên}} pêştir $1',
 'nextn-title' => '$1 {{PLURAL:$1|encama|encamên}} pêştir',
+'shown-title' => 'Li her rûpelê $1 {{PLURAL:$1|encam|encaman}} nîşan bide',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Vebijartinên lêgerrînê',
 'searchmenu-exists' => "'''Rûpeleke bi navê \"[[:\$1]]\" li ser vê wîkiyê heye.'''",
@@ -810,7 +817,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'searchprofile-images-tooltip' => 'Li pelan bigere',
 'search-result-size' => '$1 ({{PLURAL:$2|peyvek|$2 peyv}})',
 'search-result-score' => 'Lêhatin: $1%',
-'search-redirect' => '(redirect $1)',
+'search-redirect' => '(beralîkirin $1)',
 'search-section' => '(beş $1)',
 'search-suggest' => 'Gelo mebesta te ev bû: $1',
 'search-interwiki-caption' => 'Projeyên hevçeng',
@@ -844,7 +851,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'preferences' => 'Tercîhên min',
 'mypreferences' => 'Tercihên min',
 'prefs-edits' => 'Hejmarê guherandinan:',
-'prefsnologin' => 'Xwe qeyd nekir',
+'prefsnologin' => 'Xwe tomar nekir',
 'prefsnologintext' => 'Tu gireke xwe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} qeydbikê]</span> ji bo guherandina tercihên bikarhêneran.',
 'changepassword' => 'Şîfreyê biguherîne',
 'prefs-skin' => 'Pêste',
@@ -863,7 +870,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'prefs-setemail' => 'Navnîşana E-nameyê binivîse',
 'prefs-email' => 'Vebijarkên E-nameyê',
 'prefs-rendering' => 'Rû',
-'saveprefs' => 'Tercîhan qeyd bike',
+'saveprefs' => 'Tercîhan tomar bike',
 'resetprefs' => 'Guhertinên netomarkirî şûnde vegerîne',
 'prefs-editing' => 'Guherandin',
 'rows' => 'Rêz',
@@ -897,12 +904,12 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'uid' => 'Nasnameya bikarhêner:',
 'prefs-memberingroups' => 'Endamê/a {{PLURAL:$1|komê|koman}}:',
 'prefs-registration' => 'Dema xweqeydkirinê:',
-'yourrealname' => 'Navê te yê rastî*',
+'yourrealname' => 'Navê te yê rast:',
 'yourlanguage' => 'Ziman',
 'yourvariant' => 'Cuda:',
 'yournick' => 'Bernavkê nû (ji bo îmzeyê):',
 'badsig' => 'Îmzeya ne derbasdar! Li HTML binêre ka sedema şaşbûnê çiye.',
-'badsiglength' => 'Navî te zêde dirêj e; ew gireke di bin {{PLURAL:$1|nîÅ\9fanekê|nîÅ\9fanan}} da be.',
+'badsiglength' => 'Navê te zêde dirêj e; pêwîst e di bin {{PLURAL:$1|nîÅ\9fanekê|nîÅ\9fanan}} de be.',
 'yourgender' => 'Zayend:',
 'gender-male' => 'Nêr',
 'gender-female' => 'Mê',
@@ -933,7 +940,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'userrights-user-editname' => 'Navekî bikarhêneriyê binivîse:',
 'editusergroup' => 'Komên bikarhêneran biguherîne',
 'editinguser' => "Mafên bikarhêner '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) tên guhertin",
-'userrights-editusergroup' => 'Grûpên bikarhêneran biguherîne',
+'userrights-editusergroup' => 'Komên bikarhêneran biguherîne',
 'saveusergroups' => 'Komên bikarhêneran tomar bike',
 'userrights-groupsmember' => 'Endamê/a:',
 'userrights-groups-help' => 'Tu dikarî komên bikarhêneran ên vê/vî bikarhênerê/î biguherînî:
@@ -945,8 +952,8 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'userrights-nodatabase' => 'Danegeh $1 nîne an ne ya vir e.',
 'userrights-nologin' => 'Ji bo guherandina mafên bikarhêneran, divê tu bi hesabê rêveber [[Special:UserLogin|têkevî]].',
 'userrights-notallowed' => "Account'a te mafê xwe tune ye ji bo guherandina mafên bikarhêneran.",
-'userrights-changeable-col' => 'Komên tu dikarî biguherînî',
-'userrights-unchangeable-col' => 'Komên tu nikarî biguherînî',
+'userrights-changeable-col' => 'Komên ku tu dikarî biguherînî',
+'userrights-unchangeable-col' => 'Komên ku tu nikarî biguherînî',
 
 # Groups
 'group' => 'Kom',
@@ -957,13 +964,13 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'group-all' => '(hemû)',
 
 'group-user-member' => 'Bikarhêner',
-'group-bot-member' => 'Bot',
-'group-sysop-member' => 'rêveber',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|rêveber}}',
 'group-bureaucrat-member' => 'Burokrat',
 
 'grouppage-user' => '{{ns:project}}:Bikarhêner',
 'grouppage-bot' => '{{ns:project}}:Bot',
-'grouppage-sysop' => '{{ns:project}}:Admînistrator',
+'grouppage-sysop' => '{{ns:project}}:Rêveber',
 'grouppage-bureaucrat' => '{{ns:project}}:Burokrat',
 
 # Rights
@@ -982,13 +989,13 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'right-sendemail' => 'Ji bikarhênerên di re e-name bişîne',
 
 # User rights log
-'rightslog' => 'Reşahîya mafên bikarhêneran',
-'rightslogtext' => 'Ev reşahîyek ji bo guherandinên mafên bikarhêneran e.',
+'rightslog' => 'guhertina mafê bikarhêneriyê',
+'rightslogtext' => 'Ev guhertineke ji bo mafên bikarhêneriyê ye.',
 'rightslogentry' => 'grûpa bikarhêneran ji bo $1 ji $2 guherande $3',
 'rightsnone' => '(tune)',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-read' => 'Vê rûpelê bixwîne',
+'action-read' => 'vê rûpelê bixwîne',
 'action-edit' => 'vê rûpelê biguherîne',
 'action-createpage' => 'rûpelan çêke',
 'action-createtalk' => 'rûpelên gotûbêjan çêke',
@@ -996,9 +1003,9 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'action-minoredit' => 'vê weke guhertineke biçûk nîşan bide',
 'action-move' => 'vê rûpelê bigerîne',
 'action-move-subpages' => 'vê rûpelê û binrûpelên wê bigerîne',
-'action-movefile' => "vê data'yê bigerîne",
-'action-upload' => "vê data'yê barbike",
-'action-delete' => 'vê rûpelê jêbibe',
+'action-movefile' => 'vê daneyê bigerîne',
+'action-upload' => 'vê daneyê bar bike',
+'action-delete' => 'vê rûpelê jê bibe',
 'action-deleterevision' => 'Vê revîzyonê je bibe',
 'action-deletedhistory' => 'dîroka vê rûpelê jêbirî bibîne',
 'action-browsearchive' => 'li rûpelên jêbirî bigere',
@@ -1009,17 +1016,18 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'nchanges' => '$1 {{PLURAL:$1|guherandinek|guherandin}}',
 'recentchanges' => 'Guherandinên dawî',
 'recentchanges-legend' => 'Vebijarkên guherandinên dawî',
+'recentchanges-summary' => 'Guhertinên herî dawî yên wîkiyê li ser vê rûpelê bişopîne.',
 'recentchanges-label-minor' => 'Ev guhertineka biçûk e',
 'rcnote' => "Jêr {{PLURAL:$1|guherandinek|'''$1''' guherandinên dawî}} di {{PLURAL:$2|rojê|'''$2''' rojên dawî}} de ji $3 şûnde tên nîşan dan.",
-'rclistfrom' => 'an jî guherandinên ji $1 şûnda nîşan bide.',
-'rcshowhideminor' => 'guherandinên biçûk $1',
-'rcshowhidebots' => "bot'an $1",
-'rcshowhideliu' => 'bikarhênerên qeydkirî $1',
-'rcshowhideanons' => 'bikarhênerên neqeydkirî (IP) $1',
+'rclistfrom' => 'Guherandinên ji $1 şûnde nîşan bide',
+'rcshowhideminor' => 'Guherandinên biçûk $1',
+'rcshowhidebots' => "Bot'an $1",
+'rcshowhideliu' => 'Bikarhênerên qeydkirî $1',
+'rcshowhideanons' => 'Bikarhênerên neqeydkirî (IP) $1',
 'rcshowhidepatr' => '$1 guherandinên kontrolkirî',
-'rcshowhidemine' => 'guherandinên min $1',
+'rcshowhidemine' => 'Guherandinên min $1',
 'rclinks' => '$1 guherandinên di $2 rojên dawî de nîşan bide<br />$3',
-'diff' => 'ciyawazî',
+'diff' => 'cudahî',
 'hist' => 'dîrok',
 'hide' => 'veşêre',
 'show' => 'nîşan bide',
@@ -1028,12 +1036,12 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'boteditletter' => 'b',
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|bikarhênerek|$1 bikarhêner}} vê rûpelê {{PLURAL:$1|dişopîne|dişopînin}}.]',
 'rc_categories_any' => 'Hîç',
-'newsectionsummary' => '/* $1 */ beşeka nuh',
+'newsectionsummary' => '/* $1 */ beşeke nû',
 'rc-enhanced-expand' => 'Kitûmatan nîşan bide (JavaScript pêdivî ye)',
 'rc-enhanced-hide' => 'Kitûmatan veşêre',
 
 # Recent changes linked
-'recentchangeslinked' => 'Guherandinên peywend',
+'recentchangeslinked' => 'Guherandinên têkilîdar',
 'recentchangeslinked-feed' => 'Guherandinên peywend',
 'recentchangeslinked-toolbox' => 'Guherandinên peywend',
 'recentchangeslinked-summary' => "Ev rûpela taybetî guherandinên dawî ji rûpelên lînkkirî nîşandide. Ew rûpel yê di lîsteya te ya şopandinê da ne bi nivîsa '''estûr''' tên nîşandan.",
@@ -1041,9 +1049,9 @@ Sedema qedexekirina $3 ev e: ''$2''",
 
 # Upload
 'upload' => 'Wêneyekî barbike',
-'uploadbtn' => 'Wêneyê (ya tiÅ\9ftekî din ya mêdya) barbike',
+'uploadbtn' => 'Wêneyî (yan tiÅ\9ftekî din Ãª medyayê) bar bike',
 'reuploaddesc' => 'Barkirinê biskîne û dîsa here rûpela barkirinê.',
-'uploadnologin' => 'Xwe qeyd nekir',
+'uploadnologin' => 'Xwe tomar nekir',
 'uploadnologintext' => 'Ji bo barkirina wêneyan divê ku tu [[Special:UserLogin|têkevî]].',
 'uploaderror' => 'Çewtiya barkirinê',
 'upload-recreate-warning' => "'''Agahdarî: Peleke bi vî navî hatiye jêbirin an jî raguhestin.'''",
@@ -1065,10 +1073,11 @@ anjî ji bo file'ên dengî '''<nowiki>[[</nowiki>{{ns:media}}:File.ogg<nowiki>]
 'filestatus' => 'Rewşa telîfê:',
 'filesource' => 'Çavkanî:',
 'uploadedfiles' => 'Pelên barkirî',
-'ignorewarning' => 'Hişyarê qebûl neke û dosyayê qeyd bike.',
+'ignorewarning' => 'Guh nede hişyariyê û pelê qeyd bike',
 'ignorewarnings' => 'Guh nede hişyariyan',
 'minlength1' => "Navên data'yan bi kêmani gireke tîpek be.",
-'illegalfilename' => 'Navî datayê "$1" ne tê qebûlkirin ji ber ku tişt tê da hatine nivîsandin yê qedexe ne. Xêra xwe navî datayê biguherîne û carekî din barbike.',
+'illegalfilename' => 'Navê daneya "$1" nayê qebûlkirin ji ber ku tê de tiştên qedexekirî hatine nivîsandin.
+Ji kerema xwe re navê daneyê biguherîne û carekî din bar bike!',
 'badfilename' => 'Navê vî wêneyî hat guherandin û bû "$1".',
 'filetype-badmime' => 'Data bi formata MIME yê "$1" nameşin werin barkirin.',
 'filetype-unwanted-type' => '\'\'\'".$1"\'\'\' formatekî nexastî ye.
@@ -1091,10 +1100,10 @@ Xêra xwe navekî din bibîne.",
 'file-thumbnail-no' => "Navî vê datayê bi '''<tt>$1</tt>''' destpêdike. Ev dibêje ku ev wêneyekî çûçik e ''(thumbnail)''. Xêra xwe seke, ku belkî versyonekî mezin yê vê wêneyê li cem te heye û wê wêneyê mezintir di bin navî orîjînal da barbike.",
 'fileexists-forbidden' => 'Medyayek bi vê navî heye; xêra xwe şonda here û vê medyayê bi navekî din barbike.
 [[File:$1|thumb|center|$1]]',
-'uploadwarning' => 'Hişyara barkirinê',
+'uploadwarning' => 'Hişyariya barkirinê',
 'savefile' => 'Dosyayê tomar bike',
-'uploadedimage' => '"$1" barkirî',
-'overwroteimage' => 'versyonekî nuh ji "[[$1]]" hate barkirin',
+'uploadedimage' => '"[[$1]]" hate barkirin',
+'overwroteimage' => 'versiyonekî nû ya "[[$1]]" hate barkirin',
 'uploaddisabled' => 'Barkirin hatîye qedexekirin',
 'uploaddisabledtext' => "Barkirinê data'yan  hatiye qedexekirin.",
 'uploadvirus' => "Di vê data'yê da vîrûsek heye! Înformasyon: $1",
@@ -1121,21 +1130,21 @@ Xêra xwe navekî din bibîne.",
 'license-nopreview' => 'Pêşdîtin ne gengaz e.',
 
 # Special:ListFiles
-'listfiles_search_for' => 'Li navî wêneyê bigere:',
+'listfiles_search_for' => 'Li navê wêneyî bigere:',
 'imgfile' => 'dosye',
-'listfiles' => 'Listeya wêneyan',
+'listfiles' => 'Lîsteya wêneyan',
 'listfiles_date' => 'Dem',
 'listfiles_name' => 'Nav',
 'listfiles_user' => 'Bikarhêner',
 'listfiles_size' => 'Mezinbûn',
 'listfiles_description' => 'Danasîn',
-'listfiles_count' => 'Versiyon',
+'listfiles_count' => 'Guherto',
 
 # File description page
 'file-anchor-link' => 'Wêne',
-'filehist' => 'Dîroka datayê',
+'filehist' => 'Dîroka daneyê',
 'filehist-help' => 'Ji bo dîtina guhertoya wê demê bişkoka dîrokê bitikîne.',
-'filehist-deleteall' => 'giştika jêbibe',
+'filehist-deleteall' => 'hemûyan jê bibe',
 'filehist-deleteone' => 'jê bibe',
 'filehist-revert' => 'şûnde vegerîne',
 'filehist-current' => 'niha',
@@ -1152,7 +1161,7 @@ Xêra xwe navekî din bibîne.",
 'linkstoimage-redirect' => '$1 (beralîkirina pelê) $2',
 'sharedupload-desc-here' => 'Ev pel ji $1 û dibe ku ji aliyê projeyên din ve jî hatibe bikaranîn.
 Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
-'uploadnewversion-linktext' => 'Versyonekî nû yê vê datayê barbike',
+'uploadnewversion-linktext' => 'Versiyoneke nû ya vê daneyê barbike',
 'shared-repo-from' => 'ji $1',
 
 # File reversion
@@ -1222,7 +1231,7 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 
 'brokenredirects' => 'Beralîkirinên xerabûyî',
 'brokenredirects-edit' => 'biguherîne',
-'brokenredirects-delete' => 'jêbibe',
+'brokenredirects-delete' => 'jê bibe',
 
 'withoutinterwiki' => 'Rûpelên bê girêdanên ziman',
 'withoutinterwiki-legend' => 'Pêşbendik',
@@ -1240,13 +1249,13 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 'uncategorizedcategories' => 'Kategoriyên bê kategorî',
 'uncategorizedimages' => 'Wêneyên bê kategorî',
 'uncategorizedtemplates' => 'Şablonên bê kategorî',
-'unusedcategories' => 'Kategoriyên ku nayên bi kar anîn',
-'unusedimages' => 'Wêneyên ku nayên bi kar anîn',
+'unusedcategories' => 'Kategoriyên ku nayên bikaranîn',
+'unusedimages' => 'Wêneyên ku nayên bikaranîn',
 'popularpages' => 'Rûpelên populer',
-'wantedcategories' => 'Kategoriyên tên xwestin',
+'wantedcategories' => 'Kategoriyên ku tên xwestin',
 'wantedpages' => 'Rûpelên ku tên xwestin',
 'wantedfiles' => 'Wêneyên ku tên xwestin',
-'wantedtemplates' => 'Şablonên tên xwestin',
+'wantedtemplates' => 'Şablonên ku tên xwestin',
 'mostlinked' => 'Rûpelên bi bêhtirîn girêdan',
 'mostlinkedcategories' => 'Kategoriyên bi bêhtirîn girêdan',
 'mostcategories' => 'Rûpelên bi pir kategorî',
@@ -1266,13 +1275,13 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 'movethispage' => 'Vê rûpelê bigerîne',
 'notargettitle' => 'Hedef tune',
 'pager-newer-n' => '{{PLURAL:$1|nûtir 1|nûtir $1}}',
-'pager-older-n' => '{{PLURAL:$1|kevintirin 1|kevintirin $1}}',
+'pager-older-n' => '{{PLURAL:$1|kevintir 1|kevintir $1}}',
 
 # Book sources
 'booksources' => 'Çavkaniyên pirtûkan',
 'booksources-search-legend' => 'Li pirtûkan bigere',
 'booksources-go' => 'Here',
-'booksources-text' => 'Li vir listek ji lînkên rûpelên, yê pirtûkên nuh ya kevin difiroşin, heye. Hên jî li vir tu dikarî înformasyonan li ser wan pirtûkan tê derxê.',
+'booksources-text' => 'Li vir listek ji lînkên rûpelên, yê pirtûkên nû ya kevin difiroşin, heye. Hên jî li vir tu dikarî înformasyonan li ser wan pirtûkan tê derxê.',
 
 # Special:Log
 'specialloguserlabel' => 'Bikarhêner:',
@@ -1310,14 +1319,14 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'special-categories-sort-abc' => 'li gorî alfabeyê rêzkirî ye',
 
 # Special:DeletedContributions
-'deletedcontributions' => 'Guherandinên bikarhênerekî yê jêbirî',
-'deletedcontributions-title' => 'Guherandinên bikarhênerekî yê jêbirî',
+'deletedcontributions' => 'Beşdariyên bikarhênerekî yê jêbirî',
+'deletedcontributions-title' => 'Guherandinên bikarhêner yê jêbirî',
 'sp-deletedcontributions-contribs' => 'tevkarî',
 
 # Special:LinkSearch
 'linksearch' => 'Girêdanên derveyî',
 'linksearch-ns' => 'Valahiya nav:',
-'linksearch-ok' => 'Lêbigere',
+'linksearch-ok' => 'Lêgerîn',
 
 # Special:ListUsers
 'listusers-submit' => 'Nîşan bide',
@@ -1337,6 +1346,7 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'listgrouprights' => 'Mafên koma bikarhêner',
 'listgrouprights-group' => 'Kom',
 'listgrouprights-rights' => 'Maf',
+'listgrouprights-helppage' => 'Help:Mafên koman',
 'listgrouprights-members' => '(lîsteya endaman)',
 'listgrouprights-addgroup-all' => 'Hemû koman tevlî bike',
 'listgrouprights-removegroup-all' => 'Hemû koman jê bibe',
@@ -1344,7 +1354,7 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 # E-mail user
 'mailnologin' => 'Navnîşanê neşîne',
 'mailnologintext' => 'Te gireke xwe [[Special:UserLogin|qeydbikê]] û adrêsa e-nameyan di [[Special:Preferences|tercihên xwe]] da nivîsandibe ji bo şandina e-nameyan ji bikarhênerên din ra.',
-'emailuser' => 'Ji vê/î bikarhênerê/î re e-name bişîne',
+'emailuser' => 'Ji bikarhêner re e-name bişîne',
 'emailpage' => 'E-name bikarhêner',
 'defemailsubject' => '{{SITENAME}} e-name',
 'noemailtitle' => 'Navnîşana e-name tune',
@@ -1366,17 +1376,16 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
 'watchlist' => 'Lîsteya min a şopandinê',
 'mywatchlist' => 'Lîsteya min a şopandinê',
 'nowatchlist' => 'Tiştek di lîsteya te ya şopandinê de tune ye.',
-'watchlistanontext' => 'Ji bo sekirinê ya xeyrandinê lîsteya te ya şopandinê tu gireke xwe $1.',
-'watchnologin' => 'Te xwe qeyd nekiriye.',
-'watchnologintext' => 'Ji bo xeyrandinê lîsteya te ya şopandinê tu gireke xwe [[Special:UserLogin|qedy kiribe]].',
+'watchlistanontext' => 'Ji  kerema xwe ji bo dîtin an jî sererastkirina lîsteya te ya şopandinê xwe $1.',
+'watchnologin' => 'Te xwe tomar nekiriye',
+'watchnologintext' => 'Ji bo dîtin an jî sererastkirina lîsteya te ya şopandinê divê tu xwe [[Special:Userlogin|tomar bikî]].',
 'addwatch' => 'Tevlî lîsteya şopandinê bike',
-'addedwatchtext' => "Rûpela \"<nowiki>\$1</nowiki>\" çû ser [[Special:Watchlist|lîsteya te ya şopandinê]].
-Li dahatû de her guhartoyek li wê rûpelê û rûpela gotûbêjê wê were kirin li vir dêt nîşan dan,
-
-Li rûpela [[Special:RecentChanges|Guherandinên dawî]] jî ji bo hasan dîtina wê, ew rûpel bi '''Nivîsa estûr''' dê nîşan dayîn.
-
+'addedwatchtext' => "Rûpela \"[[:\$1]]\" çû ser [[{{ns:special}}:Watchlist|lîsteya te ya şopandinê]].
+Li dahatû de her guhertoyek li wê rûpelê û rûpela guftûgo ya wê were kirin li vir tê nîşandan.
+Li rûpela [[{{ns:special}}:Recentchanges|Guherandinên dawî]] jî ji bo hêsan dîtina wê, ew rûpel bi '''Nivîsa stûr''' tê nîşandan.
 
-<p>Her dem tu bixwazî ew rûpel li nav lîsteya te ya şopandinê derbikî, li ser wê rûpelê, klîk bike \"êdî neşopîne\".</p>",
+Gava tu bixwazî wê rûpelê ji nav lîsteya xwe ya şopandinê derbixî, li ser wê rûpelê, \"êdî neşopîne\" bitikîne.",
 'removewatch' => 'Ji lîsteya şopandinê derxe',
 'removedwatchtext' => 'Rûpela "[[:$1]]" ji lîsteya te ya şopandinê hate jêbirin.',
 'watch' => 'Bişopîne',
@@ -1387,15 +1396,15 @@ Li rûpela [[Special:RecentChanges|Guherandinên dawî]] jî ji bo hasan dîtina
 'watchnochange' => 'Ne rûpelek, yê tu dişopînê, hate xeyrandin di vê wextê da, yê tu dixazê bibînê.',
 'watchlist-details' => '* {{PLURAL:$1|Rûpelek tê|$1 rûpel tên}} şopandin, rûpelên gotûbêjê nayên jimartin.',
 'wlheader-enotif' => '* Agahdariya E-nameyê pêk tê.',
-'wlheader-showupdated' => "* Ew rûpel yê hatin xeyrandin jilkî te li wan sekir di '''nivîsa estûr''' tên pêşandin.",
+'wlheader-showupdated' => "* Ev rûpela hatî guhertin dema te lê meyzand bi '''nivîsa stûr''' tê xuyakirin.",
 'watchlistcontains' => 'Di lîsteya şopandina te de {{PLURAL:$1|rûpelek heye|$1 rûpel hene}}.',
 'wlnote' => "Niha {{PLURAL:$1|xeyrandinê|'''$1''' xeyrandinên}} dawî yê {{PLURAL:$2|seetê|'''$2''' seetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.",
-'wlshowlast' => 'Guhertinên berî $1 saetan, $2 rojan, ya $3 (di sih rojên dawî de)',
+'wlshowlast' => 'Guhertinên berî $1 saetan, $2 rojan, ya $3 nîşan bide',
 'watchlist-options' => 'Vebijarkên lîsteya şopandinê',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Bişopîne...',
-'unwatching' => 'Neşopîne...',
+'unwatching' => 'Neşopîne',
 
 'enotif_reset' => 'Hemû rûpelan wek lêsekirî nîşanbide',
 'enotif_newpagetext' => 'Ev rûpeleke nû ye.',
@@ -1429,25 +1438,24 @@ Paşagahîdan û alîkaraya din:
 # Delete
 'deletepage' => 'Rûpelê jê bibe',
 'confirm' => 'Pesend bike',
-'excontent' => "Naveroka berê: '$1'",
-'excontentauthor' => "Naverroka vê rûpelê ev bû: '$1' (û tenya bikarhêner '$2' bû)",
-'exbeforeblank' => "Nawerok berî betal kirinê ew bû: '$1'
-Naverroka berî betalkirinê ev bû:'$1'",
+'excontent' => 'Naveroka berê: "$1"',
+'excontentauthor' => "Naveroka vê rûpelê ev bû: '$1' (û tenya bikarhêner '$2' bû)",
+'exbeforeblank' => 'Naverok berî betalkirinê ev bû: "$1"',
 'exblank' => 'rûpel vala bû',
 'delete-confirm' => 'Jêbirina "$1"',
-'delete-legend' => 'Jêbirin',
+'delete-legend' => 'Jê bibe',
 'historywarning' => "'''Hişyarî''': Dîrokeke vê rûpela tu dixwazî jê bibî heye:",
 'confirmdeletetext' => 'Tu kê niha rûpelekê bi tev dîroka wê jêbibê. Xêra xwe zanibe tu kê niha çi bikê û zanibe, çi di wîkîyê da yê bibe. Hên jî seke, ku ev jêbirina bi [[{{MediaWiki:Policy-url}}|mafên wîkîyê]] ra dimeşin ya na.',
 'actioncomplete' => 'Çalakî pêk hat',
 'actionfailed' => 'Çalakî têkçû',
 'deletedtext' => '"$1" hat jêbirin. Ji bo qeyda rûpelên ku di dema nêzîk de hatin jêbirin binêre $2.',
-'dellogpage' => 'Jêbirina rûpelê',
+'dellogpage' => 'jêbirina rûpelê',
 'dellogpagetext' => 'Li jêr lîsteyek ji jêbirinên dawî heye.',
 'deletionlog' => 'jêbirina rûpelê',
 'reverted' => 'Hate şondabirin berve verzyonekî berê',
 'deletecomment' => 'Sedem:',
-'deleteotherreason' => 'Sedemekî din:',
-'deletereasonotherlist' => 'Sedemekî din',
+'deleteotherreason' => 'Sedema din:',
+'deletereasonotherlist' => 'Sedema din',
 'deletereason-dropdown' => '*Sedemên jêbirinê
 ** Daxwaziya xwedî
 ** Pirsgirêka lîsansê
@@ -1457,13 +1465,14 @@ Naverroka berî betalkirinê ev bû:'$1'",
 'delete-warning-toobig' => "Dîroka vê rûpelê pir mezin e, zêdetirî $1 guherandin. Jêbirina van rûpelan dikarin şaşbûnan di database'ê {{SITENAME}} da çêkin; zandibe tu çi dikê!",
 
 # Rollback
-'rollback_short' => 'Bizivirîne pêş',
-'rollbacklink' => 'bizivirîne pêş',
-'cantrollback' => "Guharto naye vegerandin; bikarhêrê dawî, '''tenya''' nivîskarê wê rûpelê ye.",
+'rollback_short' => 'bizîvirîne pêş',
+'rollbacklink' => 'bizîvirîne pêş',
+'cantrollback' => 'Guherto naye vegerandin;
+bikarhênerê dawî, tenya nivîskarê vê rûpelê ye.',
 'alreadyrolled' => 'Guherandina dawiya [[$1]]
-bi [[User:$2|$2]] ([[User talk:$2|gotûbêj]]) venizivre; keseke din wê rûpelê zivrandiye an guherandiye.
+bi [[User:$2|$2]] ([[User talk:$2|gotûbêj]]) venizivre; kesekî din ew rûpel zîvirandiye an guherandiye.
 
-Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
+Guhertoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'editcomment' => "Kurtenivîsê guherandinê ev bû: \"''\$1''\".",
 'revertpage' => 'Guherandina $2 hat betal kirin, vegerand guhartoya dawî ya $1',
 'rollback-success' => 'Guherandina $1 şondakir; dîsa guharte verzyona $2.',
@@ -1483,7 +1492,7 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'protect-default' => 'Destûrê bide hemû bikarhêneran',
 'protect-level-autoconfirmed' => 'Bikarhênerên neqeydkirî astengbike',
 'protect-level-sysop' => 'Tenê rêveber (admîn)',
-'protect-expiring' => 'heta rojê $1 (UTC)',
+'protect-expiring' => 'heta roja $1 (UTC)',
 'protect-expiring-local' => 'di $1 de dema wê xilas dibe',
 'protect-othertime' => 'Demeke din:',
 'protect-othertime-op' => 'dema din',
@@ -1506,13 +1515,14 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'restriction-level-autoconfirmed' => 'nîv-parastî',
 
 # Undelete
-'undelete' => 'Li rûpelên jêbirî seke',
+'undelete' => 'Li rûpelên jêbirî binêre',
 'undeletepage' => 'Rûpelên jêbirî bibîne û dîsa çêke',
-'viewdeletedpage' => 'Rûpelên vemirandî seke',
+'viewdeletedpage' => 'Li rûpelên jêbirî binêre',
 'undeletepagetext' => 'Rûpelên jêr hatine jêbirin, lê ew hên di arşîvê da ne û dikarin dîsa werin çêkirin. Ev arşîva piştî demekê tê pakkirin.',
 'undeleteextrahelp' => "Ji bo dîsaçêkirina vê rûpelê, li checkbox'an nexe û li '''''Dîsa çêke''''' klîk bike. Eger tu naxazî ku hemû verzyon dîsa werin çêkirin, li checkbox'ên wan verzyonan xe, yê tu dixazî dîsa çêkê û paşê li '''''Dîsa çêke'''' klîk bike. Eger tu li '''''Biskine''''' xê, hemû checkbox û cihê sedemê yê werin valakirin.",
 'undeleterevisions' => '$1 {{PLURAL:$1|rêvîzyonek çû|rêvîzyon çûn}} arşîv',
-'undeletehistory' => 'Eger tu vê rûpelê dîsa çêkê, hemû rêvîzyon ê dîsa di dîrokê da werin çêkirin. Eger rûpeleka nuh ji dema jêbirinê da hatîye çêkirin, ew rêvîzyon ê werin pêşî diroka nuh.',
+'undeletehistory' => 'Ger tu vê rûpelê dîsa çêkî, hemû guherto wê dîsa di dîrokê de werin çêkirin.
+Ger rûpeleke nû di dema jêbirinê de hatibe çêkirin, ew guherto wê were pêşiya diroka nû.',
 'undelete-revision' => 'Rêvîzyonên jêbirî yê $1 (di $2) ji $3:',
 'undelete-nodiff' => 'Guhertoyên berê nehatin dîtin.',
 'undeletebtn' => 'Dîsa çêke!',
@@ -1521,21 +1531,21 @@ Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|gotûbêj]]).',
 'undeletereset' => 'Nû bike',
 'undeleteinvert' => 'Hilbijartinê şûnde vegerîne',
 'undeletecomment' => 'Sedem:',
-'undeletedrevisions' => '{{PLURAL:$1|Verzyonek dîsa hate|$1 verzyon dîsa hatin}} çêkirin',
-'undeletedrevisions-files' => '{{PLURAL:$1|Verzyonek|$1 verzyon}} û {{PLURAL:$2|medyayek hate|$2 medya hatin}} çêkirin',
+'undeletedrevisions' => '{{PLURAL:$1|Versiyonek dîsa hate|$1 versiyon dîsa hatin}} çêkirin',
+'undeletedrevisions-files' => '{{PLURAL:$1|Versiyonek|$1 versiyon}} û {{PLURAL:$2|medyayek hate|$2 medya hatin}} çêkirin',
 'undeletedfiles' => '{{PLURAL:$1|Medyayek hate|$1 medya hatin}} çêkirin',
 'undeletedpage' => "'''$1 dîsa hate çêkirin'''
 
-Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşahîya jêbirinê]] da seke.",
-'undelete-header' => '[[Special:Log/delete|Reşahîya jêbirinê]] bibîne ji bo rûpelên jêbirî.',
-'undelete-search-box' => 'Rûpelên jêbirî lêbigere',
-'undelete-search-prefix' => 'Rûpela pêşe min ke ê bi vê destpêdîkin:',
-'undelete-search-submit' => 'Lêbigere',
+Ji bo jêbirinan û çêkirinên nû, ji kerema xwe li [[{{ns:special}}:Log/delete|Jêbirina têketinê]] binêre.",
+'undelete-header' => 'Ji bo rûpelên dawî hatine jêbirin, li [[Special:Log/delete|Jêbirina têketinê]] binêre.',
+'undelete-search-box' => 'Li rûpelên jêbirî bigere',
+'undelete-search-prefix' => 'Rûpela nîşandanê bi vê destpêdike:',
+'undelete-search-submit' => 'Lêgerîn',
 'undelete-show-file-submit' => 'Erê',
 
 # Namespace form on various pages
 'namespace' => 'Valahiya nav:',
-'invert' => 'Hilbijardinê pêçewane bike',
+'invert' => 'Hemûyan bibîne',
 'namespace_association' => 'Navê têkilîdar',
 'blanknamespace' => '(Sereke)',
 
@@ -1545,8 +1555,8 @@ Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşa
 'mycontris' => 'Beşdariyên min',
 'contribsub2' => 'Ji bo $1 ($2)',
 'uctop' => '(ser)',
-'month' => 'Ji mehê (û zûtir):',
-'year' => 'Ji salê (û zûtir):',
+'month' => 'Ji meha (û zûtir):',
+'year' => 'Ji sala (û zûtir):',
 
 'sp-contributions-newbies' => 'Tenê beşdariyên bikarhênerên nû nîşan bide',
 'sp-contributions-newbies-sub' => 'Ji bikarhênerên nû re',
@@ -1558,19 +1568,19 @@ Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşa
 'sp-contributions-talk' => 'gotûbêj',
 'sp-contributions-userrights' => 'Îdarekirina mafên bikarhêneran',
 'sp-contributions-search' => 'Li beşdariyan bigere',
-'sp-contributions-username' => 'Adresê IP ya navî bikarhêner:',
-'sp-contributions-submit' => 'Lêbigere',
+'sp-contributions-username' => "Adresa IP'yê yan navê bikarhêner:",
+'sp-contributions-submit' => 'Lêgerîn',
 
 # What links here
 'whatlinkshere' => 'Girêdanên li ser vê rûpelê',
 'whatlinkshere-title' => 'Rûpelan, yê berve $1 tên',
 'whatlinkshere-page' => 'Rûpel:',
-'linkshere' => "Ev rûpel tên ser vê rûpelê '''„[[:$1]]“''':",
-'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''„[[:$1]]“'''.",
+'linkshere' => "Ev rûpel tên ser vê rûpelê '''[[:$1]]''':",
+'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''[[:$1]]'''.",
 'nolinkshere-ns' => "Ne lînkek berve '''[[:$1]]''' di vê namespace'a da tê.",
 'isredirect' => 'rûpelê beralî bike',
 'istemplate' => 'tê bikaranîn',
-'isimage' => 'lînka wêneyê',
+'isimage' => 'girêdana wêneyî',
 'whatlinkshere-prev' => '{{PLURAL:$1|yê|$1 yên}} berê',
 'whatlinkshere-next' => '{{PLURAL:$1|yê|$1 yên}} din',
 'whatlinkshere-links' => '← girêdan',
@@ -1592,7 +1602,7 @@ Sedemekê binivîse!',
 'ipadressorusername' => "adresê IP'yekê ya navekî bikarhênerekî",
 'ipbexpiry' => 'Dem:',
 'ipbreason' => 'Sedem',
-'ipbreasonotherlist' => 'Sedemekî din',
+'ipbreasonotherlist' => 'Sedemeke din',
 'ipbreason-dropdown' => '*Sedemên astengkirinê
 ** vandalîzm
 ** agahiya şaş kire gotarekê
@@ -1604,17 +1614,17 @@ Sedemekê binivîse!',
 ** navekî ku nayê pejirandin',
 'ipbcreateaccount' => 'Çêkirina hesaban qedexe bike',
 'ipbemailban' => 'Ji bo şandina e-nameyan qedexe bike.',
-'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nuh yê vê bikarhênerê astengbike.",
+'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nû yê vê bikarhênerê astengbike.",
 'ipbsubmit' => 'Vê bikarhêner asteng bike',
 'ipbother' => 'Demekî din:',
-'ipboptions' => '1 seet:1 hour,2 seet:2 hours,6 seet:6 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,1 sal:1 year,ji her demê ra:infinite',
+'ipboptions' => '2 saet:2 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 meh:1 month,3 meh:3 months,6 meh:6 months,1 sal:1 year,ji her demê re:infinite',
 'ipbotheroption' => 'yên din',
-'ipbotherreason' => 'Sedemekî din',
-'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nuh û lîsteya bikarhêneran veşêre',
+'ipbotherreason' => 'Sedemeke din',
+'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nû û lîsteya bikarhêneran veşêre',
 'ipbwatchuser' => 'Rûpelên bikarhêner û gotûbêjê bişopîne',
 'ipb-confirm' => 'Astengkirinê piştrast bike',
 'badipaddress' => 'Bikarhêner bi vî navî tune',
-'blockipsuccesssub' => 'Astengkirin serkeftî bû',
+'blockipsuccesssub' => 'Astengkirin pêkhat',
 'blockipsuccesstext' => '"$1" hat asteng kirin.
 <br />Bibîne [[Special:BlockList|Lîsteya IP\'yan hatî asteng kirin]] ji bo lîsteya blokan.',
 'ipb-edit-dropdown' => 'Sedemên astengkirinê',
@@ -1624,19 +1634,19 @@ Sedemekê binivîse!',
 'ipb-blocklist-contribs' => 'Beşdariyên ji bo $1',
 'unblockip' => "IP'yekê dîsa veke",
 'unblockiptext' => "Nivîsara jêr bikarwîne ji bo qebûlkirina nivîsandinê bikarhênerekî ya IP'yeka berê astengkirî.",
-'ipusubmit' => 'Astengkirina vê adrêsê rake',
+'ipusubmit' => 'Vê astengkirinê rake',
 'unblocked' => '[[User:$1|$1]] niha vê astengkirinê ye',
 'unblocked-id' => '$1 dîsa vê astengkirinê ye',
 'blocklist' => 'Bikarhênerên astengkirî',
 'ipblocklist' => "Listek ji adresên IP'yan û bikarhêneran yê hatine astengkirin",
-'ipblocklist-legend' => 'Bikarhênerekî astengkirî bibîne',
+'ipblocklist-legend' => 'Bikarhênerên astengkirî bibîne',
 'blocklist-userblocks' => 'Astengkirina hesaban veşêre',
 'blocklist-tempblocks' => 'Astengkirinên demkî veşêre',
 'blocklist-rangeblocks' => 'Astengkirinên cur bi cur veşêre',
 'blocklist-by' => 'Astengkirina rêveber',
 'blocklist-params' => 'Parametreyan asteng bike',
 'blocklist-reason' => 'Sedem',
-'ipblocklist-submit' => 'Lêbigere',
+'ipblocklist-submit' => 'Lêgerîn',
 'ipblocklist-localblock' => 'Astengkirina herêmî',
 'ipblocklist-otherblocks' => '{{PLURAL:$1|Astengkirin|Astengkirinên}} din',
 'infiniteblock' => 'ji her demê ra',
@@ -1653,9 +1663,9 @@ Sedemekê binivîse!',
 'change-blocklink' => 'Astengkirinê biguherîne',
 'contribslink' => 'beşdarî',
 'emaillink' => 'e-name bişîne',
-'autoblocker' => 'Otomatîk hat bestin jiberku IP-ya we û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'\'$2\'\'\'"',
-'blocklogpage' => 'Astengkirina bikarhêner',
-'blocklogentry' => '"[[$1]]" ji bo dema $2 $3 hatîye asteng kirin',
+'autoblocker' => 'Otomatîk hate astengkirin ji ber ku IP\'ya wê û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'$2\'\'"',
+'blocklogpage' => 'Astengkirina têketinê',
+'blocklogentry' => '"[[$1]]" ji bo dema $2, $3 asteng kir',
 'blocklogtext' => "Ev reşahîyek ji astengkirinên û rakirina astengkirinên bikarhêneran ra ye. Adrêsên IP'yan, yê otomatîk hatine astengkirin, nehatine nivîsandin. [[Special:BlockList|Lîsteya IP'yên astengkirî]] bibîne ji bo dîtina astengkirinên IP'yan.",
 'unblocklogentry' => 'astenga "$1" betalkir',
 'block-log-flags-anononly' => 'bes bikarhênerên neqeydkirî',
@@ -1664,7 +1674,7 @@ Sedemekê binivîse!',
 'block-log-flags-noemail' => 'Şandina e-nameyan hatîye qedexekirin',
 'block-log-flags-nousertalk' => 'nikare gotûbêja xwe biguherîne',
 'block-log-flags-hiddenname' => 'navê bikarhêneriyê yê veşartî',
-'ipb_expiry_invalid' => 'Dem ne serrast e.',
+'ipb_expiry_invalid' => 'Dem ne serast e.',
 'ipb_already_blocked' => '"$1" berê hatîye astengkirin',
 'ipb-needreblock' => '$1 berê hatiye astengkirin. Tu dixwazî eyaran biguherînî?',
 'ipb_cant_unblock' => "Şaşbûn: ID'ya astengkirinê $1 nehate dîtin. Astengkirinê xwe niha belkî hatîye rakirin.",
@@ -1685,16 +1695,16 @@ Sedemekê binivîse!',
 # Move page
 'move-page' => '$1 bigerîne',
 'move-page-legend' => 'Vê rûpelê bigerîne',
-'movepagetalktext' => "Rûpela '''guftûgoyê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
+'movepagetalktext' => "Rûpela '''gotûbêjê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
 
-*berê guftûgoyek bi wê navê hebe ya
+*berê gotûbêjek bi wî navî hebe ya
 *tu tiştekî jêr hilbijêrê.
 
 Eger ev mişkla çêbû, tu gireke vê rûpelê bi xwe bigerînê.
 
-Xêra xwe navî nuh û sedemê navgerandinê binivisîne.",
+Xêra xwe navê nû û sedemê navgerandinê binivisîne.",
 'movearticle' => 'Rûpelê bigerîne',
-'movenologin' => 'Xwe qeyd nekir',
+'movenologin' => 'Xwe tomar nekir',
 'movenologintext' => 'Tu dive bikarhênereke qeydkirî bî û [[Special:UserLogin|werî nav sîstemê]]
 da bikarî navê wê rûpelê biguherînî.',
 'movenotallowed' => 'Mafên te bo guherandina navên gotaran tune ye.',
@@ -1715,7 +1725,7 @@ da bikarî navê wê rûpelê biguherînî.',
 'movepage-page-exists' => 'Rûpela $1 berê heye û ew nikane otomatîk were jêbirin.',
 'movepage-page-moved' => 'Rûpela $1 çû cihê $2.',
 'movepage-page-unmoved' => 'Rûpela $1 nikanî çûba ciha $2.',
-'movelogpage' => 'Nav guherandin',
+'movelogpage' => 'guhertina nav',
 'movelogpagetext' => 'Li jêr lîsteyek ji rûpelan ku navê wan hatiye guherandin heye.',
 'movereason' => 'Sedem',
 'revertmove' => 'şûnde vegerîne',
@@ -1734,13 +1744,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'export-download' => 'Weka dosyeyê qeyd bike',
 
 # Namespace 8 related
-'allmessages' => 'Hemû mesajên sîstemê',
+'allmessages' => 'Hemû peyamên sîstemê',
 'allmessagesname' => 'Nav',
 'allmessagescurrent' => 'Nivîsa niha',
-'allmessagestext' => 'Ev lîsteya hemû mesajên di namespace a MediaWiki: de ye.',
+'allmessagestext' => 'Lîsteya hemû peyamên MediaWikiyê.',
+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nikare were bikaranîn ji ber ku '''\$wgUseDatabaseMessages''' hatiye jêbirin.",
 'allmessages-filter-legend' => 'Parzûn',
 'allmessages-filter-unmodified' => 'Neguhertî',
-'allmessages-filter-all' => 'hemû',
+'allmessages-filter-all' => 'Hemû',
 'allmessages-filter-modified' => 'Guhertî',
 'allmessages-language' => 'Ziman',
 'allmessages-filter-submit' => 'Gotar',
@@ -1772,12 +1783,13 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'tooltip-pt-preferences' => 'Tercîhên min',
 'tooltip-pt-watchlist' => 'The list of pages you',
 'tooltip-pt-mycontris' => 'Lîsteya beşdariyên min',
-'tooltip-pt-logout' => 'Derkeve (Log out)',
+'tooltip-pt-logout' => 'Derkeve',
 'tooltip-ca-talk' => 'Gotûbêj li ser rûpela naverokê',
 'tooltip-ca-edit' => 'Vê rûpelê biguherîne! Berê qeydkirinê bişkoka "Pêşdîtin',
 'tooltip-ca-addsection' => 'Beşekê zêde bike.',
-'tooltip-ca-viewsource' => 'Ev rûpela tê parastin. Tu dikarê bes li çavkanîyê sekê.',
-'tooltip-ca-history' => 'Versyonên berê yên vê rûpelê.',
+'tooltip-ca-viewsource' => 'Ev rûpel tê parastin.
+Tu dikarî tenê li çavkaniyê binêrî.',
+'tooltip-ca-history' => 'Guhertoyên berê yên vê rûpelê',
 'tooltip-ca-protect' => 'Vê rûpelê biparêze',
 'tooltip-ca-unprotect' => 'Parastina vê rûpelê rake',
 'tooltip-ca-delete' => 'Vê rûpelê jê bibe',
@@ -1787,14 +1799,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'tooltip-search' => 'Li {{SITENAME}} bigere',
 'tooltip-search-go' => 'Here rûpeleke tev bi vî navî, heke hebe',
 'tooltip-search-fulltext' => 'Di nav rûpelan de li vê nivîsê bigerre',
-'tooltip-p-logo' => 'Biçe Destpêkê',
+'tooltip-p-logo' => 'Here Destpêkê',
 'tooltip-n-mainpage' => 'Biçe Destpêkê',
-'tooltip-n-mainpage-description' => 'Biçe Destpêkê',
+'tooltip-n-mainpage-description' => 'Here Destpêkê',
 'tooltip-n-portal' => 'Agahdarî li ser {{SITENAME}}, tu dikarî çi bikî, tu dikarî çi li ku bîbînî',
 'tooltip-n-recentchanges' => "Lîsteya guherandinên dawî di vê Wîkî'yê da.",
-'tooltip-n-randompage' => 'Rûpelekî helkeft biwêşîne',
+'tooltip-n-randompage' => 'Rûpeleka ketober bar bike',
 'tooltip-n-help' => 'Bersivên ji bo pirsên te.',
-'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku ji vê re grêdidin.',
+'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku pê ve girêdayî ne.',
 'tooltip-t-recentchangeslinked' => 'Recent changes in pages linking to this page',
 'tooltip-feed-rss' => "RSS feed'ên ji bo rûpelê",
 'tooltip-feed-atom' => "Atom feed'ên ji bo vê rûpelê",
@@ -1804,18 +1816,18 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'tooltip-t-specialpages' => 'Lîsteya hemû rûpelên taybetî',
 'tooltip-t-print' => 'Versiyona çapkirinê ya vê rûpelê',
 'tooltip-ca-nstab-main' => 'Li rûpela naverokê binêre',
-'tooltip-ca-nstab-user' => 'Rûpela bikarhênerê/î temaşe bike',
+'tooltip-ca-nstab-user' => 'Rûpela bikarhêner bibîne',
 'tooltip-ca-nstab-special' => 'This is a special page, you can',
 'tooltip-ca-nstab-project' => 'Li rûpelê projektê seke',
 'tooltip-ca-nstab-image' => 'Rûpela dosyeyê bibîne',
-'tooltip-ca-nstab-template' => 'Şablonê nîşanbide',
+'tooltip-ca-nstab-template' => 'Şablonê nîşan bide',
 'tooltip-ca-nstab-help' => 'Rûpela alîkariyê bibîne',
 'tooltip-ca-nstab-category' => 'Li rûpelê kategorîyê seke',
 'tooltip-minoredit' => 'Vê guherandinê weka biçûk îşaret bike',
 'tooltip-save' => 'Guherandinên xwe tomarbike',
 'tooltip-preview' => 'Guherandinên xwe bibîne, berî ku tu wî qeyd bikî!',
 'tooltip-diff' => 'Guherandinên ku te di nivîsê de kirîyî nîşan bide',
-'tooltip-compareselectedversions' => 'Cudatiyên guhartoyên hilbijartî yên vê rûpelê bibîne.',
+'tooltip-compareselectedversions' => 'Cudatiyên guhertoyên hilbijartî yên vê rûpelê bibîne.',
 'tooltip-watch' => 'Vê rûpelê têke nav lîsteya te ya şopandinê',
 'tooltip-upload' => 'Barkirinê destpêke',
 
@@ -1827,13 +1839,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 
 # Attribution
 'anonymous' => 'Bikarhênera/ê nediyarkirî ya/yê {{SITENAME}}',
-'siteuser' => 'Bikarhênera/ê $1 a/ê {{SITENAME}}',
+'siteuser' => 'Bikarhênera $1 ê {{SITENAME}}',
 'others' => 'ên din',
 'siteusers' => 'Bikarhênerên $1 yên {{SITENAME}}',
 
 # Spam protection
 'spamprotectiontitle' => 'Parastina spam',
-'spamprotectiontext' => 'Ew rûpela yê tu dixast tomarbikê hate astengkirin ji ber ku parastina spam. Ew çêbû ji ber ku lînkekî derva di vê rûpelê da ye.',
+'spamprotectiontext' => 'Rûpela ku tu dixwazî tomar bikî ji ber parastina spamê hate astengkirin.
+Ji ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.',
 'spamprotectionmatch' => 'Ev nivîsa parastinê spam vêxist: $1',
 
 # Info page
@@ -1847,8 +1860,8 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'pageinfo-views' => 'Hejmara dîtinê',
 
 # Patrolling
-'markaspatrolleddiff' => 'Wek serrastkirî nîşanbide',
-'markaspatrolledtext' => 'Vê rûpelê wek serrastkirî nîşanbide',
+'markaspatrolleddiff' => 'Wek serrastkirî nîşan bide',
+'markaspatrolledtext' => 'Vê rûpelê wek serrastkirî nîşan bide',
 'markedaspatrolled' => 'Wek serrastkirî tê nîşandan',
 'markedaspatrolledtext' => 'Guherandina rûpelê wek serrastkirî tê nîşandan.',
 
@@ -1857,21 +1870,21 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 
 # Image deletion
 'deletedrevision' => 'Guhertoya berê $1 hate jêbirin.',
-'filedelete-missing' => 'Data\'yê "$1" nikane were jêbirin, ji ber ku ew tune.',
-'filedelete-current-unregistered' => 'Datayê "$1" di sistêmê da tune.',
+'filedelete-missing' => 'Dane "$1" nikare were jêbirin, ji ber ku ew tune ye.',
+'filedelete-current-unregistered' => 'Daneya "$1" li sîstemê tune ye.',
 
 # Browsing diffs
-'previousdiff' => '← Ciyawaziya pêştir',
-'nextdiff' => 'Ciyawaziya paştir →',
+'previousdiff' => '← Cudahiya pêştir',
+'nextdiff' => 'Cudahiya paştir →',
 
 # Media information
 'thumbsize' => 'Mezinahiya wêne:',
 'widthheight' => '$1 x $2',
 'widthheightpage' => '$1 × $2, $3 rûpel',
-'file-info' => 'mezinbûnê data: $1, MIME-typ: $2',
+'file-info' => 'mezinbûna daneyê: $1, MIME type: $2',
 'file-info-size' => '$1 × $2 pixel, mezinbûnê data: $3, MIME-typ: $4',
 'file-nohires' => 'Versyonekî jê mezintir tune.',
-'svg-long-desc' => "Data'ya SVG, mezinbûna rast: $1 × $2 pixel; mezinbûna data'yê: $3",
+'svg-long-desc' => 'Daneya SVG, mezinbûna rast: $1 × $2 pixel; mezinbûna daneyê: $3',
 'show-big-image' => 'Mezînbûn',
 
 # Special:NewFiles
@@ -1881,17 +1894,17 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'newimages-legend' => 'Parzûn',
 'showhidebots' => '($1 bot)',
 'noimages' => 'Ne tiştek tê dîtin.',
-'ilsubmit' => 'Lêbigere',
+'ilsubmit' => 'Lêgerîn',
 'bydate' => 'li gor dîrokê',
-'sp-newimages-showfrom' => "Data'yên nuh ji dema $1, saet $2 da bibîne",
+'sp-newimages-showfrom' => 'Daneyên nû ji dema $1, saet $2 ve bibîne',
 
 # Variants for Kurdish language
-'variantname-ku-arab' => 'tîpên erebî',
-'variantname-ku-latn' => 'tîpên latînî',
+'variantname-ku-arab' => 'Tîpên erebî',
+'variantname-ku-latn' => 'Tîpên latînî',
 'variantname-ku' => 'disable',
 
 # Metadata
-'metadata' => "Data'yên meta",
+'metadata' => 'Daneyên meta',
 'metadata-expand' => 'Detayên dirêj nîşan bide',
 'metadata-collapse' => 'Detayên dirêj veşêre',
 
@@ -1899,7 +1912,7 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'exif-imagewidth' => 'Panbûn',
 'exif-imagelength' => 'Dirêjbûn',
 'exif-jpeginterchangeformatlength' => "Byte'ên daneya JPEG",
-'exif-imagedescription' => 'Navî wêneyê',
+'exif-imagedescription' => 'Navê wêne',
 'exif-model' => 'Modela kamerayê',
 'exif-artist' => 'Nûser',
 'exif-pixelydimension' => 'Firehiya wêne',
@@ -1916,6 +1929,7 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'exif-languagecode' => 'Ziman',
 'exif-iimcategory' => 'Kategorî',
 'exif-label' => 'Etîket',
+'exif-disclaimer' => 'Ferexetname',
 
 'exif-unknowndate' => 'Dîroka nayê zanîn',
 
@@ -1975,14 +1989,14 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hemû',
 'namespacesall' => 'Hemû',
-'monthsall' => 'giştik',
+'monthsall' => 'hemû',
 'limitall' => 'hemû',
 
 # E-mail address confirmation
 'confirmemail' => 'Adrêsa e-nameyan nasbike',
-'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[Special:Preferences|tercihên xwe da]] nenivîsandîye.',
+'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[Special:Preferences|tercihên xwe da]] nenivîsandiye.',
 'confirmemail_success' => 'E-Mail adrêsa te hate naskirin. Tu niha dikarî xwe qeydbikê û kêfkê.',
-'confirmemail_loggedin' => 'Adrêsa te yê E-Mail hate qebûlkirin.',
+'confirmemail_loggedin' => 'Navnîşana te ya E-Nameyê hate qebûlkirin.',
 'confirmemail_body' => 'Kesek, dibê tu, bi IP adressê $1, xwe li {{SITENAME}} bi vê navnîşana e-name tomar kir ("$2") .
 
 Eger ev rast qeydkirinê te ye û di dixwazî bikaranîna e-nama ji te ra çêbibe li {{SITENAME}}, li vê lînkê bitikîne:
@@ -1996,7 +2010,7 @@ Lê eger ev *ne* tu bû, li lînkê netikîne. Ev e-nameya di rojê $4 da netê
 'scarytranscludetoolong' => '[URL zêde dirêj e; bibore]',
 
 # Delete conflict
-'deletedwhileediting' => 'Hîşyar: Piştî te guherandinê xwe dest pê kir ev rûpela hate jêbirin!',
+'deletedwhileediting' => "'''Hişyarî:''' Piştî te dest bi guherandinê kir ev rûpel hate jêbirin!",
 'confirmrecreate' => "Piştî te dest bi guherandinê kir, bikarhêner [[User:$1|$1]] ([[User talk:$1|gotûbêj]]) ev rûpel jê bir. Sedema jêbirinê ev bû:
 : ''$2''
 Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
@@ -2013,24 +2027,24 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'imgmultigoto' => 'Here rûpela $1',
 
 # Table pager
-'table_pager_next' => 'Rûpelê din',
-'table_pager_prev' => 'Rûpelê berî',
-'table_pager_first' => 'Rûpelê yekemîn',
-'table_pager_last' => 'Rûpelê dawî',
+'table_pager_next' => 'Rûpela pêş',
+'table_pager_prev' => 'Rûpela berî',
+'table_pager_first' => 'Rûpela pêşîn',
+'table_pager_last' => 'Rûpela dawî',
 'table_pager_limit_submit' => 'Biçe',
 
 # Auto-summaries
 'autosumm-blank' => 'Rûpel hate vala kirin',
 'autosumm-replace' => "'$1' ket şûna rûpelê.",
 'autoredircomment' => 'ji bo [[$1]] hate beralîkirin',
-'autosumm-new' => 'Rûpela nû: $1',
+'autosumm-new' => 'Rûpela nû: "$1"',
 
 # Live preview
 'livepreview-loading' => 'Tê…',
 'livepreview-ready' => 'Bar dibe… Amade ye!',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Xeyrandin yê piştî $1 sanîyan hatine çêkirin belkî netên wêşendan.',
+'lag-warn-normal' => 'Sererastkirinên piştî $1 çirkeyan hatine çêkirin belkî neyên weşandin.',
 'lag-warn-high' => 'Ji bo westinê sistêmê ew xeyrandin, yê piştî $1 sanîyan hatine çêkirin netên wêşendan.',
 
 # Watchlist editor
@@ -2039,7 +2053,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'watchlistedit-normal-title' => 'Lîsteya xwe ya şopandinê biguherîne',
 'watchlistedit-normal-legend' => 'Gotaran ji lîsteya min ya şopandinê rake',
 'watchlistedit-normal-submit' => 'Gotaran jê bibe',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 gotar hate|$1 gotaran hatin}} jêbirin ji lîsteya te yê şopandinê:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 gotar hate|$1 gotar hatin}} jêbirin ji lîsteya te yê şopandinê:',
 'watchlistedit-raw-titles' => 'Sernav:',
 'watchlistedit-raw-removed' => '{{PLURAL:$1|1 gotar hate|$1 gotar hatin}} jêbirin:',
 
@@ -2056,7 +2070,8 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'version-version' => ' (Verzîyon $1)',
 'version-license' => 'Destûr',
 'version-software-product' => 'Berhem',
-'version-software-version' => 'Versiyon',
+'version-software-version' => 'Guherto',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath-page' => 'Wêne:',
@@ -2064,7 +2079,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch-filename' => 'Navê dosyeyê:',
-'fileduplicatesearch-submit' => 'Lêbigere',
+'fileduplicatesearch-submit' => 'Lê bigere',
 
 # Special:SpecialPages
 'specialpages' => 'Rûpelên taybet',
@@ -2073,7 +2088,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 * <strong class="mw-specialpagerestricted">Rûpelên taybetî ji bikarhêneran bi mafên zêdetir ra</strong>',
 'specialpages-group-other' => 'Rûpelên taybetî yên din',
 'specialpages-group-login' => 'Têkeve',
-'specialpages-group-changes' => 'Guherandinên dawî û reşahîyan',
+'specialpages-group-changes' => 'Guherandinên dawî û têketin',
 'specialpages-group-media' => 'Nameyên medyayan û barkirinan',
 'specialpages-group-users' => 'Bikarhêner û maf',
 'specialpages-group-pages' => 'Lîstên rûpelan',
@@ -2106,7 +2121,12 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'htmlform-selectorother-other' => 'Yên din',
 
 # New logging system
+'logentry-delete-delete' => '$1 rûpela $3 jê bir',
+'revdelete-content-hid' => 'naverok veşartî ye',
 'revdelete-uname-hid' => 'navê bikarhêneriyê yê veşartî',
+'logentry-move-move' => '$1 navê $3 weke $4 guherand',
+'logentry-move-move-noredirect' => '$1 navê $3 guherand û kir $4',
+'logentry-move-move_redir' => '$1 navê $3 guherand û kir $4',
 'logentry-newusers-newusers' => '$1 hesabekî bikarhêneriyê çêkir',
 'logentry-newusers-create' => '$1 hesabekî bikarhêneriyê çêkir',
 'newuserlog-byemail' => 'şîfre bi e-nameyê hate şandin',
index a734e89..fc9b562 100644 (file)
@@ -68,6 +68,9 @@ $namespaceAliases = array(
        'Diskussión_de_Kateggoría' => NS_CATEGORY_TALK,
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'UsadoresAktivos' ),
        'Allmessages'               => array( 'TodosLosMessajes' ),
index eee501c..dc6af2f 100644 (file)
@@ -157,7 +157,7 @@ $magicWords = array(
        'namespace'               => array( '1', 'Nummraum', 'NAMENSRAUM', 'NAMESPACE' ),
        'subjectspace'            => array( '1', 'Haaptnummraum', 'HAUPTNAMENSRAUM', 'SUBJECTSPACE', 'ARTICLESPACE' ),
        'subjectpagename'         => array( '1', 'Haaptsäit', 'HAUPTSEITE', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
-       'img_thumbnail'           => array( '1', 'Miniatur', 'miniatur', 'thumbnail', 'thumb' ),
+       'img_thumbnail'           => array( '1', 'Miniatur', 'miniatur', 'mini', 'thumbnail', 'thumb' ),
        'img_right'               => array( '1', 'riets', 'rechts', 'right' ),
        'img_left'                => array( '1', 'lénks', 'links', 'left' ),
        'img_none'                => array( '1', 'ouni', 'ohne', 'none' ),
@@ -166,7 +166,7 @@ $magicWords = array(
        'img_frameless'           => array( '1', 'net_gerummt', 'rahmenlos', 'frameless' ),
        'img_page'                => array( '1', 'Säit=$1', 'Säit_$1', 'seite=$1', 'seite $1', 'page=$1', 'page $1' ),
        'img_border'              => array( '1', 'bord', 'rand', 'border' ),
-       'img_top'                 => array( '1', 'uewen', 'top' ),
+       'img_top'                 => array( '1', 'uewen', 'oben', 'top' ),
        'grammar'                 => array( '0', 'GRAMMAIRE', 'GRAMMATIK:', 'GRAMMAR:' ),
        'plural'                  => array( '0', 'PLURAL', 'PLURAL:' ),
        'formatnum'               => array( '0', 'ZUELEFORMAT', 'ZAHLENFORMAT', 'FORMATNUM' ),
@@ -810,7 +810,9 @@ Et ka sinn datt e geännert oder geläscht gouf iwwerdeems wou Dir d'Säit gekuc
 D'Passwuert fir dësen neie Benotzerkont kann op der ''[[Special:ChangePassword|Passwuert ännere]]'' Säit beim Alogge geännert ginn.",
 'newarticle' => '(Nei)',
 'newarticletext' => "Dir hutt op e Link vun enger Säit geklickt, déi et nach net gëtt. Fir déi Säit unzeleeën, gitt w.e.g. Ären Text an déi Këscht hei drënner an (kuckt d'[[{{MediaWiki:Helppage}}|Hëllef Säit]] fir méi Informatiounen). Wann Dir duerch een Iertum heihi komm sidd, da klickt einfach op de Knäppchen '''Zréck''' vun Ärem Browser.",
-'anontalkpagetext' => "---- ''Dëst ass d'Diskussiounssäit fir en anonyme Benotzer deen nach kee Kont opgemaach huet oder en net benotzt. Dowéinst musse mir d'IP Adress benotzen, fir de Benotzer z'identifizéieren. Sou eng IP Adress ka vun e puer Benotzer gedeelt ginn. Wann Dir en anonyme Benotzer sidd an Dir irrelevant Kommentäre krut, [[Special:UserLogin/signup|maacht w.e.g. e Kont op]] oder [[Special:UserLogin|loggt Iech an]], fir weider Verwiesselunge mat anonyme Benotzer ze verhënneren.''",
+'anontalkpagetext' => "---- ''Dëst ass d'Diskussiounssäit fir en anonyme Benotzer deen nach kee Kont opgemaach huet oder en net benotzt. Dowéinst musse mir d'IP Adress benotzen, fir de Benotzer z'identifizéieren.
+Sou eng IP Adress ka vun e puer Benotzer gedeelt ginn.
+Wann Dir en anonyme Benotzer sidd an Dir irrelevant Kommentäre krut, [[Special:UserLogin/signup|maacht w.e.g. e Kont op]] oder [[Special:UserLogin|loggt Iech an]], fir weider Verwiesselunge mat aneren anonyme Benotzer ze verhënneren.''",
 'noarticletext' => 'Dës Säit huet momentan keen Text.
 Dir kënnt op anere Säiten no [[Special:Search/{{PAGENAME}}|dësem Säitentitel sichen]],
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} an den entspriechende Logbicher nokucken] oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} esou eng Säit uleeën]</span>.',
index c01f498..f610349 100644 (file)
@@ -1972,6 +1972,7 @@ Controleer of se wellich n fout höbs gemaak bie de inveur.',
 'alllogstext' => "Dit is 't gecombineerd logbook ven {{SITENAME}}. De kins ouch 'n bepaald logbook keze, of filtere op gebroekersnaam of  pazjena, beide huidlettergeveulig.",
 'logempty' => "d'r Zeen gein regels in 't logbook die voldaon aan deze criteria.",
 'log-title-wildcard' => "Zeuk pagina's die met deze naam beginne",
+'showhideselectedlogentries' => 'Tuin of verstaek geselecteerdje logbookregels',
 
 # Special:AllPages
 'allpages' => "Alle pagina's",
index f82e0be..aa7144a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Lithuanian (Lietuvių)
+/** Lithuanian (lietuvių)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 803dc56..78f567e 100644 (file)
@@ -327,6 +327,12 @@ Vohbik phekte chu hetah hian a en theih [[Special:SpecialPages|{{int:specialpage
 # General errors
 'error' => 'Dik lo',
 'databaseerror' => 'Database dik loh',
+'dberrortext' => 'Zémpui zawhna tih dik loh a awm palh.
+Kháwlthlûakah hrik a awm tihna a ni mai thei.
+Zémpui zawhna hnuhnüng ber chu:
+<blockquote><tt>$1<tt></blockquote>,
+"<<tt>$2</tt>" tih hnathawh chhúng aṭang.
+Zémpuiin dikhlelhna "<tt>$3: $4</tt>" a rawn khawhkïr.',
 'laggedslavemode' => "'''Vaukhanna:''' He phêk hian tun hnaia siam thar a pho lang lo mai thei.",
 'readonly' => 'Database kalh a ni',
 'enterlockreason' => 'I kalhna chhan leh i hawn leh hun tura i rin sawi rawh',
@@ -428,6 +434,7 @@ I thilziah enfiah rawh, a nih loh pawhin [[Special:UserLogin/signup|siangchan th
 'nosuchusershort' => 'Hmangtu hming "$1" a awm lo.
 I thilziah enfiah rawh.',
 'nouserspecified' => 'Hmangtuhming i ziah a ngai.',
+'login-userblocked' => 'Hë hmangtu hi danbeh a ni. Luh phalsak a ni lo.',
 'wrongpassword' => 'Thurûk dik lo.
 Khawngaihin tum nawn leh rawh.',
 'wrongpasswordempty' => 'Thurûk i ziak lo.
@@ -453,6 +460,10 @@ E-chenhmun dik tak ziaklût rawh, a nih loh leh thai reh vek rawh.',
 'accountcreated' => 'Siangchan siamfel a ni ta.',
 'accountcreatedtext' => '$1 tana hmangtu siangchan siamfel a ni ta.',
 'createaccount-title' => '{{SITENAME}} tana siangchan siam',
+'createaccount-text' => 'Tüemawin {{SITENAME}}-ah ($4) i e-chènhmun hmangin "$2" tih hming púin, thurûka "$3" tih hmangin siangchan a lo siam a.
+Thurûk tidanglam tùrin i luh vat a ngái.
+
+Hë siangchan hi siam sual palh a nih chuan hë thuthawn hi i ngaihthah dáwn nia.',
 'usernamehasherror' => 'Hmangtuhmingin bawhtah lem a hmang thiang lo',
 'login-throttled' => 'Tunhnai maiah luh i tum ngun lutuk.
 I tum leh hmain nghâk lawk ang che.',
@@ -559,7 +570,7 @@ I siangchan thurûk hi [[Special:ChangePassword|thurûk tihdanglamna]]-ah i inzi
 Tihsual palh thilthua heta lo lût i nih chuan i rangpuifanna-a '''letna''' fei zawnah hmet rawh.",
 'noarticletext' => 'He phêkah hian thu a la awm hrih lo.
 Phêk dangah [[Special:Search/{{PAGENAME}}| he phêk hming hi i zawng]] thei ang, a nih loh pawhin a laichin 
-<span class="plainlinks">[{{fullurl:{{#Special:Log}} | page={{FULLPAGENAMEE}}}} log dang i zawng thei ang]; a nih loh chuan [{{fullurl:{{FULLPAGENAME}}|action=edit}} he phêk hi i siamţha thei ang] </span>.',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}} | page={{FULLPAGENAMEE}}}} chanchin-ziak dang i zawng thei ang]; a nih loh chuan [{{fullurl:{{FULLPAGENAME}}|action=edit}} he phêk hi i siamţha thei ang] </span>.',
 'noarticletext-nopermission' => 'He phêkah hian thu a la awm hrih lo.
 He phêk hming hi hmun dangah i [[Special:Search/{{PAGENAME}}|zawng]] thei ang, a nih loh pawhin <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}-a a laichin chanchin dang] i zawng thei bawk ang. </span>',
 'userpage-userdoesnotexist' => 'Hmangtu siangchan "$1" hi hriat a ni lo.
@@ -572,6 +583,7 @@ I rawn atan a danbeh chhinchhiahna kan han tarlang a ni e:',
 'note' => "'''Hriat tùr:'''",
 'previewnote' => "'''Heihi endikna chauh a ni tih hrereng ang che.'''
 I tihdanglamna dahţhat a la ni lo!",
+'continue-editing' => 'Siamṭhat chhunzawmna',
 'session_fail_preview_html' => "'''A pawi hlë mai! Ṭhutchhúng chanchin vawnna hloh avangin i siamṭhatna dahṭhat theih a ni lo.'''
 
 ''{{SITENAME}}-in HTML hel a tihzalen avangin hë enlâwkna hi JavaScript beihna laka invèn fimkhur nan thup bo a ni.''
@@ -579,6 +591,7 @@ I tihdanglamna dahţhat a la ni lo!",
 '''Hei hi siamṭhat tumna dànzui pangngai a nih chuan khawngaihin dahṭhat tum nawn leh rawh.'''
 I la dahṭhat theih loh cheu chuan [[Special:UserLogout|chhuah phawt ]] a, luh nawn leh hmang tein han bei vêl chhin lä.",
 'editing' => '$1 i siam(ţha) mék',
+'creating' => '$1 i siam mék',
 'editingsection' => '$1 (hlawm) i siam(ţha) mék',
 'editingcomment' => '$1 (hlawm thar) i siam(ţha) mék',
 'editconflict' => 'Siamţhat inchuh: $1',
@@ -587,8 +600,8 @@ I la dahṭhat theih loh cheu chuan [[Special:UserLogout|chhuah phawt ]] a, luh
 'yourdiff' => 'Danglamnate',
 'protectedpagewarning' => "'''Vaukhanna: Hë phêk hi roreltute chauhvin an siamṭhat theihna tùrin vènhim a ni.'''
 I rawn atan ziaka chanchin dah hnuhnüng ber kan rawn chhawp chhuak e:",
-'semiprotectedpagewarning' => "'''Hriat tùr:''' He phêk hi hmangtu inziaklûtte chauhvin an tihdanglam theihna tùra vènhim a ni.
-I rawn tùrin siamm-danglamna chanchin ziaka kan dahţhat thar ber a hnuaiah khuan kan chhawp e:",
+'semiprotectedpagewarning' => "'''Hriat tùr:''' He phêk hi hmangtu inziaklûtte chauhvin an tihdanglam theih tùra vènhim a ni.
+I ràwn tùrin siam danglamna chanchin ziaka kan dahţhat thạr ber a hnuaiah khuan kan rawn chhawpchhûak e:",
 'templatesused' => 'He phêka {{PLURAL:$1|siamsa hman|siamsa hmante}}',
 'templatesusedpreview' => 'He endiknaa {{PLURAL:$1|Siamsa hman|Siamsa hmante}}:',
 'templatesusedsection' => 'Hemi hlawma  {{PLURAL:$1|Siamsa hman|Siamsa hmante}}',
@@ -607,8 +620,11 @@ He phêk buaipui chhunzawm hi a remchang nge chang lo tih inbihchiang rawh.
 Remchangah he phek paihna leh sawnna chhinchhiahna-ziak rawn chhawp chhuah a ni e:",
 'moveddeleted-notice' => 'He phek hi paih tawh a ni.
 I rawn atan he phek paihna leh sawnna chanchin chhinchhiahna a hnuaiah khuan chhawp chhuah a ni.',
-'log-fulllog' => 'Chanchin chhinchhiah kimchang enna',
+'log-fulllog' => 'Chanchin chhinchhiah kimchang hetah hian a en theih e.',
+'edit-gone-missing' => 'Phêk bithuam theih a ni lo.
+Nuaibo a ni tawh a nih hmèl.',
 'edit-conflict' => 'Siamţhat inchuh buaina.',
+'edit-no-change' => 'Tihdanglam i neih leh tâk loh avangin i siamṭhatna ngaihthah a ni.',
 'edit-already-exists' => 'Phêk thar siam theih a ni lo.
 A awm tawh sa.',
 'defaultmessagetext' => 'Thuthawn tùr ziahsa',
@@ -623,6 +639,7 @@ Heng kawngte hi hmaih mai tur.",
 
 # History pages
 'viewpagelogs' => 'He phêk chanchin hi en rawh',
+'nohistory' => 'Hë phêk siamṭhatna chanchin ziak a awm lo tlat.',
 'currentrev' => 'Ennawnna hnuhnung ber',
 'currentrev-asof' => 'Ni $1-a ennawnna hnuhnung ber',
 'revisionasof' => '$1 -a ennawnna zawng',
@@ -641,6 +658,8 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'history-show-deleted' => 'Nuaibo tawh zawng chauh',
 'histfirst' => 'Hmasa ber',
 'histlast' => 'Hnuhnung ber',
+'historysize' => '({{PLURAL:$1|bait 1 |bait $1}})',
+'historyempty' => '(ruak)',
 
 # Revision feed
 'history-feed-title' => 'Ennawnna chanchin',
@@ -657,6 +676,13 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'revdel-restore-deleted' => 'ennawnna nuaibo tawhte',
 'revdel-restore-visible' => 'ennawn hmuh theih chin',
 'pagehist' => 'Phêk chanchin',
+'deletedhist' => 'Chanchin nuaibo',
+'revdelete-reasonotherlist' => 'Chhan dang',
+'revdelete-edit-reasonlist' => 'Nuaibona chhante siamṭhatna',
+'revdelete-offender' => 'Ennawntu:',
+
+# Suppression log
+'suppressionlog' => 'Nuaibo chhinchhiahna',
 
 # Merge log
 'revertmerge' => 'Ţhenhranna',
@@ -677,6 +703,7 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'nextn-title' => 'Zawnchhuah dawt leh $1 {{PLURAL:$1||}}',
 'shown-title' => 'Phek khatah zawnchhuah $1 {{PLURAL:$1||}} zel tilang rawh',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) en rawh',
+'searchmenu-legend' => 'Zawn duhthlanna',
 'searchmenu-exists' => "'''He wiki-ah hian \"[[:\$1]]\" tia koh phêk a awm.'''",
 'searchmenu-new' => "'''[[:$1]] phek hi he wiki-ah hian siam rawh le!'''",
 'searchhelp-url' => 'Help:A chhunga thu awmte',
@@ -968,6 +995,10 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'minoreditletter' => 't',
 'newpageletter' => 'T',
 'boteditletter' => 'k',
+'number_of_watching_users_pageview' => '[$1 hmangtu {{PLURAL:$1||te}} vil mék]',
+'rc_categories' => 'Pawla bithliahna ("|" hmangin kárdan rawh)',
+'rc_categories_any' => 'Väi',
+'rc-change-size-new' => 'Tihdanglam hnuah {{PLURAL:$1|bait|bait}} $1',
 'newsectionsummary' => '/* $1 */ hläwm thar',
 'rc-enhanced-expand' => 'Tilang kim rawh (JavaScript a ngai)',
 'rc-enhanced-hide' => 'Thup ţhenna',
@@ -1025,6 +1056,10 @@ A aia hmuhnawm deuh zâwka i thlìr duh chuan [[Special:NewFiles|taksa hlankai t
 A hming thlâk la bei ţha leh rawh.',
 'filename-toolong' => 'Taksahming 240 bytes aiin a sei tùr a ni lo.',
 'badfilename' => 'Taksahming "$1"-ah thlâk a ni.',
+'filetype-mime-mismatch' => 'Taksa hming zauhna ".$1"-in a taksa MIME chî kan hmuh ($2) a mil lo tlat.',
+'filetype-badmime' => '"$1" ang MIME chî taksa hlànkài phal a ni lo.',
+'filetype-unwanted-type' => "'''\".\$1\"''' hi taksa phal loh chî a ni.
+Taksa phalzáwng{{PLURAL:\$3||te}} chu: \$2.",
 'filetype-missing' => 'Taksain tawpna a nei lo (entirna ".jpg").',
 'empty-file' => 'I taksa thehluh kha a ruak.',
 'file-too-large' => 'A lian leh lutuk.',
@@ -1043,6 +1078,8 @@ he taksa hi $2 lái a ni.',
 'windows-nonascii-filename' => 'Hë wiki hian taksahminga chhinchhiahna bîk tel a pawm thei lo.',
 'savefile' => 'Taksa dahṭhatna',
 'uploadedimage' => 'hlankai: "[[$1]]"',
+'uploadvirus' => 'I taksa hlànkài tumin hrik a päi!
+Chanchin kimchang: $1',
 'upload-source' => 'Hnar taksa',
 'sourcefilename' => 'Hnar taksahming:',
 'sourceurl' => 'Hnar URL:',
@@ -1111,6 +1148,7 @@ Zawmtu zawng zawng [[Special:WhatLinksHere/$2|tlarchhuahna hetah hian a awm]] e.
 'nolinkstoimage' => 'He taksa zawmtu/hmanna phêk pakhat mah a awm lo.',
 'morelinkstoimage' => 'Hemi taksa zawmpui dang [[Special:WhatLinksHere/$1|enna}}.',
 'linkstoimage-redirect' => '$1 (taksa hruailuhna) $2',
+'duplicatesoffile' => 'A hnuaia taksa{{PLURAL:$1||te}} khu hë taksa nihpui{{PLURAL:$1||te}} a{{PLURAL:$1||n}} ni ([[Special:FileDuplicateSearch/$2|chanchin kimchang]]):',
 'sharedupload' => 'Hë taksa hi $1-a mi a ni a, hna-hmachhawp dangin a hmang vè mai thei.',
 'sharedupload-desc-there' => 'Hë taksa hi $1-a mi a ni a, hna-hmachhawp dangin a hmang ve mai thei.
 Hriattirna dang chu [$2 taksa sawifiahna phêk]-ah hian i en thei ang.',
@@ -1339,8 +1377,10 @@ Hetah hian [[Special:UnusedCategories|pawl hman lohho]] pholan tel a ni lo.
 'emailccsubject' => '$1: $2 hnenah thawn bawk rawh',
 'emailsent' => 'E-lehkha thawn a ni.',
 'emailsenttext' => 'I e-lehkha thawn a ni.',
+'emailuserfooter' => 'Hë e-lehkha hi {{SITENAME}}-a "Hmangtu e-lehkha thawn rawh" tih hmanraw hmanga $1-in $2 a thawn a ni.',
 
 # User Messenger
+'usermessage-summary' => 'Kháwlthuthawn a hnutchhiah e.',
 'usermessage-editor' => 'Thuthawntu khawl',
 
 # Watchlist
@@ -1628,7 +1668,9 @@ Khawngaihin i dahţhat/tlangzarh hmain endikna hmehkhep khu hmang ang che (hei h
 A hnar i en thei ang.',
 'tooltip-ca-history' => 'Tunhmaa he phêk ennawnnate',
 'tooltip-ca-protect' => 'He phek hi venghim rawh',
+'tooltip-ca-unprotect' => ' Vènhimphung tihdanglamna',
 'tooltip-ca-delete' => 'He phek hi paih rawh',
+'tooltip-ca-undelete' => 'Hë phêk nuaibo a nih hmaa siamṭhatnate kàitho leh rawh',
 'tooltip-ca-move' => 'He phek hi sawn rawh',
 'tooltip-ca-watch' => 'I ralvèn zingah telh rawh',
 'tooltip-ca-unwatch' => 'He phêk hi i ralvèn aţang paih rawh',
index 03f2529..9d8c470 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Itsmine
+ * @author Justincheng12345
  * @author Omnipaedista
  * @author Shinjiman
  */
@@ -709,6 +710,7 @@ $2',
 '''纂文若合,惠再之。如復不成,簿[[Special:UserLogout|重登]]焉。'''",
 'token_suffix_mismatch' => "'''君修見拒,蓋因代理之故,亂事見兮。'''",
 'editing' => '纂$1',
+'creating' => '撰$1',
 'editingsection' => '纂節$1',
 'editingcomment' => '贊$1',
 'editconflict' => '纂沖$1',
index 64b89e6..e8fa070 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Macedonian (Ð\9cакедонски)
+/** Macedonian (македонски)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2220,6 +2220,7 @@ $1',
 Можете да го ограничите прикажаното избирајќи тип на дневник, корисничко име (разликува големи и мали букви), или страница (разликува големи и мали букви).',
 'logempty' => 'Нема соодветни записи во дневникот.',
 'log-title-wildcard' => 'Пребарај наслови кои почнуваат со овој текст',
+'showhideselectedlogentries' => 'Прикажи/скриј одбрани записи',
 
 # Special:AllPages
 'allpages' => 'Сите страници',
@@ -3142,7 +3143,8 @@ $1',
 'spamprotectionmatch' => 'Следниот текст е она што го предизвика нашиот филтер за спам: $1',
 'spambot_username' => 'МедијаВики чистач на спам',
 'spam_reverting' => 'Враќам на последната верзија што не содржи врска до $1',
-'spam_blanking' => 'Сите верзии содржеа врски до $1, бришам',
+'spam_blanking' => 'Сите ревизии содржеа врски до $1. Чистам',
+'spam_deleting' => 'Сите ревизии содржеа врски до $1. Бришам',
 
 # Info page
 'pageinfo-title' => 'Информации за „$1“',
index a7d3e62..19d3729 100644 (file)
@@ -346,7 +346,7 @@ $messages = array(
 'tog-watchdefault' => 'ഞാൻ തിരുത്തുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
 'tog-watchmoves' => 'ഞാൻ തലക്കെട്ടു മാറ്റുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
 'tog-watchdeletion' => 'ഞാൻ നീക്കം ചെയ്യുന്ന താളുകൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
-'tog-minordefault' => 'à´\8eà´²àµ\8dലാ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ളായി à´¸àµ\8dവയà´\82 അടയാളപ്പെടുത്തുക',
+'tog-minordefault' => 'à´\8eà´²àµ\8dലാ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´¸àµ\8dവതàµ\87 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ളായി അടയാളപ്പെടുത്തുക',
 'tog-previewontop' => 'തിരുത്തൽ പെട്ടിക്കു മുകളിൽ പ്രിവ്യൂ കാണിക്കുക',
 'tog-previewonfirst' => 'ആദ്യത്തെ തിരുത്തലിന്റെ പ്രിവ്യൂ കാണിക്കുക',
 'tog-nocache' => 'ബ്രൗസറിൽ താളുകൾ തദ്ദേശീയമായി സംഭരിച്ചുവയ്ക്കുന്നത് നിർജ്ജീവമാക്കുക',
@@ -378,7 +378,7 @@ $messages = array(
 'underline-default' => 'ബ്രൗസറിലേതു പോലെ',
 
 # Font style option in Special:Preferences
-'editfont-style' => 'തിരുത്തൽ മേഖലയിലെ ഫോണ്ടിന്റെ ശൈലി',
+'editfont-style' => 'തിരുത്തൽ മേഖലയിലെ ഫോണ്ടിന്റെ ശൈലി:',
 'editfont-default' => 'ബ്രൗസറിലേതു പോലെ',
 'editfont-monospace' => 'മോണോസ്പേസ്ഡ് ഫോണ്ട്',
 'editfont-sansserif' => 'സാൻസ്-സെറിഫ് ഫോണ്ട്',
@@ -451,8 +451,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന ഒരു പ്രമാണം മാത്രമാണുള്ളത്.|ഈ വർഗ്ഗത്തിൽ മൊത്തം $2 പ്രമാണങ്ങളുള്ളതിൽ {{PLURAL:$1|ഒരെണ്ണം|$1 എണ്ണം}} താഴെ നൽകിയിരിക്കുന്നു.}}',
 'category-file-count-limited' => 'ഈ വർഗ്ഗത്തിൽ താഴെ നൽകിയിരിക്കുന്ന {{PLURAL:$1|ഒരു പ്രമാണം|$1 പ്രമാണങ്ങൾ}} ഉണ്ട്.',
 'listingcontinuesabbrev' => 'തുടർച്ച.',
-'index-category' => 'വർà´\97àµ\8dà´\97àµ\80കരിക്കപ്പെട്ട താളുകൾ',
-'noindex-category' => 'വർà´\97àµ\8dà´\97àµ\80കരിക്കപ്പെടാത്ത താളുകൾ',
+'index-category' => 'à´¸àµ\82à´\9aà´¿à´\95ാവതàµ\8dകരിക്കപ്പെട്ട താളുകൾ',
+'noindex-category' => 'à´¸àµ\82à´\9aà´¿à´\95ാവതàµ\8dകരിക്കപ്പെടാത്ത താളുകൾ',
 'broken-file-category' => 'പ്രമാണത്തിലേക്കുള്ള പ്രവർത്തനരഹിതമായ കണ്ണി ഉൾക്കൊള്ളുന്ന താളുകൾ',
 
 'about' => 'വിവരണം',
@@ -492,7 +492,7 @@ $messages = array(
 'vector-view-viewsource' => 'മൂലരൂപം കാണുക',
 'actions' => 'നടപടികൾ',
 'namespaces' => 'നാമമേഖല',
-'variants' => 'à´\9aà´°ങ്ങൾ',
+'variants' => 'à´°àµ\82പഭàµ\87à´¦ങ്ങൾ',
 
 'errorpagetitle' => 'പിഴവ്',
 'returnto' => '$1 എന്ന താളിലേക്ക് തിരിച്ചുപോവുക.',
@@ -534,7 +534,7 @@ $messages = array(
 'toolbox' => 'പണിസഞ്ചി',
 'userpage' => 'ഉപയോക്താവിന്റെ താൾ കാണുക',
 'projectpage' => 'പദ്ധതി താൾ കാണുക',
-'imagepage' => 'à´®àµ\80à´¡à´¿à´¯ താൾ കാണുക',
+'imagepage' => 'à´ªàµ\8dരമാണ താൾ കാണുക',
 'mediawikipage' => 'സന്ദേശങ്ങളുടെ താൾ കാണുക',
 'templatepage' => 'ഫലകം താൾ കാണുക',
 'viewhelppage' => 'സഹായം താൾ കാണുക',
@@ -590,7 +590,7 @@ $1',
 'youhavenewmessages' => 'താങ്കൾക്ക് $1 ഉണ്ട് ($2).',
 'newmessageslink' => 'പുതിയ സന്ദേശങ്ങൾ',
 'newmessagesdifflink' => 'അവസാന മാറ്റം',
-'youhavenewmessagesmulti' => 'താങ്കൾക്ക് $1-ൽ പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്',
+'youhavenewmessagesmulti' => 'താങ്കൾക്ക് $1 താളിൽ പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്',
 'editsection' => 'തിരുത്തുക',
 'editold' => 'തിരുത്തുക',
 'viewsourceold' => 'മൂലരൂപം കാണുക',
@@ -608,9 +608,9 @@ $1',
 'feedlinks' => 'ഫീഡ്:',
 'feed-invalid' => 'അസാധുവായ സബ്‌സ്ക്രിപ്ഷൻ ഫീഡ് തരം.',
 'feed-unavailable' => 'സിൻഡിക്കേഷൻ ഫീഡുകൾ ലഭ്യമല്ല',
-'site-rss-feed' => '$1 à´¨àµ\8dà´±àµ\86 à´\86ർ.à´\8eà´¸àµ\8d.à´\8eà´¸àµ\8d à´«àµ\80à´¡àµ\8d',
-'site-atom-feed' => '$1 à´¨àµ\8dà´±àµ\86 à´\86à´±àµ\8dà´±à´\82 à´«àµ\80à´¡àµ\8d',
-'page-rss-feed' => '"$1" ന്റെ ആർ.എസ്.എസ്. ഫീഡ്',
+'site-rss-feed' => '$1 ആർ.എസ്.എസ് ഫീഡ്',
+'site-atom-feed' => '$1 ആറ്റം ഫീഡ്',
+'page-rss-feed' => '"$1"  ആർ.എസ്.എസ്. ഫീഡ്',
 'page-atom-feed' => '"$1" ആറ്റം ഫീഡ്',
 'feed-atom' => 'ആറ്റം',
 'feed-rss' => 'ആർ.എസ്.എസ്.',
@@ -668,8 +668,8 @@ $1',
 'missingarticle-rev' => '(മാറ്റം#: $1)',
 'missingarticle-diff' => '(വ്യത്യാസം: $1, $2)',
 'readonly_lag' => 'വിവരശേഖരം സ്വയം ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു അതേസമയം കീഴ്-വിവരശേഖര സെർവറുകൾ മാസ്റ്റർ വരെ പിടിച്ചിരിക്കുന്നു',
-'internalerror' => 'ആന്തരികപ്രശ്നം',
-'internalerror_info' => 'ആന്തരികപ്രശ്നം: $1',
+'internalerror' => 'ആന്തരിക പിഴവ്',
+'internalerror_info' => 'ആന്തരിക പിഴവ്: $1',
 'fileappenderrorread' => 'കൂട്ടിച്ചേർക്കുന്ന സമയം "$1" വായിച്ചെടുക്കാൻ കഴിഞ്ഞില്ല.',
 'fileappenderror' => '"$1" എന്നത് "$2"-ലേക്ക് കൂട്ടിച്ചേർക്കുവാൻ സാധിച്ചില്ല.',
 'filecopyerror' => '"$1" എന്ന പ്രമാണം "$2" എന്നതിലേയ്ക്ക് പകർത്താൻ സാധിച്ചില്ല.',
@@ -734,7 +734,7 @@ $2',
 'yourpassword' => 'രഹസ്യവാക്ക്:',
 'yourpasswordagain' => 'രഹസ്യവാക്ക് ഒരിക്കൽക്കൂടി:',
 'remembermypassword' => 'എന്റെ പ്രവേശനം ഈ ബ്രൗസറിൽ ({{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}) ഓർത്തുവെക്കുക',
-'securelogin-stick-https' => 'à´ªàµ\8dà´°à´µàµ\87ശിà´\9aàµ\8dà´\9aതിനàµ\81 à´\8eà´\9aàµ\8dà´\9aàµ\8d.à´±àµ\8dറി.à´±àµ\8dറി.പി.à´\8eà´¸àµ\8d. ഉപയോഗിക്കുക',
+'securelogin-stick-https' => 'à´ªàµ\8dà´°à´µàµ\87ശനതàµ\8dതിനàµ\81 à´¶àµ\87à´·à´µàµ\81à´\82 à´\8eà´\9aàµ\8dà´\9aàµ\8d.à´±àµ\8dറി.à´±àµ\8dറി.പി.à´\8eà´¸àµ\8d. à´¤à´¨àµ\8dà´¨àµ\86 ഉപയോഗിക്കുക',
 'yourdomainname' => 'താങ്കളുടെ ഡൊമെയിൻ:',
 'externaldberror' => 'ഒന്നുകിൽ ഡേറ്റാബേസ് സാധൂകരണത്തിൽ പ്രശ്നം ഉണ്ടായിരുന്നു അല്ലെങ്കിൽ നവീകരിക്കുവാൻ താങ്കളുടെ ബാഹ്യ അംഗത്വം താങ്കളെ അനുവദിക്കുന്നില്ല.',
 'login' => 'പ്രവേശിക്കുക',
@@ -2119,13 +2119,14 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'booksources-invalid-isbn' => 'തന്നിരിക്കുന്ന ഐ.എസ്.ബി.എൻ. സാധുവാണെന്നു തോന്നുന്നില്ല; യഥാർത്ഥ സ്രോതസ്സിൽ നിന്നും പകർത്തിയപ്പോൾ തെറ്റുപറ്റിയോ എന്നു പരിശോധിക്കുക',
 
 # Special:Log
-'specialloguserlabel' => 'à´\86വിഷàµ\8dà´\95ർതàµ\8dതാവàµ\8d:',
+'specialloguserlabel' => 'à´¨à´\9fà´ªàµ\8dപിലാà´\95àµ\8dà´\95ിയയാൾ:',
 'speciallogtitlelabel' => 'ലക്ഷ്യം (തലക്കെട്ട് അല്ലെങ്കിൽ ഉപയോക്താവ്) :',
 'log' => 'പ്രവർത്തനരേഖകൾ',
 'all-logs-page' => 'എല്ലാ പൊതുരേഖകളും',
 'alllogstext' => '{{SITENAME}} സംരംഭത്തിൽ ലഭ്യമായ വിവിധ പ്രവർത്തന രേഖകൾ ഈ താളിൽ ഒരുമിച്ച് കാണാം. താങ്കൾക്ക് രേഖകളുടെ സ്വഭാവം, ഉപയോക്തൃനാമം (കേസ് സെൻസിറ്റീവ്), ബന്ധപ്പെട്ട താൾ (കേസ് സെൻസിറ്റീവ്) മുതലായവ തിരഞ്ഞെടുത്ത് അന്വേഷണം കൂടുതൽ ക്ഌപ്തപ്പെടുത്താവുന്നതാണ്.',
 'logempty' => 'പ്രവർത്തനരേഖയിൽ ബന്ധമുള്ളവ ഇല്ല.',
 'log-title-wildcard' => 'ഈ വാക്കിൽ തുടങ്ങുന്ന തിരച്ചിൽ ഫലങ്ങൾ',
+'showhideselectedlogentries' => 'തിരഞ്ഞെടുത്ത രേഖാ വിവരങ്ങൾ പ്രദർശിപ്പിക്കുക/മറയ്ക്കുക',
 
 # Special:AllPages
 'allpages' => 'എല്ലാ താളുകളും',
@@ -2136,7 +2137,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'allpagesto' => 'ഇതിൽ അവസാനിക്കുന്ന താളുകൾ കാട്ടുക:',
 'allarticles' => 'എല്ലാ താളുകളും',
 'allinnamespace' => 'എല്ലാ താളുകളും ($1 നാമമേഖല)',
-'allnotinnamespace' => 'à´\8eà´²àµ\8dലാ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\82 ($1 à´¨à´¾à´®à´®àµ\87à´\96ലയിലലàµ\8dലാതàµ\8dതതàµ\8d)',
+'allnotinnamespace' => 'à´\8eà´²àµ\8dലാ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\82 ($1 à´¨à´¾à´®à´®àµ\87à´\96ലയിലലàµ\8dലാതàµ\8dതവ)',
 'allpagesprev' => 'മുമ്പത്തെ',
 'allpagesnext' => 'അടുത്തത്',
 'allpagessubmit' => 'പോകൂ',
@@ -2180,7 +2181,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'listusersfrom' => 'ഇങ്ങനെ തുടങ്ങുന്ന ഉപയോക്താക്കളെ പ്രദർശിപ്പിക്കുക:',
 'listusers-submit' => 'പ്രദർശിപ്പിക്കുക',
 'listusers-noresult' => 'ഈ സംഘത്തിൽ ഉൾപ്പെടുന്ന ഉപയോക്താക്കൾ ആരും ഇല്ല.',
-'listusers-blocked' => '(à´¤à´\9fയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´¤àµ\8d)',
+'listusers-blocked' => '(à´¤à´\9fയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fàµ\81)',
 
 # Special:ActiveUsers
 'activeusers' => 'സജീവ ഉപയോക്താക്കളുടെ പട്ടിക',
@@ -2201,7 +2202,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 വ്യക്തിപരമായ അവകാശങ്ങളെ കുറിച്ച് [[{{MediaWiki:Listgrouprights-helppage}}|കൂടുതൽ വിവരങ്ങൾ]] ഉണ്ടാകാനിടയുണ്ട്.',
 'listgrouprights-key' => '* <span class="listgrouprights-granted">അവകാശം നൽകിയിരിക്കുന്നു</span>
 * <span class="listgrouprights-revoked">അവകാശം നീക്കിയിരിക്കുന്നു</span>',
-'listgrouprights-group' => 'വിഭാà´\97ം',
+'listgrouprights-group' => 'à´¸à´\82à´\98ം',
 'listgrouprights-rights' => 'അവകാശങ്ങൾ',
 'listgrouprights-helppage' => 'Help:സംഘാവകാശങ്ങൾ',
 'listgrouprights-members' => '(അംഗങ്ങളുടെ പട്ടിക)',
@@ -2359,9 +2360,9 @@ $UNWATCHURL
 'rollbacklink' => 'റോൾബാക്ക്',
 'rollbackfailed' => 'റോൾബാക്ക് പരാജയപ്പെട്ടു',
 'cantrollback' => 'തിരുത്തൽ തിരസ്കരിക്കുവാൻ സാധിക്കുകയില്ല. ഒരു ഉപയോക്താവ് മാത്രമാണ് ഈ താളിൽ സം‌ഭാവന ചെയ്തിരിക്കുന്നത്.',
-'alreadyrolled' => '[[:$1]] എന്ന താളിൽ [[User:$2|$2]] ([[User talk:$2|Talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) നടത്തിയ തിരുത്തലുകൾ മുൻപ്രാപനം ചെയ്യാൻ സാധിക്കുന്നതല്ല. മറ്റാരോ താൾ തിരുത്തുകയോ മുൻപ്രാപനം ചെയ്യുകയോ ചെയ്തിരിക്കുന്നു.
+'alreadyrolled' => '[[:$1]] എന്ന താളിൽ [[User:$2|$2]] ([[User talk:$2|സംവാദം]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) നടത്തിയ തിരുത്തലുകൾ മുൻപ്രാപനം ചെയ്യാൻ സാധിക്കുന്നതല്ല. മറ്റാരോ താൾ തിരുത്തുകയോ മുൻപ്രാപനം ചെയ്യുകയോ ചെയ്തിരിക്കുന്നു.
 
-താളിലെ അവസാന തിരുത്തൽ ചെയ്തിരിക്കുന്നത് [[User:$3|$3]] ([[User talk:$3|Talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ആണ്.',
+താളിലെ അവസാന തിരുത്തൽ ചെയ്തിരിക്കുന്നത് [[User:$3|$3]] ([[User talk:$3|സംവാദം]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ആണ്.',
 'editcomment' => "തിരുത്തലിന്റെ ചുരുക്കം: \"''\$1''\" എന്നായിരുന്നു.",
 'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|സംവാദം]]) നടത്തിയ തിരുത്തലുകൾ നീക്കം ചെയ്തിരിക്കുന്നു; നിലവിലുള്ള പതിപ്പ് [[User:$1|$1]] സൃഷ്ടിച്ചതാണ്',
 'revertpage-nouser' => '(ഉപയോക്തൃനാമം നീക്കിയിരിക്കുന്നു) നടത്തിയ തിരുത്തലുകൾ [[User:$1|$1]] സൃഷ്ടിച്ച അവസാന പതിപ്പിലേയ്ക്ക് മുൻപ്രാപനം ചെയ്തിരിക്കുന്നു',
@@ -2413,7 +2414,7 @@ $UNWATCHURL
 'protect-othertime' => 'മറ്റ് കാലാവധി:',
 'protect-othertime-op' => 'മറ്റു കാലയളവ്',
 'protect-existing-expiry' => 'നിലവിലെ കാലാവധി: $3, $2',
-'protect-otherreason' => 'മറàµ\8dà´±àµ\81à´³àµ\8dà´³/à´ªàµ\81റമàµ\87à´¯àµ\81à´³àµ\8dà´³ കാരണം:',
+'protect-otherreason' => 'മറàµ\8dà´±àµ\8d/à´\95àµ\82à´\9fàµ\81തൽ കാരണം:',
 'protect-otherreason-op' => 'മറ്റ് കാരണം',
 'protect-dropdown' => '*സംരക്ഷിക്കാനുള്ള കാരണങ്ങൾ
 ** അമിതമായ നശീകരണപ്രവർത്തനങ്ങൾ
@@ -2628,7 +2629,7 @@ $1',
 'change-blocklink' => 'തടയലിൽ മാറ്റം വരുത്തുക',
 'contribslink' => 'സംഭാവനകൾ',
 'emaillink' => 'ഇമെയിൽ അയയ്ക്കുക',
-'autoblocker' => 'താങ്കളുടെ ഐ.പി. വിലാസം "[[User:$1|$1]]" എന്ന ഉപയോക്താവ് ഈ അടുത്ത് ഉപയോഗിക്കുകയും പ്രസ്തുത ഉപയോക്താവിനെ വിക്കിയിൽ നിന്നു തടയുകയും ചെയ്തിട്ടുള്ളതാണ്‌. അതിനാൽ താങ്കളും യാന്ത്രികമായി തടയപ്പെട്ടിരിക്കുന്നു. $1ന്റെ തടയലിനു സൂചിപ്പിക്കപ്പെട്ട കാരണം "$2" ആണ്‌.',
+'autoblocker' => 'താങ്കളുടെ ഐ.പി. വിലാസം "[[User:$1|$1]]" എന്ന ഉപയോക്താവ് ഈ അടുത്ത് ഉപയോഗിക്കുകയും പ്രസ്തുത ഉപയോക്താവിനെ വിക്കിയിൽ നിന്നു തടയുകയും ചെയ്തിട്ടുള്ളതാണ്‌. അതിനാൽ താങ്കളും യാന്ത്രികമായി തടയപ്പെട്ടിരിക്കുന്നു. $1 എന്ന ഉപയോക്താവിന്റെ തടയലിനു സൂചിപ്പിക്കപ്പെട്ട കാരണം "$2" എന്നാണ്‌.',
 'blocklogpage' => 'തടയൽ രേഖ',
 'blocklog-showlog' => 'ഈ ഉപയോക്താവ് മുമ്പേ തടയപ്പെട്ടതാണ്.
 തടയൽ രേഖ അവലംബമായി താഴെ കൊടുത്തിരിക്കുന്നു:',
@@ -3676,7 +3677,7 @@ $5
 
 # Watchlist editing tools
 'watchlisttools-view' => 'ബന്ധപ്പെട്ട മാറ്റങ്ങൾ കാട്ടുക',
-'watchlisttools-edit' => 'à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95 à´\95à´¾à´\9fàµ\8dà´\9fുക, തിരുത്തുക',
+'watchlisttools-edit' => 'à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95 à´\95ാണുക, തിരുത്തുക',
 'watchlisttools-raw' => 'താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയുടെ മൂലരൂപം തിരുത്തുക',
 
 # Signatures
@@ -3840,9 +3841,9 @@ $5
 'revdelete-uname-unhid' => 'ഉപയോക്തൃനാമം മറച്ചത് ഒഴിവാക്കിയിരിക്കുന്നു',
 'revdelete-restricted' => 'കാര്യനിർവാഹകർക്ക് പ്രവർത്തന അതിരുകൾ ഏർപ്പെടുത്തിയിരിക്കുന്നു',
 'revdelete-unrestricted' => 'കാര്യനിർവാഹകർക്ക് ഏർപ്പെടുത്തിയ പ്രവർത്തന അതിരുകൾ നീക്കം ചെയ്തിരിക്കുന്നു',
-'logentry-move-move' => '$1 à´\8eà´¨àµ\8dà´¨ à´\89പയàµ\8bà´\95àµ\8dതാവàµ\8d $3 à´\8eà´¨àµ\8dà´¨ à´¤à´¾àµ¾ $4 à´\86ക്കി മാറ്റിയിരിക്കുന്നു',
+'logentry-move-move' => '$1 à´\8eà´¨àµ\8dà´¨ à´\89പയàµ\8bà´\95àµ\8dതാവàµ\8d $3 à´\8eà´¨àµ\8dà´¨ à´¤à´¾àµ¾ $4 à´\8eà´¨àµ\8dനാക്കി മാറ്റിയിരിക്കുന്നു',
 'logentry-move-move-noredirect' => '$3 എന്ന താൾ $4 എന്ന തലക്കെട്ടിലേയ്ക്ക് തിരിച്ചുവിടലില്ലാതെ $1 മാറ്റി',
-'logentry-move-move_redir' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനുമുകളിലേയ്ക്ക് മാറ്റിയിരിക്കുന്നു',
+'logentry-move-move_redir' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനു മുകളിലേയ്ക്ക് മാറ്റിയിരിക്കുന്നു',
 'logentry-move-move_redir-noredirect' => '$1, $3 എന്ന താൾ $4 എന്ന താളിനുമുകളിലേയ്ക്ക്, തിരിച്ചുവിടൽ ഇല്ലാതെ മാറ്റിയിരിക്കുന്നു',
 'logentry-patrol-patrol' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
 'logentry-patrol-patrol-auto' => '$3 എന്ന താളിന്റെ $4 എന്ന നാൾപ്പതിപ്പ് റോന്തുചുറ്റിയതായി $1 സ്വതേ അടയാളപ്പെടുത്തിയിരിക്കുന്നു',
index 591a999..614cd34 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Mongolian (Ð\9cонгол)
+/** Mongolian (монгол)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index a108bf4..81c228d 100644 (file)
@@ -95,7 +95,7 @@ $specialPageAliases = array(
        'FileDuplicateSearch'       => array( 'दुहेरी_संचिका_शोध' ),
        'Filepath'                  => array( 'संचिकेचा_पत्ता_(पाथ)' ),
        'Import'                    => array( 'आयात' ),
-       'Invalidateemail'           => array( 'अग्राह्य_विपत्र', 'चूकदिनांकविपत्र' ),
+       'Invalidateemail'           => array( 'अग्राह्य_विपत्र' ),
        'BlockList'                 => array( 'प्रतिबंधन_सुची' ),
        'LinkSearch'                => array( 'दुवाशोध' ),
        'Listadmins'                => array( 'प्रबंधकांची_यादी' ),
@@ -127,7 +127,7 @@ $specialPageAliases = array(
        'Prefixindex'               => array( 'उपसर्गसुची' ),
        'Protectedpages'            => array( 'सुरक्षित_पाने' ),
        'Protectedtitles'           => array( 'सुरक्षित_शीर्षके' ),
-       'Randompage'                => array( 'कोणतेही', 'कोणतेही_पृष्ठ', 'अविशिष्ट', 'अविशिष्ट_पृष्ठ' ),
+       'Randompage'                => array( 'कोणतेही', 'कोणतेही_पृष्ठ' ),
        'Randomredirect'            => array( 'अविशिष्ट_पुर्ननिर्देशन' ),
        'Recentchanges'             => array( 'अलीकडील_बदल' ),
        'Recentchangeslinked'       => array( 'सांधलेलेअलिकडीलबदल' ),
@@ -156,7 +156,7 @@ $specialPageAliases = array(
        'Wantedfiles'               => array( 'संचिका_हवी' ),
        'Wantedpages'               => array( 'हवे_असलेले_लेख' ),
        'Wantedtemplates'           => array( 'साचा_हवा' ),
-       'Watchlist'                 => array( 'नित्य‌_पहाण्याची_सूची', 'पहार्‍याची_सूची' ),
+       'Watchlist'                 => array( 'नित्य‌_पहाण्याची_सूची' ),
        'Whatlinkshere'             => array( 'येथे_काय_जोडले_आहे' ),
        'Withoutinterwiki'          => array( 'आंतरविकि_शिवाय' ),
 );
index cb482c9..cce899d 100644 (file)
@@ -2026,6 +2026,7 @@ serta mungkin mempunyai maklumat lanjut mengenai buku yang anda cari:',
 'alllogstext' => 'Yang berikut ialah gabungan bagi semua log yang ada bagi {{SITENAME}}. Anda boleh menapis senarai ini dengan memilih jenis log, nama pengguna (peka huruf besar), atau nama laman yang terjejas (juga peka huruf besar).',
 'logempty' => 'Tiada item yang sepadan dalam log.',
 'log-title-wildcard' => 'Cari semua tajuk yang bermula dengan teks ini',
+'showhideselectedlogentries' => 'Tunjukkan/sorokkan entri-entri log yang terpilih',
 
 # Special:AllPages
 'allpages' => 'Semua laman',
@@ -2916,6 +2917,7 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'spambot_username' => 'Pembersihan spam MediaWiki',
 'spam_reverting' => 'Membalikkan kepada versi terakhir yang tidak mengandungi pautan ke $1',
 'spam_blanking' => 'Mengosongkan semua semakan yang mengandungi pautan ke $1',
+'spam_deleting' => 'Menghapuskan semua semakan yang mengandungi pautan ke $1',
 
 # Info page
 'pageinfo-title' => 'Maklumat untuk "$1"',
index 911cd5f..8c479ca 100644 (file)
@@ -1202,6 +1202,7 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 
 # Diffs
 'history-title' => 'Kronoloġija tal-modifiki ta\' "$1"',
+'difference-title' => 'Differenza bejn ir-reviżjonijiet ta\' "$1"',
 'difference-multipage' => '(Differenzi bejn il-paġni)',
 'lineno' => 'Linja $1:',
 'compareselectedversions' => 'Qabbel il-verżjonijiet magħżula',
@@ -2393,7 +2394,7 @@ $1',
 'namespace' => 'Spazju tal-isem:',
 'invert' => 'Inverti l-għażla',
 'tooltip-invert' => 'Agħżel din il-kaxxa biex taħbi l-modifiki lejn paġni li jinsabu fl-ispazji tal-isem magħżula (u l-ispazju tal-isem assoċjat jekk hu magħżul)',
-'namespace_association' => 'Spazju tal-isem assoċjata',
+'namespace_association' => 'Spazju tal-isem assoċjat',
 'tooltip-namespace_association' => "Agħżel din il-kaxxa sabiex tinkludi l-paġna ta' diskussjoni jew l-oġġett tal-ispazju tal-isem assoċjat mal-ispazju tal-isem magħżul",
 'blanknamespace' => '(Prinċipali)',
 
@@ -3702,6 +3703,7 @@ Stampi huwa mogħrija b'risoluzzjoni sħiħa, tipi tal-fajl oħrajn jibdew bil-p
 'sqlite-no-fts' => "$1 mingħajr il-possibilità ta' tfittxija kompluta fit-test",
 
 # New logging system
+'logentry-delete-delete' => '$1 ħassar il-paġna $3',
 'revdelete-restricted' => "limiti applikati 'l amministraturi",
 'revdelete-unrestricted' => "neħħi l-limiti 'l amministraturi",
 'logentry-move-move' => '$1 mexxa l-paġna $3 għal $4',
index 4b6ac06..0f1552c 100644 (file)
@@ -74,7 +74,7 @@ $namespaceAliases = array(
 );
 
 $magicWords = array(
-       'redirect'                => array( '0', '#بور', '#تغییرمسیر', '#REDIRECT' ),
+       'redirect'                => array( '0', '#بور', '#تغییرمسیر', '#تغییر_مسیر', '#REDIRECT' ),
        'notoc'                   => array( '0', '__بی‌فهرست__', '__NOTOC__' ),
        'nogallery'               => array( '0', '__بی‌نگارخنه__', '__بی‌نگارخانه__', '__NOGALLERY__' ),
        'forcetoc'                => array( '0', '__بافهرست__', '__FORCETOC__' ),
@@ -909,7 +909,7 @@ $2، $1',
 'allmessages-filter-all' => 'همه',
 
 # Thumbnails
-'thumbnail-more' => 'گت بأوه',
+'thumbnail-more' => 'گت بوو',
 
 # Special:Import
 'import-interwiki-submit' => 'بیاردن',
index 51a8e22..c8a4181 100644 (file)
@@ -36,6 +36,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Neneuhcāyōtl_tēixnāmiquiliztli',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $namespaceAliases = array(
        'Media'         => NS_MEDIA,
        'Especial'      => NS_SPECIAL,
@@ -1038,7 +1041,7 @@ In āxcān tlachiyaliztli onca īpan $PAGETITLE_URL
 $NEWPAGE
 
 In tlapatlaliztli īxtlamatiliztli cah: $PAGESUMMARY $PAGEMINOREDIT
+
 Xicnotzāz in tlapatlani:
 Correo electrónico: {{canonicalurl:Special:Emailuser|target=$PAGEEDITOR}}
 Huiqui: {{canonicalurl:User:$PAGEEDITOR}}
index 2749501..675b8a9 100644 (file)
@@ -56,7 +56,7 @@ $namespaceAliases = array(
 
 $magicWords = array(
        'redirect'                => array( '0', '#wiederleiden', '#WEITERLEITUNG', '#REDIRECT' ),
-       'notoc'                   => array( '0', '__KEENINHOLTVERTEKEN__', '__KEIN_INHALTSVERZEICHNIS__', '__NOTOC__' ),
+       'notoc'                   => array( '0', '__KEENINHOLTVERTEKEN__', '__KEIN_INHALTSVERZEICHNIS__', '__KEININHALTSVERZEICHNIS__', '__NOTOC__' ),
        'forcetoc'                => array( '0', '__WIESINHOLTVERTEKEN__', '__INHALTSVERZEICHNIS_ERZWINGEN__', '__FORCETOC__' ),
        'toc'                     => array( '0', '__INHOLTVERTEKEN__', '__INHALTSVERZEICHNIS__', '__TOC__' ),
        'noeditsection'           => array( '0', '__KEENÄNNERNLINK__', '__ABSCHNITTE_NICHT_BEARBEITEN__', '__NOEDITSECTION__' ),
@@ -71,7 +71,7 @@ $magicWords = array(
        'pagename'                => array( '1', 'SIETNAAM', 'SEITENNAME', 'PAGENAME' ),
        'pagenamee'               => array( '1', 'SIETNAAME', 'SEITENNAME_URL', 'PAGENAMEE' ),
        'namespace'               => array( '1', 'NAAMRUUM', 'NAMENSRAUM', 'NAMESPACE' ),
-       'img_thumbnail'           => array( '1', 'duum', 'miniatur', 'thumbnail', 'thumb' ),
+       'img_thumbnail'           => array( '1', 'duum', 'miniatur', 'mini', 'thumbnail', 'thumb' ),
        'img_right'               => array( '1', 'rechts', 'right' ),
        'img_left'                => array( '1', 'links', 'left' ),
        'img_none'                => array( '1', 'keen', 'ohne', 'none' ),
@@ -80,7 +80,7 @@ $magicWords = array(
        'sitename'                => array( '1', 'STEEDNAAM', 'PROJEKTNAME', 'SITENAME' ),
        'ns'                      => array( '0', 'NR:', 'NS:' ),
        'localurl'                => array( '0', 'STEEDURL:', 'LOKALE_URL:', 'LOCALURL:' ),
-       'localurle'               => array( '0', 'STEEDURLE:', 'LOCALURLE:' ),
+       'localurle'               => array( '0', 'STEEDURLE:', 'LOKALE_URL_C:', 'LOCALURLE:' ),
        'grammar'                 => array( '0', 'GRAMMATIK:', 'GRAMMAR:' ),
 );
 
index 21846b9..b590943 100644 (file)
@@ -135,6 +135,7 @@ $magicWords = array(
        'pagenamee'               => array( '1', 'PAGINANAAME', 'PAGENAMEE' ),
        'namespace'               => array( '1', 'NAAMRUIMTE', 'NAMESPACE' ),
        'namespacee'              => array( '1', 'NAAMRUIMTEE', 'NAMESPACEE' ),
+       'namespacenumber'         => array( '1', 'NAAMRUIMTENUMMER', 'NAMESPACENUMBER' ),
        'talkspace'               => array( '1', 'OVERLEGRUIMTE', 'TALKSPACE' ),
        'talkspacee'              => array( '1', 'OVERLEGRUIMTEE', 'TALKSPACEE' ),
        'subjectspace'            => array( '1', 'ONDERWERPRUIMTE', 'ARTIKELRUIMTE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -223,6 +224,7 @@ $magicWords = array(
        'padleft'                 => array( '0', 'LINKSOPVULLEN', 'PADLEFT' ),
        'padright'                => array( '0', 'RECHTSOPVULLEN', 'PADRIGHT' ),
        'special'                 => array( '0', 'speciaal', 'special' ),
+       'speciale'                => array( '0', 'speciaale', 'speciale' ),
        'defaultsort'             => array( '1', 'STANDAARDSORTERING:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                => array( '0', 'BESTANDSPAD:', 'FILEPATH:' ),
        'tag'                     => array( '0', 'label', 'tag' ),
@@ -2258,6 +2260,7 @@ Controleer of u wellicht een fout hebt gemaakt bij de invoer.',
 U kunt ook kiezen voor specifieke logboeken en filteren op gebruiker (hoofdlettergevoelig) en paginanaam (hoofdlettergevoelig).',
 'logempty' => 'Er zijn geen regels in het logboek die voldoen aan deze criteria.',
 'log-title-wildcard' => "Pagina's zoeken die met deze tekens beginnen",
+'showhideselectedlogentries' => 'Geselecteerde logboekregels weergeven of verbergen',
 
 # Special:AllPages
 'allpages' => "Alle pagina's",
@@ -3183,6 +3186,7 @@ Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.',
 'spambot_username' => 'MediaWiki opschoning spam',
 'spam_reverting' => 'Bezig met terugdraaien naar de laatste versie die geen verwijzing heeft naar $1',
 'spam_blanking' => 'Alle wijzigingen met een verwijzing naar $1 worden verwijderd',
+'spam_deleting' => 'Alle versies bevatten verwijzingen naar $1. Bezig met verwijderen...',
 
 # Info page
 'pageinfo-title' => 'Informatie over "$1"',
index 38ef28f..eba4c62 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+/** Norwegian Nynorsk (‪norsk (nynorsk)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -640,7 +640,7 @@ Ho kan allereie vere sletta av andre.',
 'cannotdelete-title' => 'Kan ikkje sletta sida «$1»',
 'badtitle' => 'Feil i tittelen',
 'badtitletext' => 'Den ønskte tittelen var ulovleg, tom eller feillenkja frå ein annan wiki. Kanskje inneheld han eitt eller fleire teikn som ikkje kan brukast i sidetitlar.',
-'perfcached' => 'Det følgjande er frå mellomlageret åt tenaren og er ikkje nødvendigvis oppdatert. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
+'perfcached' => 'Dei følgjande dataa er frå mellomlageret åt tenaren og er ikkje utan vidare oppdatert. Høgst {{PLURAL:$1|eitt resultat er tilgjengeleg|$1 resultat er tilgjengelege}} i mellomlageret.',
 'perfcachedts' => 'Desse dataa er mellomlagra, og vart sist oppdaterte $1. Høgst {{PLURAL:$4|eitt resultat er tilgjengeleg|$4 resultat er tilgjengelege}} i mellomlageret.',
 'querypage-no-updates' => 'Oppdatering av denne sida er slått av, og data her vil ikkje verte fornya.',
 'wrong_wfQuery_params' => 'Feil parameter gjevne til wfQuery()<br />Funksjon: $1<br />Førespurnad: $2',
@@ -650,6 +650,7 @@ Ho kan allereie vere sletta av andre.',
 'actionthrottledtext' => 'For å hindre spamming kan du ikkje utføre denne handlinga for mange gonger på kort tid. Ver venleg og prøv igjen litt seinare.',
 'protectedpagetext' => 'Denne sida er verna for å hindre endring.',
 'viewsourcetext' => 'Du kan sjå og kopiere kjeldekoden til denne sida:',
+'viewyourtext' => "Du kan sjå og kopiera kjelda til '''endringane dine''' på sida:",
 'protectedinterface' => 'Denne sida inneheld tekst som er brukt av brukargrensesnittet for programvara, og er difor låst for å hindre hærverk.',
 'editinginterface' => "'''Åtvaring:''' Du endrar på ei side som inneheld tekst som er brukt av brukargrensesnittet for programvara. Endringar på denne sida påverkar utsjånaden til sida for dei andre brukarane. Dersom du ynskjer å setje om, ver venleg og vurder å bruke [//translatewiki.net/wiki/Main_Page?setlang=nn translatewiki.net], prosjektet for omsetjing av MediaWiki.",
 'sqlhidden' => '(SQL-førespurnaden er gøymd)',
@@ -661,6 +662,8 @@ $2',
 'ns-specialprotected' => 'Sider i {{ns:special}}-namnerommet kan ikkje endrast.',
 'titleprotected' => "Denne sidetittelen er verna mot oppretting av [[User:$1|$1]].
 Grunnen som er gjeven er: ''$2''.",
+'invalidtitle-knownnamespace' => 'Ugyldig tittel med namnerommet «$2» og teksten «$3»',
+'invalidtitle-unknownnamespace' => 'Ugyldig tittel med ukjend namneromstal $1 og teksten «$2»',
 
 # Virus scanner
 'virus-badscanner' => "Dårleg konfigurasjon: ukjend virusskanner: ''$1''",
@@ -743,6 +746,7 @@ Grunna dette vil ikkje vitjande som nyttar denne IP-adressa kunna oppretta nye k
 'emailconfirmlink' => 'Stadfest e-post-adressa di',
 'invalidemailaddress' => 'E-postadressa kan ikkje nyttast sidan formatet truleg er feil. Skriv ei fungerande adresse eller tøm feltet.',
 'cannotchangeemail' => 'Epost-adresser knytta til brukarkonti kan ikkje endrast på denne wikien.',
+'emaildisabled' => 'Denne nettstaden kan ikkje senda e-postar.',
 'accountcreated' => 'Brukarkonto oppretta',
 'accountcreatedtext' => 'Brukarkontoen til $1 er oppretta.',
 'createaccount-title' => 'Oppretting av brukarkonto på {{SITENAME}}',
@@ -904,7 +908,12 @@ eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}
 'userpage-userdoesnotexist-view' => 'Brukarkontoen «$1» er ikkje oppretta.',
 'blocked-notice-logextract' => 'Denne brukaren er for tida blokkert.
 Det siste elementet i blokkeringsloggen er oppgjeve nedanfor:',
-'clearyourcache' => "Merk: Etter lagring vil det kanskje vera naudsynt at nettlesaren slettar mellomlageret sitt for at endringane skal tre i kraft.''' '''Firefox og Safari:''' Hald ''Shift'' nede medan du trykkjer anten ''Ctrl-F5'' eller ''Ctrl-R'' (''Command-R'' på Mac). '''Konqueror:''' Trykk ''Oppdater'' eller på ''F5''. '''Opera:''' Tøm mellomlageret i ''Verktøy → Innstillingar''. '''Internet Explorer:''' Hald nede ''Ctrl'' medan du trykkjer ''Oppdater'', eler trykk ''Ctrl-F5.''",
+'clearyourcache' => "'''Merk:''' Etter lagring vil det kanskje vera naudsynt at nettlesaren slettar mellomlageret sitt for at endringane skal tre i kraft.
+* '''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.",
 'usercsspreview' => "'''Hugs at dette berre er ei førehandsvising av din eigen CSS og at han ikkje er lagra enno!'''",
@@ -953,14 +962,13 @@ Teksten må du ha skrive sjølv, eller kopiert frå ein ressurs som er kompatibe
 Teksten må du ha skrive sjølv eller ha kopiert frå ein ressurs som er kompatibel med vilkåra eller ikkje verna av opphavsrett (sjå $1 for detaljar).
 
 '''LEGG ALDRI INN MATERIALE SOM ANDRE HAR OPPHAVSRETT TIL UTAN LØYVE FRÅ DEI!'''",
-'longpageerror' => "'''Feil: Teksten du har prøvd å lagre er $1 kilobyte
-lang, altså lenger enn $2 kilobyte som er maksimum. Han kan difor ikkje lagrast.'''",
+'longpageerror' => "'''Feil: Teksten du sende inn er {{PLURAL:$1|éin kilobyte|$1 kilobyte}} stor, noko som er større enn øvstegrensa på {{PLURAL:$2|éin kilobyte|$2 kilobyte}}.''' Han kan difor ikkje lagrast.",
 'readonlywarning' => "'''ÅTVARING: Databasen er skriveverna på grunn av vedlikehald, så du kan ikkje lagre endringane dine akkurat no. Det kan vera lurt å  kopiere teksten din til ei tekstfil, så du kan lagre han her seinare.'''
 
 Systemadministratoren som låste databasen gav følgjande årsak: $1",
-'protectedpagewarning' => "'''ÅTVARING: Denne sida er verna, slik at berre administratorar kan endre ho.'''
+'protectedpagewarning' => "'''ÅTVARING: Denne sida er verna, slik at berre administratorar kan endra henne.'''
 Det siste loggelementet er oppgjeve under som referanse:",
-'semiprotectedpagewarning' => "'''Merk:''' Denne sida er verna slik at berre registrerte brukarar kan endre henne.
+'semiprotectedpagewarning' => "'''Merk:''' Denne sida er verna slik at berre registrerte brukarar kan endra henne.
 Det siste loggelementet er oppgjeve under som referanse:",
 'cascadeprotectedwarning' => "'''Åtvaring:''' Denne sida er verna så berre brukarar med administratortilgang kan endre henne. Dette er fordi ho er inkludert i {{PLURAL:$1|denne djupverna sida|desse djupverna sidene}}:",
 'titleprotectedwarning' => "'''Åtvaring: Denne sida er verna, så berre [[Special:ListGroupRights|nokre brukarar]] kan opprette henne.'''
@@ -1070,16 +1078,16 @@ Som administrator kan du sjå han. Det finst kanskje meir informasjon i [{{fullu
 'rev-deleted-no-diff' => "Du kan ikkje vise denne skilnaden fordi ein av versjonane er vorten '''sletta'''.
 Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].",
 'rev-suppressed-no-diff' => "Du kan ikkje sjå denne skilnaden av di ein av versjonane er vorten '''sletta'''.",
-'rev-deleted-unhide-diff' => "Éin av versjonane i denne skilnaden er vorten '''sletta'''.
-Det finst kanskje detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].
-Som administrator kan du framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
-'rev-suppressed-unhide-diff' => "Ei av sideversjonane i denne lista over versjonar har vorte '''skjult'''.
-Det kan vera detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} skjulingsloggen].
-Som administrator kan du framleis [$1 sjå versjonen] om du ynskjer det.",
-'rev-deleted-diff-view' => "Ei av endringane i dette oversynet er '''sletta'''.
-Som administrator kan du sjå oversynet; detaljar finn du i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
-'rev-suppressed-diff-view' => "Ei av endringane i dette oversynet er '''løynd'''.
-Som administrator kan du sjå dette oversynet; detaljar finn du i [{{fullurl:{{#Special:Log}}/suppcess|page={{FULLPAGENAMEE}}}} historikkfjerningsloggen].",
+'rev-deleted-unhide-diff' => "Ein av versjonane i denne skilnaden er vorten '''sletta'''.
+Det finst detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} sletteloggen].
+Du kan framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
+'rev-suppressed-unhide-diff' => "Ein av sideversjonane i denne lista over versjonar er vorten '''løynd'''.
+Det finst detaljar i [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} løyneloggen].
+Du kan framleis [$1 sjå skilnaden] om du ynskjer å halda fram.",
+'rev-deleted-diff-view' => "Ein av versjonane i skilnaden er vorten '''sletta'''.
+Du kan sjå skilnaden; detaljar finst i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} sletteloggen].",
+'rev-suppressed-diff-view' => "Ei av endringane i skilnaden er vorten '''løynd'''.
+Du kan sjå skilnaden; detaljar finst i [{{fullurl:{{#Special:Log}}/suppcess|page={{FULLPAGENAMEE}}}} løyneloggen].",
 'rev-delundel' => 'vis/gøym',
 'rev-showdeleted' => 'syn',
 'revisiondelete' => 'Slett/attopprett versjonar',
@@ -1265,6 +1273,7 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'qbsettings-fixedright' => 'Høgre',
 'qbsettings-floatingleft' => 'Flytande venstre',
 'qbsettings-floatingright' => 'Flytande høgre',
+'qbsettings-directionality' => 'Fast, avhengig av kva retning språket ditt vert lese',
 
 # Preferences page
 'preferences' => 'Innstillingar',
@@ -1279,6 +1288,7 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'prefs-beta' => 'Betafunksjonar',
 'prefs-datetime' => 'Dato og klokkeslett',
 'prefs-labs' => 'Testfunksjonar',
+'prefs-user-pages' => 'Brukarsider',
 'prefs-personal' => 'Brukaropplysningar',
 'prefs-rc' => 'Siste endringar',
 'prefs-watchlist' => 'Overvakingsliste',
@@ -1615,8 +1625,9 @@ For å bruke ei fil på ei side, bruk ei lenkje på eit liknande format:
 'ignorewarnings' => 'Oversjå åtvaringar',
 'minlength1' => 'Filnamn må ha minst eitt teikn.',
 'illegalfilename' => 'Filnamnet «$1» inneheld teikn som ikkje er tillatne i sidetitlar. Skift namn på fila og prøv på nytt.',
+'filename-toolong' => 'Filnamn kan ikkje vera lengre enn 240 byte.',
 'badfilename' => 'Namnet på fila har vorte endra til «$1».',
-'filetype-mime-mismatch' => 'Filendinga samsvarar ikkje med ein MIME-type.',
+'filetype-mime-mismatch' => 'Filendinga «.$1» samsvarar ikkje med MIME-typen som er funnen i fila ($2).',
 'filetype-badmime' => 'Filer av MIME-typen «$1» kan ikkje lastast opp.',
 'filetype-bad-ie-mime' => 'Kan ikkje lasta opp fila då Internet Explorer ville merka ho som "$1", ein ikkje-tillate og potensielt farleg filtype.',
 'filetype-unwanted-type' => "«'''.$1'''» er ein uynskt filtype.
@@ -1673,7 +1684,7 @@ Om du framleis ønskjer å laste opp fila, gå tilbake og last ho opp med eit an
 'uploadvirus' => 'Fila innheld virus! Detaljar: $1',
 'upload-source' => 'Kjeldefil',
 'sourcefilename' => 'Filsti:',
-'sourceurl' => 'URL til kjelda:',
+'sourceurl' => 'Kjelde-URL:',
 'destfilename' => 'Målfilnamn:',
 'upload-maxfilesize' => 'Maksimal filstorleik: $1',
 'upload-description' => 'Filskildring',
@@ -1715,7 +1726,9 @@ $1',
 'upload-http-error' => 'Ein HTTP-feil oppstod: $1',
 
 # File backend
+'backend-fail-invalidpath' => '$1 er ikkje ein gyldig lagringsstig.',
 'backend-fail-delete' => 'Kunne ikkje sletta fila «$1».',
+'backend-fail-alreadyexists' => 'Fila $1 finst frå før.',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Tilgjenge avslått',
@@ -2287,9 +2300,8 @@ Her er dei noverande innstillingane for sida '''$1''':",
 'viewdeletedpage' => 'Sjå sletta sider',
 'undeletepagetext' => '{{PLURAL:$1|Den følgjande sida er sletta, men ho|Dei følgjande $1 sidene er sletta, men dei}} finst enno i arkivet og kan attopprettast. Arkivet blir periodevis sletta.',
 'undelete-fieldset-title' => 'Attenderull endringar',
-'undeleteextrahelp' => "For å attenderulle heile sida, la alle boksane vere som dei er, og klikk '''''Rull attende'''''.
-For å berre attenderulle delar, kryss av boksane til endringane, og klikk '''''Rull attende'''''.
-Å klikke '''''Nullstill''''' vil føre til at alle tekstfelt og boksar vert blanke.",
+'undeleteextrahelp' => "For å attoppretta heile historikken til sida, lat alle boksane vera vera tomme og trykk '''''{{int:undeletebtn}}'''''.
+For å berre attopretta delar av historikken, haka av boksane til dei relevante endringane og trykk '''''{{int:undeletebtn}}'''''.",
 'undeleterevisions' => '{{PLURAL:$1|Éin versjon arkivert|$1 versjonar arkiverte}}',
 'undeletehistory' => 'Om du gjenopprettar sida vil alle endringar i historikken også bli gjenoppretta. Dersom ei ny side med same namn er oppretta etter slettinga, vil dei gjenoppretta endringane dukke opp før denne i endringshistorikken.',
 'undeleterevdel' => 'Gjenoppretting kan ikkje utførast om det resulterer i at den øvste endringa delvis vert sletta. I slike tilfelle må du fjerne merkinga av den siste sletta endringa.',
@@ -2322,6 +2334,7 @@ Sjå [[Special:Log/delete|sletteloggen]] for eit oversyn over sider som nyleg er
 'undelete-bad-store-key' => 'Kan ikkje gjenopprette filutgåva med tidstrykk $1: fil mangla før sletting',
 'undelete-cleanup-error' => 'Feil ved sletting av den ubrukte arkivfila «$1».',
 'undelete-missing-filearchive' => 'Kunne ikkje attopprette filarkivet med nummer $1 fordi det ikkje ligg i databasen. Det kan allereie ver attoppretta.',
+'undelete-error' => 'Feil under attoppretting av sida.',
 'undelete-error-short' => 'Veil ved sletting av fila: $1',
 'undelete-error-long' => 'Feil ved attoppretting av fila:
 
index c15c795..ca3f1b8 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+/** Norwegian (bokmål)‬ (‪norsk (bokmål)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Jeblad
  */
 
 $fallback = 'nb';
@@ -2007,7 +2008,7 @@ Dette er de nåværende innstillingene for siden '''$1''':",
 Du kan endre sidens beskyttelsesnivå, men det vil ikke påvirke dypbeskyttelsen.',
 'protect-default' => 'Tillat alle brukere',
 'protect-fallback' => 'Må ha «$1»-tillatelse',
-'protect-level-autoconfirmed' => 'Blokker nye og uregistrerte brukere',
+'protect-level-autoconfirmed' => 'Eastte anonyma ja ođđa geavaheddjiid',
 'protect-level-sysop' => 'Kun administratorer',
 'protect-summary-cascade' => 'dypbeskyttelse',
 'protect-expiring' => 'utløper $1 (UTC)',
index 0d90735..ef68575 100644 (file)
@@ -2117,6 +2117,9 @@ A page is treated as disambiguation page if it uses a template which is linked f
 ଏଥିରେ ଥିବା ଗୋଟିଏ ବା ଦୁଇଟି ଅକ୍ଷର ଶିରୋନାମା ଭାବରେ ବ୍ୟବହାର କରାଯାଇ ପାରିବ ନାହିଁ ।',
 'allpages-bad-ns' => '{{SITENAME}}ରେ "$1" ନେମସ୍ପେସଟିଏ ନାହିଁ ।',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'ନୂତନତମ ଦେଖନ୍ତୁ ।',
+
 # Special:Categories
 'categories' => 'ଶ୍ରେଣୀସମୂହ',
 'categoriespagetext' => 'ତଳଲିଖିତ {{PLURAL:$1|ଶ୍ରେଣୀ|ଶ୍ରେଣୀସମୂହ}}ରେ ପୃଷ୍ଠା ବା ମେଡ଼ିଆ ରହିଅଛି ।
@@ -2879,6 +2882,9 @@ MediaWiki ବ୍ୟବହାର କରି [[Special:Import|ପୃଷ୍ଠା 
 'import-logentry-interwiki' => '$1 କୁ ଟ୍ରାନ୍ସଉଇକି କରାଗଲା',
 'import-logentry-interwiki-detail' => '$2 ଭିତରୁ $1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}',
 
+# JavaScriptTest
+'javascripttest-disabled' => 'ଏହି ଉଇକିରେ ଏହି ବ୍ୟବସ୍ଥାଟିକୁ ସଚଳ କରାଯାଇନାହି ।',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'ଆପଣଙ୍କ ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠା',
 'tooltip-pt-anonuserpage' => 'ଆପଣ ଯେଉଁ IP ଠିକଣାର ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠାଟି ବଦଳାଇବା ପାଇଁ ଚେଷ୍ଟା କରୁଛନ୍ତି',
@@ -3670,6 +3676,7 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'version-software' => 'ଇନଷ୍ଟଲ ହୋଇଥିବା ସଫ୍ଟୱାର',
 'version-software-product' => 'ଉତ୍ପାଦ',
 'version-software-version' => 'ସଂସ୍କରଣ',
+'version-entrypoints-header-url' => 'ଇଉଆରଏଲ',
 
 # Special:FilePath
 'filepath' => 'ଫାଇଲ ପଥ',
@@ -3829,6 +3836,7 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'api-error-duplicate-archive-popup-title' => 'ଆଗରୁ ଲିଭାଯାଇଥିବା ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}',
 'api-error-duplicate-popup-title' => 'ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}',
 'api-error-empty-file' => 'ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ଖାଲି ଅଟେ ।',
+'api-error-emptypage' => 'ନୂଆ, ଖାଲି ପୃଷ୍ଠ ତିଆରି କରିବାର ଅନୁମତି ନାହି ।',
 'api-error-fetchfileerror' => 'ଭିତର ଅସୁବିଧା: ଏହି ଫାଇଲଟି ପାଖରେ ପହଞ୍ଚିବା ବେଳେ କିଛି ଅସୁବିଧା ହେଲା ।',
 'api-error-file-too-large' => 'ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ବିରାଟ ଅଟେ ।',
 'api-error-filename-tooshort' => 'ଫାଇଲ ନାମଟି ଖୁବ ଛୋଟ ।',
index 34e64e0..1105add 100644 (file)
@@ -49,6 +49,11 @@ $namespaceAliases = array(
        'Категорийы_тыххæй_дискусси'  => NS_CATEGORY_TALK,
 );
 
+$specialPageAliases = array(
+       'Recentchanges'             => array( 'Фæстаг_ивдтытæ' ),
+);
+
+
 $magicWords = array(
        'redirect'                => array( '0', '#РАРВЫСТ', '#перенаправление', '#перенапр', '#REDIRECT' ),
        'img_right'               => array( '1', 'рахиз', 'справа', 'right' ),
@@ -1404,6 +1409,9 @@ $3',
 'watchlisttools-edit' => 'Бакæсын æмæ ивын цæстдард рæгъ',
 'watchlisttools-raw' => 'Ивын цæстдард рæгъы бындуртекст',
 
+# Signatures
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ныхас]])',
+
 # Core parser functions
 'duplicate-defaultsort' => '\'\'\'Сындæг:\'\'\' Разæвæрд сортгæнæн амонæн "$2" раздæры разæвæрд амонæн "$1"-ы бæсты лæууы.',
 
index 1ae3aaa..f29fb29 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author AS Alam
  * @author Aalam
+ * @author Amire80
  * @author Anjalikaushal
  * @author Gman124
  * @author Guglani
@@ -983,7 +984,7 @@ to upload files.',
 
 # Contributions
 'contributions' => 'ਯੂਜ਼ਰ ਯੋਗਦਾਨ',
-'contributions-title' => '$ ਦੀ ਰਚਨਾ',
+'contributions-title' => '$1 ਦੀ ਰਚਨਾ',
 'mycontris' => 'ਮੇਰਾ ਯੋਗਦਾਨ',
 'contribsub2' => '$1 ($2) ਲਈ',
 'uctop' => '(ਉੱਤੇ)',
index e8a3fb1..a0cd772 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Polish (Polski)
+/** Polish (polski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1572,7 +1572,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 # User rights log
 'rightslog' => 'Uprawnienia',
 'rightslogtext' => 'Rejestr zmian uprawnień użytkowników.',
-'rightslogentry' => 'zmienia przynależność $1 do grup ($2 → $3)',
+'rightslogentry' => 'zmienił przynależność $1 do grup ($2 → $3)',
 'rightslogentry-autopromote' => 'automatycznie zmienia przynależność ($2 → $3)',
 'rightsnone' => 'brak',
 
@@ -2157,6 +2157,7 @@ Inne witryny mogą odwoływać się do tych plików, używając bezpośrednich a
 Możesz zawęzić liczbę wyników poprzez wybranie typu rejestru, nazwy użytkownika albo tytułu strony.',
 'logempty' => 'W rejestrze nie znaleziono pozycji odpowiadających zapytaniu.',
 'log-title-wildcard' => 'Szukaj tytułów zaczynających się od tego tekstu',
+'showhideselectedlogentries' => 'Pokaż/ukryj zaznaczone wpisy rejestru',
 
 # Special:AllPages
 'allpages' => 'Wszystkie strony',
@@ -3955,7 +3956,7 @@ Grafiki są pokazywane w pełnej rozdzielczości. Inne typy plików są otwieran
 'revdelete-uname-unhid' => 'wycofano ukrycie nazwy użytkownika',
 'revdelete-restricted' => 'ograniczono widoczność dla administratorów',
 'revdelete-unrestricted' => 'wycofano ograniczenie widoczności dla administratorów',
-'logentry-move-move' => '$1 przenosi stronę $3 na $4',
+'logentry-move-move' => '$1 przenosi stronę $3 do $4',
 'logentry-move-move-noredirect' => '$1 przenosi stronę $3 na $4, bez pozostawienia przekierowania pod starym tytułem',
 'logentry-move-move_redir' => '$1 przenosi stronę $3 na $4 w miejsce przekierowania',
 'logentry-move-move_redir-noredirect' => '$1 przenosi stronę $3 na $4 w miejsce przekierowania i bez pozostawienia przekierowania pod starym tytułem',
index e0e784e..7ef1686 100644 (file)
@@ -520,7 +520,7 @@ Da qualsëssìa ëd coste funsion a sarà mandà gnun messagi fin che chiel (chi
 'invalidemailaddress' => "Costa adrëssa ëd pòsta eletrònica-sì as peul nen pijesse përchè a l'ha na forma nen bon-a.
 Për piasì che a buta n'adrëssa scrita giusta ò che a lassa ël camp veujd.",
 'cannotchangeemail' => "J'adrësse ëd pòsta eletrònica dij cont a peulo pa esse modificà ansima a costa wiki.",
-'emaildisabled' => 'Ës sit a peul pa mandé ëd mëssagi ëd pòsta eletrònica.',
+'emaildisabled' => 'Ës sit a peul pa mandé dij mëssagi ëd pòsta eletrònica.',
 'accountcreated' => 'Cont creà',
 'accountcreatedtext' => "Ël cont Utent për $1 a l'é stàit creà.",
 'createaccount-title' => 'Creassion ëd cont për {{SITENAME}}',
@@ -1889,6 +1889,7 @@ Për piasì, ch'a nòta che d'àutri sit an sl'aragnà a peulo coleghesse a n'ar
 A peul arstrenze la visualisassion an selessionand la sòrt ëd registr, lë stranòm utent (sensìbil a majùscol/minùscol), e la pàgina anteressà (sensìbil a majùscol/minùscol).',
 'logempty' => 'Pa gnun element parèj che a sia trovasse ant ij registr.',
 'log-title-wildcard' => "Sërché ant ij tìtoj ch'as anandio për",
+'showhideselectedlogentries' => 'Smon-e/stërmé le vos ëd registr selessionà',
 
 # Special:AllPages
 'allpages' => 'Tute le pàgine',
@@ -2546,59 +2547,59 @@ L'artìcol ëd destinassion «[[:$1]]» a-i é già. Veul-lo scancelelo për av
 'imageinvalidfilename' => "Ël nòm ëd l'archivi bërsaj a l'é nen bon",
 'fix-double-redirects' => 'Agiorné tute le ridiression che a ponto vers ël tìtol original',
 'move-leave-redirect' => 'Lassé na ridiression',
-'protectedpagemovewarning' => "'''Avis:''' Sta pàgina-sì a l'é stàita blocà parèj che mach utent con drit d'aministrator a peulo tramudela.
+'protectedpagemovewarning' => "'''Avis:''' Sta pàgina-sì a l'é stàita blocà parèj che mach j'utent con ij drit d'aministrator a peulo tramudela.
 L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
 'semiprotectedpagemovewarning' => "'''Nòta:''' Sta pàgina-sì a l'é stàita blocà parèj che mach j'utent argistrà a peulo tramudela.
 L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
 'move-over-sharedrepo' => "== L'archivi a esist ==
 [[:$1]] a esist già dzora a un depòsit partagià. Tramudé n'archivi a cost tìtol-sì a coaterà l'archivi partagià.",
-'file-exists-sharedrepo' => "Ël nòm dël file sërnù a l'é già dovrà ant ël depòsit condivis.
-Për piasì sern n'àutr nòm.",
+'file-exists-sharedrepo' => "Ël nòm d'archivi sërnù a l'é già dovrà ant ël depòsit condivis.
+Për piasì ch'a serna n'àutr nòm.",
 
 # Export
 'export' => 'Esporté dle pàgine',
 'exporttext' => "A peul esporté ël test e modifiché la stòria ëd na pàgina ò pura
-ëd n'ansema ëd pàgine gropa ant n'archivi XML. Sòn a peul peuj amportesse
-ant n'àutra wiki ën dovrand la funsion Special:Ampòrta pàgina.
+ëd n'ansema ëd pàgine gropà ant n'archivi XML. Sòn a peul peuj amportesse
+ant n'àutra wiki ën dovrand MediaWiki con la [[Special:Import|pàgina d'amportassion]].
 
-Për esporté le pàgine, che a së scriva ij tìtoj ant ël quàder ambelessì sota, butand-ji un tìtol për riga,
-e che as serna se a veul la version corenta ansema a cole veje, con le righe che conto la stòria dla pàgina,
-ò pura mach l'anformassion ant sël quand che a sia staje l'ùltima modìfica.
+Për esporté le pàgine, che a së scriva ij tìtoj ant ël quàder ambelessì-sota, butandje un tìtol për riga,
+e che as serna se a veul la version corenta ansema a cole veje, con le righe che conto la stòria dla pàgina,
+ò pura mach l'anformassion an  sl'ùltima modìfica.
 
 Se costa ùltima possibilità a fussa lòn che a-j serv, a podrìa ëdcò dovré n'anliura, pr'esempi [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] për la pàgina \"[[{{MediaWiki:Mainpage}}]]\".",
 'exportall' => 'Esporté tute le pàgine',
-'exportcuronly' => 'Ciapa sù mach la version corenta, pa tuta la stòria',
+'exportcuronly' => 'Ciapé sù mach la version corenta, pa tuta la stòria',
 'exportnohistory' => "----
 '''Nòta:''' la possibilità d'esporté la stòria completa dle pàgine a l'é staita gavà për dle question corelà a le prestassion dël sistema.",
 'exportlistauthors' => 'Anclude na lista completa dij contributor për minca pàgina',
 'export-submit' => 'Esporté',
-'export-addcattext' => "Gionta pàgine da 'nt la categorìa:",
-'export-addcat' => 'Gionta',
-'export-addnstext' => 'Gionta pàgine dal namespace',
-'export-addns' => 'Gionta',
+'export-addcattext' => "Gionté le pàgine da 'nt la categorìa:",
+'export-addcat' => 'Gionté',
+'export-addnstext' => 'Gionté dle pàgine da lë spassi nominal:',
+'export-addns' => 'Gionté',
 'export-download' => 'Ciamé dë salvelo coma archivi',
 'export-templates' => 'Ciapa andrinta jë stamp',
-'export-pagelinks' => 'Anseriss pàgine colegà a na përfondità ëd:',
+'export-pagelinks' => 'Anclude le pàgine colegà a na përfondità ëd:',
 
 # Namespace 8 related
-'allmessages' => 'Messagi ëd sistema',
+'allmessages' => 'Mëssagi ëd sistema',
 'allmessagesname' => 'Nòm',
 'allmessagesdefault' => "Test che a-i sarìa se a-i fusso pa 'd modìfiche",
 'allmessagescurrent' => 'Test corent',
-'allmessagestext' => "Costa-sì a l'é na lista ëd messagi disponìbij ëd sistema ant lë spassi nominal MediaWiki.
-Për piasì vìsita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisassion] e [//translatewiki.net translatewiki.net] se it veule contribuì a la localisassion general ëd MediaWiki.",
+'allmessagestext' => "Costa-sì a l'é na lista dij mëssagi ëd sistema disponìbij ant lë spassi nominal MediaWiki.
+Për piasì, ch'a vìsita la [//www.mediawiki.org/wiki/Localisation Localisassion ëd MediaWiki] e [//translatewiki.net translatewiki.net] se a veul contribuì a la localisassion general ëd MediaWiki.",
 'allmessagesnotsupportedDB' => "Sta pàgina-sì a peul pa esse dovrà përchè '''\$wgUseDatabaseMessages''' a l'é stàit disabilità.",
 'allmessages-filter-legend' => 'Filtr',
-'allmessages-filter' => 'Filtra për stat ëd përsonalisassion:',
+'allmessages-filter' => 'Filtré për stat ëd përsonalisassion:',
 'allmessages-filter-unmodified' => 'Pa modificà',
 'allmessages-filter-all' => 'Tùit',
 'allmessages-filter-modified' => 'Modificà',
-'allmessages-prefix' => 'Filtra për prefiss:',
+'allmessages-prefix' => 'Filtré për prefiss:',
 'allmessages-language' => 'Lenga:',
-'allmessages-filter-submit' => '',
+'allmessages-filter-submit' => 'Apliché',
 
 # Thumbnails
-'thumbnail-more' => 'Slarga',
+'thumbnail-more' => 'Slarg',
 'filemissing' => 'Archivi che a manca',
 'thumbnail_error' => 'Eror antramentr che as fasìa la figurin-a: $1',
 'djvu_page_error' => 'Pàgina DjVu fòra dij lìmit',
@@ -2608,15 +2609,15 @@ Për piasì vìsita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisassi
 'thumbnail_invalid_params' => 'Paràmetro dla figurin-a pa giust',
 'thumbnail_dest_directory' => 'As peul pa fesse ël dossié ëd destinassion',
 'thumbnail_image-type' => 'Sòrt ëd figura nen gestì',
-'thumbnail_gd-library' => 'Configurassion pa finìa dla librerìa GD: Fonsion $1 mancanta',
-'thumbnail_image-missing' => 'Ël file a smija esse mancant: $1',
+'thumbnail_gd-library' => 'Configurassion incompleta dla biblioteca GD: Fonsion $1 mancanta',
+'thumbnail_image-missing' => "L'archivi a smija ch'a manca: $1",
 
 # Special:Import
 'import' => 'Amportassion ëd pàgine',
 'importinterwiki' => 'Amportassion da wiki diferente',
 'import-interwiki-text' => "Che a selession-a na wiki e ël tìtol dla pàgina da amporté.
-Date dle revision e stranòm dj'editor a resteran piajit sù 'cò lor.
-Tute le amportassion antra wiki diferente a resto marcà ant ël [[Special:Log/import|Registr dj'amportassion]].",
+Date dle revision e stranòm dj'editor a resteran piàjit sù 'cò lor.
+Tute j'amportassion antra wiki diferente a resto marcà ant ël [[Special:Log/import|Registr dj'amportassion]].",
 'import-interwiki-source' => 'Sorziss wiki/pàgina:',
 'import-interwiki-history' => 'Còpia tute le version stòriche dë sta pàgina-sì',
 'import-interwiki-templates' => 'Ansëriss tùit jë stamp',
index f170f09..8cfc8b6 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Portuguese (Português)
+/** Portuguese (português)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 57c0de9..3236db2 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Brazilian Portuguese (Português do Brasil)
+/** Brazilian Portuguese (português do Brasil)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -21,6 +21,7 @@
  * @author Danielsouzat
  * @author Diego Queiroz
  * @author Eduardo.mps
+ * @author Emufarmers
  * @author Everton137
  * @author Francisco Leandro
  * @author GKnedo
@@ -795,7 +796,7 @@ Como resultado, visitantes que usam este endereço IP não podem criar mais nenh
 'accountcreated' => 'Conta criada',
 'accountcreatedtext' => 'A conta de usuário para $1 foi criada.',
 'createaccount-title' => 'Criação de conta em {{SITENAME}}',
-'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha #$3". Você deve se autenticar e alterar sua senha.
+'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha "$3". Você deve se autenticar e alterar sua senha.
 
 Você pode ignorar esta mensagem caso a conta tenha sido criada por engano.',
 'usernamehasherror' => 'Nome de usuário não pode conter o símbolo de cardinal (#).',
@@ -1358,6 +1359,7 @@ Note que os índices do sistema de busca externo poderão conter referências de
 'prefs-beta' => 'Características beta',
 'prefs-datetime' => 'Data e hora',
 'prefs-labs' => 'Características de laboratório',
+'prefs-user-pages' => 'Páginas de usuário',
 'prefs-personal' => 'Perfil de usuário',
 'prefs-rc' => 'Mudanças recentes',
 'prefs-watchlist' => 'Lista de páginas vigiadas',
@@ -2162,6 +2164,7 @@ Por favor note que outros websites podem apontar para um arquivo através de um
 Você pode diminuir a lista escolhendo um tipo de registro, um nome de usuário (sensível a maiúsculas e minúsculas), ou uma página afetada (também sensível a maiúsculas e minúsculas).',
 'logempty' => 'Nenhum item idêntico no registro.',
 'log-title-wildcard' => 'Procurar por títulos que sejam iniciados com o seguinte texto',
+'showhideselectedlogentries' => 'Exibir/ocultar os itens de registros selecionados',
 
 # Special:AllPages
 'allpages' => 'Todas as páginas',
index 0e9c872..a742f3d 100644 (file)
@@ -322,7 +322,7 @@ See http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for
 Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
 
 {{Identical|Content page}}",
-'newwindow' => 'Below the edit form, next to "[[MediaWiki:Edithelp/{{SUBPAGENAME}}|Editing help]]".',
+'newwindow' => 'Below the edit form, next to "{{msg-mw|Edithelp}}".',
 'cancel' => 'Message shown below the edit form, and if you click on it, you stop with editing the page and go back to the normal page view.
 
 {{Identical|Cancel}}',
@@ -414,7 +414,7 @@ Also used as title of [[Special:Search]] page in [[Special:SpecialPages]].
 'edit' => 'The text of the tab going to the edit form. When the page is protected, you will see "[[MediaWiki:Viewsource/{{SUBPAGENAME}}|{{int:viewsource}}]]". Should be in the infinitive mood.
 
 {{Identical|Edit}}',
-'create' => 'The text on the tab for to the edit form on unexisting pages.
+'create' => 'The text on the tab of the edit form on unexisting pages starts editing them.
 
 {{Identical|Create}}',
 'editthispage' => 'This is the "edit" link as used in the skins Classic/Standard, Cologne Blue and Nostalgia. See {{msg|create-this-page}} for when the page does not exist.',
@@ -732,7 +732,9 @@ $1 is a filename, I think.',
 'nologin' => 'A message shown in the log in form. $1 is a link to the account creation form, and the text of it is "[[MediaWiki:Nologinlink/{{SUBPAGENAME}}|{{int:nologinlink}}]]".',
 'nologinlink' => 'Text of the link to the account creation form. Before that link, the message [[MediaWiki:Nologin/{{SUBPAGENAME}}]] appears.
 {{Identical|Create an account}}',
-'createaccount' => 'The title of Special:CreateAccount, where users can register a new account. Used on Special:SpecialPages, and also on the submit button in the form where you register a new account.
+'createaccount' => 'The title of Special:CreateAccount, where users can register a new account. Used on Special:SpecialPages and on the submit button in the form where you register a new account.
+
+It is also used on the top of the page for logged out users, where it appears next to {{msg-mw|login}}, so consider making them similar.
 {{Identical|Create account}}',
 'gotaccount' => 'A message shown in the account creation form. $1 is a link to the log in form, and the text of it is "[[MediaWiki:Gotaccountlink/{{SUBPAGENAME}}|{{int:gotaccountlink}}]]".',
 'gotaccountlink' => 'Text of the link to the log in form. Before that link, the message [[MediaWiki:Gotaccount/{{SUBPAGENAME}}]] appears.
@@ -798,7 +800,7 @@ Parameters:
 *Parameter $4 is a URL to the wiki',
 'login-throttled' => 'Error message shown at [[Special:UserLogin]] after 5 wrong passwords. The hardcoded waiting time is 300 seconds.',
 'login-abort-generic' => 'The generic unsuccessful login message is used unless otherwise specified by hook writers',
-'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true.
+'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true. $1 is a pipe-separated list built from the names that appear in the message {{msg-mw|Loginlanguagelinks}}.
 {{Identical|Language}}',
 
 # E-mail sending
@@ -1273,7 +1275,7 @@ Please note that the parameters in a log entry will appear in the log only in th
 See also {{msg-mw|difference}}.',
 'lineno' => 'Message used when comparing different versions of a page (diff). $1 is a line number.',
 'compareselectedversions' => 'Used as button in history pages.',
-'showhideselectedversions' => 'Text of the button which brings up the [[mw:RevisionDelete|RevisionDelete]] menu.',
+'showhideselectedversions' => 'Text of the button which brings up the [[mw:RevisionDelete|RevisionDelete]] menu on history pages.',
 'editundo' => 'Undo link when viewing diffs
 {{Identical|Undo}}
 
@@ -1978,7 +1980,9 @@ Extensions making use of it:
 'backend-fail-batchsize' => 'Error message when the limit of operations to be done at once in the file backend was reached.
 Parameters:
 * $1 is the number of operations attempted at once in this case.
-* $2 is the maximum number of operations that can be attempted at once.',
+* $2 is the maximum number of operations that can be attempted at once.
+
+A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
 'backend-fail-usable' => 'Parameters:
 * $1 is the file name, including the path, formatted for the storage backend used',
 
@@ -2382,6 +2386,7 @@ The title is {{msg-mw|nopagetitle}}.',
 'alllogstext' => 'Header of [[Special:Log]]',
 'log-title-wildcard' => '* Appears in: [[Special:Log]]
 * Description: A check box to enable prefix search option',
+'showhideselectedlogentries' => 'Text of the button which brings up the [[mw:RevisionDelete|RevisionDelete]] menu on [[Special:Log]].',
 
 # Special:AllPages
 'allpages' => 'First part of the navigation bar for the special page [[Special:AllPages]] and [[Special:PrefixIndex]]. The other parts are {{msg-mw|Prevpage}} and {{msg-mw|Nextpage}}.
@@ -2479,7 +2484,7 @@ You can apparently use 'URL' instead of 'hostname'.",
 'activeusers-noresult' => 'identical with {{msg-mw|listusers-noresult}}',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in the recent changes.',
+'newuserlogpage' => 'Part of the "Newuserlog" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in [[Special:RecentChanges]].',
 'newuserlogpagetext' => 'Part of the "Newuserlog" extension. It is the description you can see on [[Special:Log/newusers]].',
 
 # Special:ListGroupRights
@@ -2591,7 +2596,7 @@ This is a button text used in [[Special:Emailuser]] when called without a (valid
 Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
 
 {{Identical|Content page}}",
-'watchlist-details' => 'Message on Special page: My watchlist. This is paired with the message [[Mediawiki:Nowatchlist]] which appears instead of Watchlist-details when $1 is 0.',
+'watchlist-details' => 'Message on [[Special:Watchlist]]. This is paired with the message {{msg-mw|Nowatchlist}} which appears instead of Watchlist-details when $1 is 0.',
 'wlheader-showupdated' => 'This message shows up near top of users watchlist page.',
 'wlnote' => 'Used on [[Special:Watchlist]] when the maximum number of days is specified.
 Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
@@ -2607,6 +2612,7 @@ Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
 'unwatching' => 'Text displayed when clicked on the unwatch tab: [[MediaWiki:Unwatch/{{SUBPAGENAME}}|{{int:unwatch}}]]. It means the wiki is removing that page from your watchlist.',
 'watcherrortext' => 'When a user clicked the watch/unwatch tab and the action did not succeed, this message is displayed. See also {{msg|addedwatchtext}}. and {{msg|addedwatchtext}}. This message is used raw and should not contain wikitext.',
 
+'enotif_reset' => "This should be translated as \"Mark all pages '''as''' visited\".",
 'enotif_newpagetext' => 'Part of text of a notification e-mail sent when a watched page has been created. See [[File:Screenshot_MediaWiki_e-mail_notifier.PNG|150px|right]]',
 'changed' => 'Possible value for $CHANGEDORCREATED in {{msg|enotif_subject}} and {{msg|enotif_body}}.',
 'created' => 'Possible value for $CHANGEDORCREATED in {{msg|enotif_subject}} and {{msg|enotif_body}}.',
@@ -2740,8 +2746,8 @@ This message was something like "unlock move protection" in the past.',
 {{Identical|Infinite}}",
 'restriction-type' => 'Used on [[Special:ProtectedPages]]. The text next to a drop-down box. See [[mw:Manual:Administrators|MediaWiki Manual]] for more information on protection.',
 'restriction-level' => 'Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. The text next to a drop-down box. See the [//www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.',
-'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Maximum-size]]. There is an input box to specify the minimum bites of the projected pages listed.',
-'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Minimum-size]]. There is an input box to specify the maximum bites of the projected pages listed.',
+'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with {{msg-mw|Maximum-size}}. There is an input box to specify the minimum bites of the projected pages listed.',
+'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with {{msg-mw|Minimum-size}}. There is an input box to specify the maximum bites of the projected pages listed.',
 'pagesize' => 'Used on [[Special:ProtectedPages]]. See the help page on [http://meta.wikimedia.org/wiki/Protect Meta] for more information on protection.',
 
 # Restrictions (nouns)
@@ -2799,6 +2805,14 @@ This message was something like "unlock move protection" in the past.',
 
 {{identical|Are you sure you want to view the deleted revision of the file...}}',
 'undelete-show-file-submit' => '{{Identical|Yes}}',
+'undelete-revisionrow' => "A revision row in the undelete page. Parameters:
+* $1 is a checkBox to indicate whether to restore this specific revision
+* $2 is a link to the revision
+* $3 is a link to the last revision of a page ({{msg-mw|last}})
+* $4 is a link to the page
+* $5 is a link to the revision's user
+* $6 is the revision size
+* $7 is the revision comment",
 
 # Namespace form on various pages
 'namespace' => 'This message is located at [[Special:Contributions]].',
@@ -3183,7 +3197,7 @@ See also:
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Tooltip shown when hovering the mouse over the link to your own User page in the upper-side personal toolbox.',
 'tooltip-pt-mytalk' => 'Tooltip shown when hovering over the "my talk" link in your personal toolbox (upper right side).',
-'tooltip-pt-preferences' => 'Tooltip shown when hovering over the "my preferences" ([[MediaWiki:Mypreferences]]) link in your personal toolbox (upper right side).
+'tooltip-pt-preferences' => 'Tooltip shown when hovering over the {{msg-mw|Mypreferences}} link in your personal toolbox (upper right side).
 
 {{Identical|My preferences}}',
 'tooltip-pt-watchlist' => 'Tooltip shown when hovering over the "my watchlist" link in your personal toolbox (upper right side).',
@@ -3211,8 +3225,8 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
 'tooltip-ca-watch' => '{{Identical|Add this page to your watchlist}}',
 'tooltip-ca-unwatch' => 'Tooltip shown when hovering over the {{msg|unwatch}} tab.',
 'tooltip-search' => 'The tooltip when hovering over the search menu.',
-'tooltip-search-go' => 'This is the text of the tooltip displayed when hovering the mouse over the “[[MediaWiki:Go|Go]]” button next to the search box.',
-'tooltip-search-fulltext' => 'This is the text of the tooltip displayed when hovering the mouse over the “[[MediaWiki:Search|Search]]” button under the search box.',
+'tooltip-search-go' => 'This is the text of the tooltip displayed when hovering the mouse over the “{{msg-mw|Go}}” button next to the search box.',
+'tooltip-search-fulltext' => 'This is the text of the tooltip displayed when hovering the mouse over the “{{msg-mw|Search}}” button under the search box.',
 'tooltip-p-logo' => 'Tool tip shown when hovering the mouse over the logo that links to [[Main Page]].
 {{Identical|Visit the main page}}',
 'tooltip-n-mainpage' => 'Tool tip shown when hovering the mouse over the link to [[{{MediaWiki:Mainpage}}]].
@@ -3240,7 +3254,7 @@ No GENDER-Support for performance reason.',
 'tooltip-ca-nstab-template' => 'Tooltip shown when hovering over the {{msg|nstab-template}} tab.',
 'tooltip-ca-nstab-help' => 'Tootip shown when hovering over the {{msg|nstab-help}} tab in the Help namespace.',
 'tooltip-ca-nstab-category' => 'Tooltip shown when hovering over the {{msg|nstab-category}} tab.',
-'tooltip-minoredit' => 'Tooltip shown when hovering over the "[[MediaWiki:Minoredit/{{SUBPAGENAME}}|{{int:minoredit}}]]" link below the edit form.',
+'tooltip-minoredit' => 'Tooltip shown when hovering over the "{{msg-mw|Minoredit}}" link below the edit form.',
 'tooltip-save' => "This is the text that appears when you hover the mouse over the 'Save page' button on the edit page",
 'tooltip-preview' => 'Tooltip shown when hovering over the "Show preview" button.
 
@@ -4278,14 +4292,14 @@ Bitrate (of a file, typically) in yottabits (1 yottabits = 1000×1000×1000×100
 'livepreview-loading' => '{{Identical|Loading}}',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Message on Special page: Edit watchlist. This is paired with the message [[Mediawiki:Watchlistedit-noitems]] which appears instead of Watchlistedit-numitems when $1 is 0.',
-'watchlistedit-noitems' => "Message on [[Special:Watchlist/edit]], which only appears when a user's watchlist is empty.",
+'watchlistedit-numitems' => 'Message on [[Special:EditWatchlist]]. This is paired with the message {{Msg-mw|Watchlistedit-noitems}} which appears instead of Watchlistedit-numitems when $1 is 0.',
+'watchlistedit-noitems' => "Message on [[Special:EditWatchlist]], which only appears when a user's watchlist is empty.",
 'watchlistedit-normal-title' => 'Title of [[Special:Watchlist/edit|special page]].',
 'watchlistedit-normal-legend' => 'Heading of dialogue box on [[Special:Watchlist/edit]]',
 'watchlistedit-normal-explain' => 'An introduction/explanation about the [[Special:Watchlist/edit|normal edit watchlist function]].
 Hint: the text "Remove Titles" is in {{msg-mw|watchlistedit-normal-submit}}',
 'watchlistedit-normal-submit' => 'Text of submit button on [[Special:Watchlist/edit]].',
-'watchlistedit-normal-done' => 'Message on Special page: Edit watchlist after pages are removed from the watchlist.',
+'watchlistedit-normal-done' => 'Message on [[Special:EditWatchlist]] after pages are removed from the watchlist.',
 'watchlistedit-raw-title' => 'Title of [[Special:Watchlist/raw|Special page]].
 
 {{Identical|Edit raw watchlist}}',
@@ -4296,8 +4310,8 @@ Hint: the text "Remove Titles" is in {{msg-mw|watchlistedit-normal-submit}}',
 'watchlistedit-raw-titles' => 'Text above edit box containing items being watched on [[Special:Watchlist/raw]].',
 'watchlistedit-raw-submit' => 'Text of submit button on [[Special:Watchlist/raw]].',
 'watchlistedit-raw-done' => 'A message which appears after the raw watchlist has been updated using [[Special:Watchlist/raw]].',
-'watchlistedit-raw-added' => 'Message on special page: Edit raw watchlist. The message appears after at least 1 message is added to the raw watchlist.',
-'watchlistedit-raw-removed' => 'Message on special page: Edit raw watchlist. The message appears after at least 1 message is deleted from the raw watchlist.',
+'watchlistedit-raw-added' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is added to the raw watchlist.',
+'watchlistedit-raw-removed' => 'Message on [[Special:EditWatchlist/raw]]. The message appears after at least 1 message is deleted from the raw watchlist.',
 
 # Watchlist editing tools
 'watchlisttools-view' => '[[Special:Watchlist]]: Navigation link under the title. See also {{msg|watchlisttools-edit}} and {{msg|watchlisttools-raw}}.',
@@ -4542,7 +4556,7 @@ It appears that the word 'valid' describes 'tags', not 'change'. It also appears
 'tags-hitcount-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
 'tags-edit' => '{{Identical|Edit}}
 Used on [[Special:Tags]]. Verb. Used as display text on a link to create/edit a description.',
-'tags-hitcount' => 'Shown in the “Tagged changes” column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
+'tags-hitcount' => 'Shown in the "{{msg-mw|Tags-hitcount-header}}" column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
 
 * <code>$1</code> is the number of changes marked with the tag',
 
index f69170c..4fef2a4 100644 (file)
@@ -37,6 +37,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Katiguriya_rimanakuy',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Allmessages'               => array( 'TukuyWillaykuna' ),
        'Allpages'                  => array( 'TukuyPanqakuna' ),
@@ -126,9 +129,6 @@ $specialPageAliases = array(
        'Withoutinterwiki'          => array( 'Interwikinnaq', 'Wikipurannaq' ),
 );
 
-#!!# Translation <b>HORA_ACTUAL</b> is used more than once for <a href="#mw-sp-magic-currenttime">currenttime</a> and <a href="#mw-sp-magic-currenthour">currenthour</a>.
-#!!# Translation <b>HORAACTUAL</b> is used more than once for <a href="#mw-sp-magic-currenttime">currenttime</a> and <a href="#mw-sp-magic-currenthour">currenthour</a>.
-#!!# Translation <b>HORALOCAL</b> is used more than once for <a href="#mw-sp-magic-localtime">localtime</a> and <a href="#mw-sp-magic-localhour">localhour</a>.
 $magicWords = array(
        'redirect'                => array( '0', '#PUSAPUNA', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ),
        'notoc'                   => array( '0', '__YUYARINANNAQ__', '__NOTDC__', '__NOTOC__' ),
@@ -146,7 +146,7 @@ $magicWords = array(
        'currentdayname'          => array( '1', 'KUNANPUNCHAWSUTI', 'NOMBREDÍAACTUAL', 'NOMBREDIAACTUAL', 'CURRENTDAYNAME' ),
        'currentyear'             => array( '1', 'KUNANWATA', 'AÑOACTUAL', 'AÑO_ACTUAL', 'CURRENTYEAR' ),
        'currenttime'             => array( '1', 'KUNANPACHA', 'HORAACTUAL', 'HORA_ACTUAL', 'HORA_MINUTOS_ACTUAL', 'HORAMINUTOSACTUAL', 'TIEMPOACTUAL', 'CURRENTTIME' ),
-       'currenthour'             => array( '1', 'KUNANURA', 'HORA_ACTUAL', 'HORAACTUAL', 'HORA_MINUTOS_ACTUAL', 'HORAMINUTOSACTUAL', 'CURRENTHOUR' ),
+       'currenthour'             => array( '1', 'KUNANURA', 'CURRENTHOUR' ),
        'localmonth'              => array( '1', 'KAYPIKILLA', 'MESLOCAL', 'MESLOCAL2', 'LOCALMONTH', 'LOCALMONTH2' ),
        'localmonthname'          => array( '1', 'KAYPIKILLASUTI', 'NOMBREMESLOCAL', 'MESLOCALCOMPLETO', 'LOCALMONTHNAME' ),
        'localmonthnamegen'       => array( '1', 'KAYPIKILLASUTIP', 'GENERADORNOMBREMESLOCAL', 'MESLOCALGENITIVO', 'LOCALMONTHNAMEGEN' ),
@@ -156,7 +156,7 @@ $magicWords = array(
        'localdayname'            => array( '1', 'KAYPIPUNCHAWSUTI', 'NOMBREDIALOCAL', 'NOMBREDÍALOCAL', 'LOCALDAYNAME' ),
        'localyear'               => array( '1', 'KAYPIWATA', 'AÑOLOCAL', 'LOCALYEAR' ),
        'localtime'               => array( '1', 'KAYPIPACHA', 'HORALOCAL', 'HORAMINUTOSLOCAL', 'TIEMPOLOCAL', 'LOCALTIME' ),
-       'localhour'               => array( '1', 'KAYPIURA', 'HORALOCAL', 'HORAMINUTOSLOCAL', 'LOCALHOUR' ),
+       'localhour'               => array( '1', 'KAYPIURA', 'LOCALHOUR' ),
        'numberofpages'           => array( '1', 'HAYKAPANQA', 'NÚMERODEPÁGINAS', 'NUMERODEPAGINAS', 'NUMBEROFPAGES' ),
        'numberofarticles'        => array( '1', 'HAYKAQILLQA', 'NÚMERODEARTÍCULOS', 'NUMERODEARTICULOS', 'NUMBEROFARTICLES' ),
        'numberoffiles'           => array( '1', 'HAYKAWILLANIQI', 'NÚMERODEARCHIVOS', 'NUMERODEARCHIVOS', 'NUMBEROFFILES' ),
@@ -2236,7 +2236,7 @@ Kay p\'anqata mana musuqmanta watukamuptiykiqa, manam huk hukchasqakunamanta wil
 
 --
 E-chaski willaykuy allinkachinakunata hukchanaykipaqqa kay p\'anqatam qhaway:
-{{canonicalurl:{{#special:Preferences}}}} 
+{{canonicalurl:{{#special:Preferences}}}}
 
 Watiqana sutisuyuykipaq allinkachinakunata hukchanaykipaqqa kay p\'anqatam qhaway:
 {{canonicalurl:{{#special:EditWatchlist}}}}
index 313cde1..db2a52b 100644 (file)
@@ -33,6 +33,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Samiyachiy_rimanakuy',
 );
 
+// Remove Spanish gender aliases (bug 37090)
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Tinkikunana uraypi aspishpa rikuchina',
@@ -238,7 +241,7 @@ $messages = array(
 'jumpto' => 'Chayman rina',
 'jumptonavigation' => 'Wampuna',
 'jumptosearch' => 'Maskana',
-'view-pool-error' => 'Atatay, kunan ratupi pankayuk antawakuna yapa trabajuta charinmi. 
+'view-pool-error' => 'Atatay, kunan ratupi pankayuk antawakuna yapa trabajuta charinmi.
 Yapa runakuna kay pankata rikukunmi.
 Ama shinachu kapay, ashakuta shuyapay, kipalla kutin pankata rikunkapak shamupay.
 
@@ -324,7 +327,7 @@ $1',
 'databaseerror' => 'Yachayyuk ukupi pantay',
 'laggedslavemode' => "'''Rikupay''': Kay pankapi, shina kakpi, mushuk killkaykuna illankacha.",
 'missing-article' => "Hatun kamupi shuk killkayta mana tarin, shinapash chay killkayta tiyanami kan. Paypa chay shutima kan : «$1» $2.
-Icha shuk ñawpak pachamanta ''diff'' ñamana tiyanchu, icha kay tinkika shuk pichashka pankapa shutimi kan. 
+Icha shuk ñawpak pachamanta ''diff'' ñamana tiyanchu, icha kay tinkika shuk pichashka pankapa shutimi kan.
 Mana shina kakpi, shuk [[Special:ListUsers/sysop|kamachyik]]man willapay, payta URL killkata willapay.",
 'missingarticle-rev' => '(Killkay#: $1)',
 'internalerror' => 'Antawa ukupi pantay tiyarka',
@@ -417,7 +420,7 @@ Pakpak shutita [[Special:Search/{{PAGENAME}}|shuk pankakunapi maskanata]], <span
 
 Tapuripay, kaypi killkanata allimi, mana allimi kanchu.
 Uraypi apakunakunapa pichanakunapa kamuta rikuchiwanchik:",
-'moveddeleted-notice' => 'Kaypankaka pichashkami kan. 
+'moveddeleted-notice' => 'Kaypankaka pichashkami kan.
 Uraypi apakuykunpa, pichaykunapa kamuta rikuchinchik:',
 
 # Parser/template warnings
@@ -502,7 +505,7 @@ Kay (kaykunachu) kachashkakunaka cunkashkami kashka.",
 'searchrelated' => 'tinkishka',
 'searchall' => 'tukuy',
 'showingresultsheader' => "{{PLURAL:$5|Maskashka panka: '''$1''', '''$3'''-manta|Maskashka pankakuna: '''$1 - $2''', '''$3'''-manta}}, '''$4''' maskashpaka",
-'nonefound' => "'''Musyay''': kikinka mana shina rimakpika, mana tukuy shuti-suyupi maskapanki. 
+'nonefound' => "'''Musyay''': kikinka mana shina rimakpika, mana tukuy shuti-suyupi maskapanki.
 Icha ''all:'' rimaywan (icha shuk shutisuyupa rimaywan) kikinpa killkata kallarikpika taripankimi.",
 'search-nonefound' => 'Kikinka maskashka rimaykunaka mana tiyanchu.',
 'powersearch' => 'Ashtawan alli maskana',
@@ -893,7 +896,7 @@ Shuk aspipi, shukniki tinkika ima tinkita wichkashkami kanka nin, kay aspipi shu
 'external_image_whitelist' => "  #Kay aspita kay shinallami sakipay<pre>
 #Uraypi ''regex'' samikunata churapay (// chawpipilla)
 #Kay samikunaka hawa rikchakunapa URLwan taripachishkami kanka.
-#Alli taripashkakunaka rikcha shinami rikushishkami kanka, shukkunaka tinki shinallami riksichinka, 
+#Alli taripashkakunaka rikcha shinami rikushishkami kanka, shukkunaka tinki shinallami riksichinka,
 #«#» llikawan kallarik aspikunaka willaykunallami kanka
 #Uchilla, hatun llikakunatapash churanata ushapanki, kaypi shinallami kan
 
index 948c6a6..eb1c27e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Romansh (Rumantsch)
+/** Romansh (rumantsch)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 4add177..dde312e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Romanian (Română)
+/** Romanian (română)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2148,6 +2148,7 @@ Vă rugăm să aveți în vedere faptul că alte saituri web pot avea o legătur
 Puteți limita vizualizarea selectând tipul jurnalului, numele de utilizator sau pagina afectată.',
 'logempty' => 'Nici o înregistrare în jurnal.',
 'log-title-wildcard' => 'Caută titluri care încep cu acest text',
+'showhideselectedlogentries' => 'Arată/ascunde intrările selectate din jurnal',
 
 # Special:AllPages
 'allpages' => 'Toate paginile',
@@ -3040,7 +3041,8 @@ Permite adăugarea unui motiv în descrierea modificărilor',
 'spamprotectionmatch' => 'Următorul text a fost oferit de filtrul de spam: $1',
 'spambot_username' => 'Curățarea de spam a MediaWiki',
 'spam_reverting' => 'Revenire la ultima versiune care nu conține legături către $1',
-'spam_blanking' => 'Toate reviziile conținând legături către $1, au eșuat',
+'spam_blanking' => 'Toate versiunile conținând legături către $1 au fost golite',
+'spam_deleting' => 'Toate versiunile conținând legături către $1 au fost șterse',
 
 # Info page
 'pageinfo-title' => 'Informații pentru „$1”',
index c26c413..47048cc 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tarandíne (Tarandíne)
+/** tarandíne (tarandíne)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1934,6 +1934,8 @@ Pò condenè une  cchiù carattere ca non ge ponne essere ausate jndr'à le tite
 'allpages-hide-redirects' => 'Scunne le redirezionaminde',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => "Tu ste vide 'na versione jndr'à cache de sta pàgene, 'a quale pò essere aggiornate a $1 fà.",
+'cachedspecial-viewing-cached-ts' => "Tu ste vide 'na versione jndr'à cache de sta pàgene, 'a quale pò essere ca non g'è attuale.",
 'cachedspecial-refresh-now' => "Vide l'urteme.",
 
 # Special:Categories
index e5563d5..909cfe9 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Russian (Русский)
+/** Russian (русский)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -8,6 +8,7 @@
  * @file
  *
  * @author AVRS
+ * @author Agilight
  * @author Ahonc
  * @author Aleksandrit
  * @author Alessandro
@@ -15,6 +16,7 @@
  * @author Alexander Sigachov (alexander.sigachov@gmail.com)
  * @author Alexandr Efremov
  * @author Amikeco
+ * @author Amire80
  * @author Askarmuk
  * @author Assele
  * @author Bouron
@@ -116,10 +118,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Создать_учётную_запись', 'Создать_пользователя', 'Зарегистрироваться' ),
        'Deadendpages'              => array( 'Тупиковые_страницы' ),
        'DeletedContributions'      => array( 'Удалённый_вклад' ),
-       'Disambiguations'           => array( 'Неоднозначные_ссылки' ),
+       'Disambiguations'           => array( 'Неоднозначности' ),
        'DoubleRedirects'           => array( 'Двойные_перенаправления' ),
        'EditWatchlist'             => array( 'Править_список_наблюдения' ),
-       'Emailuser'                 => array( 'Письмо', 'Письмо_участнику', 'Отправить_письмо' ),
+       'Emailuser'                 => array( 'Письмо_участнику', 'Отправить_письмо' ),
        'Export'                    => array( 'Экспорт', 'Выгрузка' ),
        'FileDuplicateSearch'       => array( 'Поиск_дубликатов_файлов' ),
        'Filepath'                  => array( 'Путь_к_файлу' ),
@@ -129,14 +131,14 @@ $specialPageAliases = array(
        'Listadmins'                => array( 'Список_администраторов' ),
        'Listbots'                  => array( 'Список_ботов' ),
        'Listfiles'                 => array( 'Список_файлов', 'Список_изображений' ),
-       'Listgrouprights'           => array( 'СпиÑ\81ок_пÑ\80ав_гÑ\80Ñ\83пп', 'Ð\9fÑ\80ава_гÑ\80Ñ\83пп_Ñ\83Ñ\87аÑ\81Ñ\82ников' ),
+       'Listgrouprights'           => array( 'Ð\9fÑ\80ава_гÑ\80Ñ\83пп_Ñ\83Ñ\87аÑ\81Ñ\82ников', 'СпиÑ\81ок_пÑ\80ав_гÑ\80Ñ\83пп' ),
        'Listredirects'             => array( 'Список_перенаправлений' ),
        'Listusers'                 => array( 'Список_участников' ),
        'Lockdb'                    => array( 'Заблокировать_БД', 'Заблокировать_базу_данных' ),
        'Log'                       => array( 'Журналы', 'Журнал' ),
        'Lonelypages'               => array( 'Изолированные_страницы' ),
        'Longpages'                 => array( 'Длинные_страницы' ),
-       'MergeHistory'              => array( 'Ð\9eбÑ\8aединение_иÑ\81Ñ\82оÑ\80ии' ),
+       'MergeHistory'              => array( 'Ð\9eбÑ\8aединение_иÑ\81Ñ\82оÑ\80ий' ),
        'MIMEsearch'                => array( 'Поиск_по_MIME' ),
        'Mostimages'                => array( 'Самые_используемые_файлы' ),
        'Movepage'                  => array( 'Переименовать_страницу', 'Переименование', 'Переименовать' ),
@@ -152,9 +154,10 @@ $specialPageAliases = array(
        'Preferences'               => array( 'Настройки' ),
        'Protectedpages'            => array( 'Защищённые_страницы' ),
        'Protectedtitles'           => array( 'Защищённые_названия' ),
-       'Randompage'                => array( 'Случаная_страница', 'Случайная' ),
+       'Randompage'                => array( 'СлÑ\83Ñ\87айнаÑ\8f\81Ñ\82Ñ\80аниÑ\86а', 'СлÑ\83Ñ\87айнаÑ\8f' ),
        'Recentchanges'             => array( 'Свежие_правки' ),
        'Recentchangeslinked'       => array( 'Связанные_правки' ),
+       'Revisiondelete'            => array( 'Удаление_правки' ),
        'Search'                    => array( 'Поиск' ),
        'Shortpages'                => array( 'Короткие_страницы' ),
        'Specialpages'              => array( 'Спецстраницы' ),
@@ -165,13 +168,14 @@ $specialPageAliases = array(
        'Uncategorizedimages'       => array( 'Некатегоризованные_файлы' ),
        'Uncategorizedpages'        => array( 'Некатегоризованные_страницы' ),
        'Uncategorizedtemplates'    => array( 'Некатегоризованные_шаблоны' ),
+       'Undelete'                  => array( 'Восстановить', 'Восстановление' ),
        'Unusedcategories'          => array( 'Неиспользуемые_категории' ),
        'Unusedimages'              => array( 'Неиспользуемые_файлы' ),
        'Unusedtemplates'           => array( 'Неиспользуемые_шаблоны' ),
        'Upload'                    => array( 'Загрузка' ),
        'UploadStash'               => array( 'Скрытная_загрузка' ),
-       'Userlogin'                 => array( 'Вход', 'Авторизация' ),
-       'Userlogout'                => array( 'Ð\92Ñ\8bÑ\85од', 'Ð\97авеÑ\80Ñ\88ение_Ñ\81еанÑ\81а' ),
+       'Userlogin'                 => array( 'Вход' ),
+       'Userlogout'                => array( 'Ð\97авеÑ\80Ñ\88ение_Ñ\81еанÑ\81а', 'Ð\92Ñ\8bÑ\85од' ),
        'Userrights'                => array( 'Управление_правами' ),
        'Version'                   => array( 'Версия' ),
        'Wantedcategories'          => array( 'Требуемые_категории' ),
@@ -180,6 +184,7 @@ $specialPageAliases = array(
        'Wantedtemplates'           => array( 'Требуемые_шаблоны' ),
        'Watchlist'                 => array( 'Список_наблюдения' ),
        'Whatlinkshere'             => array( 'Ссылки_сюда' ),
+       'Withoutinterwiki'          => array( 'Без_интервики' ),
 );
 
 $magicWords = array(
@@ -1454,6 +1459,7 @@ $1",
 'prefs-beta' => 'Бета-возможности',
 'prefs-datetime' => 'Дата и время',
 'prefs-labs' => 'Экспериментальные возможности',
+'prefs-user-pages' => 'Страницы участника',
 'prefs-personal' => 'Личные данные',
 'prefs-rc' => 'Свежие правки',
 'prefs-watchlist' => 'Список наблюдения',
@@ -2251,6 +2257,7 @@ $1',
 Вы можете отфильтровать результаты по типу журнала, имени участника (учитывается регистр) или затронутой странице (также учитывается регистр).',
 'logempty' => 'Подходящие записи в журнале отсутствуют.',
 'log-title-wildcard' => 'Найти заголовки, начинающиеся с данных символов',
+'showhideselectedlogentries' => 'Показать/скрыть выбранные записи журнала',
 
 # Special:AllPages
 'allpages' => 'Все страницы',
@@ -3159,6 +3166,7 @@ The wiki server can't provide data in a format your client can read.",
 'spambot_username' => 'Чистка спама',
 'spam_reverting' => 'Откат к последней версии, не содержащей ссылки на $1',
 'spam_blanking' => 'Все версии содержат ссылки на $1, очистка',
+'spam_deleting' => 'Все версии содержали ссылки на $1, производится удаление',
 
 # Info page
 'pageinfo-title' => 'Сведения по «$1»',
index 21e3b28..64e8807 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Engelseziekte
  * @author Gazeb
  * @author Gleb Borisov
  * @author Kaganer
@@ -622,7 +623,7 @@ $2
 'showpreview' => 'Указати нагляд',
 'showlivepreview' => 'Швыдкый нагляд',
 'showdiff' => 'Указати зміны',
-'anoneditwarning' => "'''Увага''': Не сте приголошены. Ваша IP-адреса буде записана до історії змін той сторінкы.",
+'anoneditwarning' => "'''Увага''': Ð\9dе Ñ\81Ñ\8cÑ\82е Ð¿Ñ\80иголоÑ\88енÑ\8b. Ð\92аÑ\88а IP-адÑ\80еÑ\81а Ð±Ñ\83де Ð·Ð°Ð¿Ð¸Ñ\81ана Ð´Ð¾ Ñ\96Ñ\81Ñ\82оÑ\80Ñ\96Ñ\97 Ð·Ð¼Ñ\96н Ñ\82ой Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\8b.",
 'anonpreviewwarning' => "''Не сьте приголошеный(а). Уложінём буде ваша IP адреса записана в історії  той сторінкы.''",
 'missingsummary' => "'''Припомянутя:''' Не задали сьте згорнутя едітації. Кідь іщі раз кликтете на Уложыти зміны, буде вапа едітація записана без згорнутя.",
 'missingcommenttext' => 'Задайте коментарь',
@@ -719,6 +720,7 @@ $2
 Тото ся може даколи стати, кідь хоснуєте хыбный вебовый анонімізер.'''",
 'edit_form_incomplete' => "'''Часть едітачного формуларя іщі не пришла не сервер; перевірьте комплетность вашых змін і спробуйте іщі раз.'''",
 'editing' => 'Едітованя $1',
+'creating' => 'Створїня $1',
 'editingsection' => 'Едітованя $1 (роздїл)',
 'editingcomment' => 'Едітованя $1 (нова секція)',
 'editconflict' => 'Конфлікт едітованя: $1',
@@ -968,7 +970,7 @@ $1",
 'mergelogpagetext' => 'Ниже є список найновшых злучінь історії єдной сторінкы з другов.',
 
 # Diffs
-'history-title' => 'Історія змін сторінкы «$1»',
+'history-title' => '$1: Історія змін',
 'difference-multipage' => '(Роздїлы міджі сторінками)',
 'lineno' => 'Рядок $1:',
 'compareselectedversions' => 'Порівнати выбраны верзії',
@@ -1014,7 +1016,7 @@ $1",
 'search-result-score' => 'Одповідность: $1 %',
 'search-redirect' => '(напрямити $1)',
 'search-section' => '(секція $1)',
-'search-suggest' => 'Може сте мали на мыслї: $1',
+'search-suggest' => 'Ð\9cоже Ñ\81Ñ\8cÑ\82е Ð¼Ð°Ð»Ð¸ Ð½Ð° Ð¼Ñ\8bÑ\81лÑ\97: $1',
 'search-interwiki-caption' => 'Сестерьскы проєкты',
 'search-interwiki-default' => '$1 резултаты:',
 'search-interwiki-more' => '(веце)',
@@ -1288,7 +1290,7 @@ $1",
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'прочітати тоту сторінку',
 'action-edit' => 'едітованя той сторінкы',
-'action-createpage' => 'Ñ\81Ñ\82воÑ\80Ñ\96ня сторінок',
+'action-createpage' => 'Ñ\81Ñ\82воÑ\80Ñ\97ня сторінок',
 'action-createtalk' => 'Вытворїня сторінок діскузії',
 'action-createaccount' => 'Вытворїня того конта хоснователя',
 'action-minoredit' => 'означіти тото едітованя як мале',
@@ -1303,7 +1305,7 @@ $1",
 'action-writeapi' => 'хосновати API про писаня',
 'action-delete' => 'Вымазати тоту сторінку',
 'action-deleterevision' => 'вымазати тоту ревізію сторінкы',
-'action-deletedhistory' => 'зобразити  історію змазаных ревізій той сторінкы',
+'action-deletedhistory' => 'зобразити історію змазаных ревізій той сторінкы',
 'action-browsearchive' => 'глядати змазаны сторінкы',
 'action-undelete' => 'обновити тоту сторінку',
 'action-suppressrevision' => 'сконтролёвати і обновити тоту сховану ревізію',
@@ -1362,7 +1364,7 @@ $1",
 'recentchangeslinked-feed' => 'Повязаны зміны',
 'recentchangeslinked-toolbox' => 'Повязаны зміны',
 'recentchangeslinked-title' => 'Зміны звязаны з «$1»',
-'recentchangeslinked-noresult' => 'Ð\92 Ð·Ð°Ð·Ð°Ð·Ð½Ð°Ñ\87енÑ\96м Ñ\87аÑ\81Ñ\97 Ð½Ðµ Ð±Ñ\8bли Ð¶Ð°Ð´Ð½Ñ\8b Ð·Ð¼Ñ\96нÑ\8b Ð½Ð° Ð¾Ð´ÐºÐ°Ð·Ð¾Ð²Ð°Ð½Ñ\8bÑ\85 Ñ\81Ñ\82оÑ\80Ñ\96нкаÑ\85.',
+'recentchangeslinked-noresult' => 'В зазначенім часї не были жадны зміны на одказованых сторінках.',
 'recentchangeslinked-summary' => "Тото є список недавных змін на сторінках на котры одказує задана сторінка (або котры належать до той катеґорії).
 Сторінкы з [[Special:Watchlist|вашого списку слїдованых]] суть вызначены '''тучно'''.",
 'recentchangeslinked-page' => 'Назва сторінкы:',
@@ -1463,9 +1465,9 @@ $1",
 'uploadvirus' => 'Файл обсягує вірус! Детайлы: $1',
 'uploadjava' => 'Тот файл є ZIP архів, котрый обсягує .class-файл Java.
 Начітаня Java-файлів не є доволене, бо они можуть запричінити обход забезпечіня сістемы.',
-'upload-source' => 'Ð\97дÑ\80ойовый файл',
-'sourcefilename' => 'Ð\9dазва Ð·Ð´Ñ\80ойового файлу:',
-'sourceurl' => 'Ð\97дÑ\80ойова URL-адреса:',
+'upload-source' => 'Ð\96Ñ\80Ñ\96дловый файл',
+'sourcefilename' => 'Ð\9dазва Ð¶Ñ\80Ñ\96длового файлу:',
+'sourceurl' => 'Ð\96Ñ\80Ñ\96длова URL-адреса:',
 'destfilename' => 'Назва цілёвого файлу:',
 'upload-maxfilesize' => 'Максімалный розмір файлу: $1',
 'upload-description' => 'Попис файлу',
index e8c88ce..cfc70f2 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Sakha (Саха тыла)
+/** Sakha (саха тыла)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -9,6 +9,7 @@
  *
  * @author Andrijko Z.
  * @author Bert Jickty
+ * @author Gartem
  * @author HalanTul
  * @author Kaganer
  * @author Meno25
@@ -422,6 +423,10 @@ $2',
 'ns-specialprotected' => '{{ns:special}} ааттаах сирэйдэр уларытыллыбаттар.',
 'titleprotected' => "Бу бас тыл оҥоһулларын [[User:$1|$1]] боппут.
 Төрүөтэ - ''$2''",
+'filereadonlyerror' => "«$1» билэни уларытар сатаммата, тоҕо диэтэххэ «$2» «ааҕарга эрэ» диэн эрэсиимҥэ турар эбит.
+
+Бу эрэсиими туруорбут дьаһабыл маннык быһаарыыны хаалларбыт: «''$3''».",
+'invalidtitle-knownnamespace' => '«$2» аат далыгар маннык тиэкистээх «$3» сатаммат аат',
 
 # Virus scanner
 'virus-badscanner' => "Сатаммата. Вирус сканера биллибэтэ: ''$1''",
@@ -718,6 +723,7 @@ IP-аадырыһа эрэ көстөр.
 'note' => "'''Хос быһаарыы:'''",
 'previewnote' => "'''Бу барыллаан көрүү эрэ.'''
 Атын уларытыы бигэргэтиллэ илик!",
+'continue-editing' => 'Уларытыыны ситэр',
 'previewconflict' => 'Этот предварительный просмотр отражает текст в верхнем окне редактирования так, как он будет выглядеть, если вы решите записать его.',
 'session_fail_preview' => "'''Сиэрбэр сессия идентификаторын сүтэрэн кэбиһэн эн уларытыыгын кыайан киллэрбэтэ.
 Өссө холонон көр.
@@ -955,8 +961,8 @@ $1",
 
 # Suppression log
 'suppressionlog' => 'Кистээһин сурунаала',
-'suppressionlogtext' => 'Аллара даһабылларга көстүбэти таарыйар сотуулар уонна хааччахтааһыннар тиһиктэрэ бэриллэр.
-Билигин баар хааччахтары көрөргө [[Special:BlockList|IP хааччахтааһынын тиһигэр]] киир.',
+'suppressionlogtext' => 'Аллара дьаһабылларга көстүбэти таарыйар сотуулар уонна хааччахтааһыннар тиһиктэрэ бэриллэр.
+Билигин баар хааччахтары көрөргө [[Special:BlockList|хааччахтааһын тиһигэр]] киир.',
 
 # History merging
 'mergehistory' => 'Силбэһии сирэйин хронологията',
@@ -988,7 +994,7 @@ $1",
 'mergelogpagetext' => 'Манна сирэйдэр устуоруйаларын бүтэһик силлэһиилэрин тиһигэ бэриллэр.',
 
 # Diffs
-'history-title' => 'Көннөрүү историята "$1"',
+'history-title' => 'Көннөрүү сурунаала "$1"',
 'difference-multipage' => '(Сирэйдэр ыккардыларынааҕы уратылар)',
 'lineno' => '$1 строка:',
 'compareselectedversions' => 'Талыллыбыт торумнары тэҥнээ',
@@ -1880,6 +1886,9 @@ $1',
 'allpagesbadtitle' => 'Сирэй маннык ааттанара сатаммат: аакка туттуллуо суохтаах бэлиэлэрдээх эбэтэр тыллар ыккардыларыгар туһаныллар ыйынньыктаах.',
 'allpages-bad-ns' => '{{SITENAME}} не содержит пространства имён «$1».',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Бүтэһик барылы көр.',
+
 # Special:Categories
 'categories' => 'Категориялар',
 'categoriespagetext' => 'Бу {{PLURAL:$1|категория иһигэр|категориялар истэригэр}} сирэйдэр эбэтэр медиа-билэлэр бааллар.
@@ -1952,7 +1961,7 @@ $1',
 "Кимтэн" графааҕа эн [[Special:Preferences|туруорууларгар]] баар аадырыһыҥ киириэҕэ,
 онон туппут киһи хардарар кыахтаныа.',
 'usermailererror' => 'Сурук кыайан барбата:',
-'defemailsubject' => '{{SITENAME}} —  бу киһиттэн $1 сурук кэлбит',
+'defemailsubject' => '{{SITENAME}} — $1 диэн киһиттэн сурук кэлбит',
 'usermaildisabled' => 'Кыттааччы эл почтата арахса сылдьар',
 'usermaildisabledtext' => 'Эн атын кыттааччыларга эл. почтанан сурук ыытар кыаҕыҥ суох эбит',
 'noemailtitle' => 'E-mail суох',
index 827374c..6289a79 100644 (file)
@@ -12,6 +12,7 @@
  * @author Ghonokuashabaskey
  * @author Joseph Mardy
  * @author Nipon087
+ * @author Reedy
  * @author Salvator
  * @author Samar88
  * @author Srabony90
@@ -334,7 +335,7 @@ Noa do noṅkanaḱ menkana je {{SITENAME}} sayeṭre beoharen sofṭower re mit
 'dberrortext' => 'Database query syntexre vul hoeakana.
 Sofṭoyerre jahan bag karonte noa do hoe daṛeyaḱa.
 Joto khon mucạt́ database query do tahẽkana noṅka:
-<blockquote><tt>$1<//tt><blockquote>
+<blockquote><tt>$1</tt><blockquote>
 "<tt>$2</tt>" bhitrire tahẽna.
 Database okaṭaḱ vule em akada:"<tt>$3: $4</tt>".',
 'dberrortextcl' => 'Ḍaṭabes query sintxexṭre vul hoeakana.
index 56a6551..7a8cfb4 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Northern Sami (Sámegiella)
+/** Northern Sami (sámegiella)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -38,7 +38,53 @@ $namespaceNames = array(
 );
 
 $specialPageAliases = array(
+       'Activeusers'               => array( 'Aktiivvalaš_geavaheaddjit' ),
+       'Allmessages'               => array( 'Buot_systemasánit' ),
+       'Allpages'                  => array( 'Buot_siiddut' ),
+       'Ancientpages'              => array( 'Dološ_siiddut' ),
+       'Block'                     => array( 'Cagge_geavaheaddji' ),
+       'Booksources'               => array( 'Girjegáldut' ),
+       'Categories'                => array( 'Kategoriijat' ),
+       'Contributions'             => array( 'Geavaheaddji_rievdadusat' ),
+       'Disambiguations'           => array( 'Liŋkkat_dárkonsiidduide' ),
+       'DoubleRedirects'           => array( 'Guoktegeardásaš_ođđasitstivremat' ),
+       'Export'                    => array( 'Olggosfievrrit_siidduid' ),
+       'Listfiles'                 => array( 'Fiilalogahallan' ),
+       'Listredirects'             => array( 'Listu_ođđasitstivremiin' ),
+       'Listusers'                 => array( 'Listu_geavaheddjiin' ),
+       'Log'                       => array( 'Loggat', 'Logga' ),
+       'Lonelypages'               => array( 'Oarbbes_siiddut' ),
+       'Longpages'                 => array( 'Guhkes_siiddut' ),
+       'MIMEsearch'                => array( 'MIME-ohcan' ),
+       'Newimages'                 => array( 'Ođđa_govat' ),
+       'Newpages'                  => array( 'Ođđa_siiddut' ),
+       'Preferences'               => array( 'Válljemat' ),
+       'Protectedpages'            => array( 'Suodjaluvvon_siiddut' ),
+       'Randompage'                => array( 'Summal_siidu' ),
+       'Randomredirect'            => array( 'Summal_ođđasitstivren' ),
        'Recentchanges'             => array( 'Varas_rievdadusat' ),
+       'Search'                    => array( 'Oza' ),
+       'Shortpages'                => array( 'Oanehis_siiddut' ),
+       'Specialpages'              => array( 'Erenoamáš_siiddut' ),
+       'Statistics'                => array( 'Statistihkat' ),
+       'Uncategorizedcategories'   => array( 'Klassifiserekeahtes_kategoriijat' ),
+       'Uncategorizedimages'       => array( 'Klassifiserekeahtes_govat' ),
+       'Uncategorizedpages'        => array( 'Klassifiserekeahtes_siiddut' ),
+       'Uncategorizedtemplates'    => array( 'Klassifiserekeahtes_mállevuođut' ),
+       'Unusedcategories'          => array( 'Geavatkeahtes_lágit' ),
+       'Unusedimages'              => array( 'Geavatkeahtes_govat' ),
+       'Unusedtemplates'           => array( 'Geavatkeahtes_mállevuođut' ),
+       'Unwatchedpages'            => array( 'Čuovvotkeahtes_siiddut' ),
+       'Upload'                    => array( 'Sádde_fiilla' ),
+       'Version'                   => array( 'Veršuvdna' ),
+       'Wantedcategories'          => array( 'Kategoriijasávaldagat' ),
+       'Wantedpages'               => array( 'Siidusávaldagat' ),
+       'Watchlist'                 => array( 'Čuovvunlistu' ),
+);
+
+$magicWords = array(
+       'redirect'                => array( '0', '#OĐĐASITSTIVREN', '#STIVREN', '#REDIRECT' ),
+       'numberofarticles'        => array( '1', 'ARTIHKKALIIDMEARRI', 'NUMBEROFARTICLES' ),
 );
 
 $linkTrail = '/^(:?[a-zàáâçčʒǯđðéèêëǧǥȟíìîïıǩŋñóòôõßšŧúùûýÿüžþæøåäö]+)(.*)$/sDu';
@@ -137,7 +183,7 @@ $messages = array(
 'category_header' => 'Siiddut, mat gullet luohkkái $1',
 'subcategories' => 'Vuolleluohkát',
 'category-media-header' => 'Fiillat luohkás ”$1”',
-'category-empty' => "''Dán luohkás eai leat siiddut eaige fiillat.''",
+'category-empty' => "''Dán kategoriijas eai leat siiddut eaige fiillat.''",
 'listingcontinuesabbrev' => 'joatk.',
 
 'about' => 'Dieđut',
@@ -179,7 +225,7 @@ $messages = array(
 'searchbutton' => 'Oza',
 'go' => 'Mana',
 'searcharticle' => 'Mana',
-'history' => 'Historjá',
+'history' => 'Siiddu historjá',
 'history_short' => 'Historjá',
 'updatedmarker' => 'beaiváduvvon du ovddit fitnama maŋŋá',
 'printableversion' => 'Prentenveršuvdna',
@@ -287,8 +333,8 @@ $messages = array(
 'filedeleteerror' => 'Fiilla <b>$1</b> sihkkun ii lihkosmuvvan.',
 'directorycreateerror' => 'Logahallama ”$1” ráhkadeapmi ii lihkosmuvvan.',
 'filenotfound' => 'Fiila <b>$1</b> ii dihtton.',
-'fileexistserror' => 'Fiilii ”$1” čállin ii lihkosmuvvan: fiila lea anus',
-'formerror' => 'Skovi dieđut eai dohkke',
+'fileexistserror' => 'Fiilii ”$1” čállin ii lihkosmuvvan: fiila lea anus.',
+'formerror' => 'Skovi dieđut eai dohkke.',
 'badarticleerror' => 'Doaimma ii leat vejolaš dahkat dán siiddus.',
 'cannotdelete' => 'Siiddu dahje fiilla sihkkon ii lihkosmuvvan. Muhtun eará lea sáhttán sihkkut dan.',
 'badtitle' => 'Fuones bajilčála',
@@ -322,7 +368,7 @@ Du geavaheaddjidovddaldat lea dál anus.
 'notloggedin' => 'It leat čálligoahttan sisa',
 'nologin' => "Jus dus ii vel leat geavaheaddjidovddaldat, sáhtát '''$1''' dakkára.",
 'nologinlink' => 'ráhkadit',
-'createaccount' => 'Ráhkat ođđa geavaheaddjidovddaldaga',
+'createaccount' => 'Ráhkat dovddaldaga',
 'gotaccount' => "Jus dus lea jo geavaheaddjidovddaldat, sáhtát '''$1'''.",
 'gotaccountlink' => 'Logge sisa',
 'createaccountmail' => 'e-poasttain',
@@ -459,6 +505,7 @@ Don fertet dahkat du rievdadusaid dálá tekstii.
 'last' => 'ovddit',
 'page_first' => 'vuosttas siidu',
 'page_last' => 'maŋimus siidu',
+'history-fieldset-title' => 'Bláđe historjjá',
 'histfirst' => 'Vuosttas',
 'histlast' => 'Maŋimus',
 'historysize' => '($1 stávvala)',
@@ -495,15 +542,21 @@ Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
 'revdelete-submit' => 'Daga',
 'pagehist' => 'Siiddu rievdanhistorjá',
 'deletedhist' => 'Šluhtejuvvon veršuvnnaid historjá',
+'revdelete-reason-dropdown' => '*Sivat
+** Ii-almmolaš persovnnalaš dieđut
+** Vejolaš gudnenrihkkun
+** Vuovnnalaš geavaheaddjidovddaldat
+** Vuovnnalaš sisdoallu',
 
 # Diffs
+'history-title' => 'Siiddu «$1» historjá',
 'lineno' => 'Gurgadas $1:',
 'compareselectedversions' => 'Veardde válljejuvvon veršuvnnaid',
 'editundo' => 'šluhtte',
 'diff-multi' => '(Veršuvnnaid gaskas {{PLURAL:$1|okta rievdadus|$1 eará rievdadusa}}.)',
 
 # Search results
-'searchresults' => 'Ohcama bohtosat',
+'searchresults' => 'Ohcanbohtosat',
 'searchresults-title' => 'Ohcanbohtosat: "$1"',
 'searchsubtitle' => 'Ohcan tearpmain [[:$1]]',
 'searchsubtitleinvalid' => 'Ohcan tearpmain $1',
@@ -521,6 +574,11 @@ $1 {{int:pipe-separator}} $2',
 'showingresults' => "{{PLURAL:$1|'''Okta''' boađus|'''$1''' bohtosa}} bohtosa'''$2''' rájes.",
 'showingresultsnum' => "Vuolábealde {{PLURAL:$3|lea '''okta''' ohcanboađus|leat '''$3''' ohcanbohtosa}} '''$2.''' bohtosa rájes.",
 'powersearch' => 'Oza',
+'powersearch-ns' => 'Oza nammagomuvuođain:',
+'powersearch-redir' => 'Listu ođđasitstivremiin',
+'powersearch-togglelabel' => 'Rievdat válljema:',
+'powersearch-toggleall' => 'Buot',
+'powersearch-togglenone' => 'Ii mihkkege',
 
 # Quickbar
 'qbsettings-none' => 'Ii maidige',
@@ -589,19 +647,19 @@ $1 {{int:pipe-separator}} $2',
 'userrights-reason' => 'Sivva',
 
 # Groups
-'group' => 'Joavku',
+'group' => 'Joavku:',
 'group-user' => 'geavaheaddjit',
-'group-bot' => 'Robohtat',
-'group-sysop' => 'bájasdoallit',
-'group-bureaucrat' => 'byrokráhtat',
+'group-bot' => 'Bohtat',
+'group-sysop' => 'Administráhtorat',
+'group-bureaucrat' => 'Byrokráhtat',
 'group-all' => '(buot)',
 
-'group-bot-member' => 'robohtta',
-'group-sysop-member' => 'bájasdoalli',
-'group-bureaucrat-member' => 'byrokráhta',
+'group-bot-member' => 'bohtta',
+'group-sysop-member' => 'administráhtorat',
+'group-bureaucrat-member' => 'byrokráhtta',
 
 'grouppage-bot' => '{{ns:project}}:Bohtat',
-'grouppage-sysop' => '{{ns:project}}:Bájasdoallit',
+'grouppage-sysop' => '{{ns:project}}:Administráhtorat',
 'grouppage-bureaucrat' => '{{ns:project}}:Byrokráhtat',
 
 # User rights log
@@ -613,7 +671,7 @@ $1 {{int:pipe-separator}} $2',
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|rievdadus|rievdadusa}}',
 'recentchanges' => 'Varas rievdadusat',
-'recentchanges-summary' => 'Dán siiddus sáhtat čuovvut varas rievdadusaid {{GRAMMAR:illative|{{SITENAME}}}}.',
+'recentchanges-summary' => 'Dán siiddus sáhtát čuovvut varas rievdadusaid {{SITENAME}}s.',
 'recentchanges-feed-description' => 'Dán siiddus sáhtat čuovvut varas {{GRAMMAR:illative|{{SITENAME}}}} rievdadusaid.',
 'rcnote' => 'Vuollin {{PLURAL:$1|lea okta rievdadus|leat $1 varas rievdadusa}} {{PLURAL:$2|ovtta beaivvi|$2 maŋimus jándora}} áigge gitta $3 rádjái.',
 'rcnotefrom' => "Vuolábealde leat rievdadusat '''$2''' rájes. Eanemusta '''$1''' mearkkastaga čájehuvvo.",
@@ -626,7 +684,7 @@ $1 {{int:pipe-separator}} $2',
 'rcshowhidemine' => '$1 iežas rievdádusat',
 'rclinks' => 'Čájet $1 varas rievdadusa maŋimus $2 beaivve siste.<br />$3',
 'diff' => 'erohus',
-'hist' => 'historjá',
+'hist' => 'hist',
 'hide' => 'čiega',
 'show' => 'čájet',
 'minoreditletter' => 'u',
@@ -650,9 +708,9 @@ $1 {{int:pipe-separator}} $2',
 'uploaderror' => 'Vurkenfeaila',
 'uploadlog' => 'Fiilalogga',
 'uploadlogpage' => 'Fiilalogga',
-'filename' => 'Fiilla namma:',
+'filename' => 'Fiilla namma',
 'filedesc' => 'Čoahkkáigeassu',
-'fileuploadsummary' => 'Čoahkkáigeassu',
+'fileuploadsummary' => 'Čoahkkáigeassu:',
 'filesource' => 'Gáldu:',
 'uploadedfiles' => 'Lasihuvvon fiillat',
 'ignorewarning' => 'Vurke fuolatkeahttá varuhusas',
@@ -764,6 +822,15 @@ $1 {{int:pipe-separator}} $2',
 # Statistics
 'statistics' => 'Statistihkat',
 'statistics-header-users' => 'Geavaheaddjistatistihkat',
+'statistics-articles' => 'Sisdoallosiiddut',
+'statistics-pages' => 'Siiddut',
+'statistics-pages-desc' => 'Buot siiddut dán wikis (ságastallansiiddut, prošeaktasiiddut, ođđasitstivremat, jed.)',
+'statistics-files' => 'Fiillat',
+'statistics-edits' => 'Rievdadusat maŋŋel dan go {{SITENAME}} vuođđuduvvui',
+'statistics-edits-average' => 'Gaskamearálaš rievdadusaid mearri/siidu',
+'statistics-users' => 'Registrerejuvvon [[Special:ListUsers|geavaheaddjit]]',
+'statistics-users-active' => 'Aktiivvalaš geavaheaddjit',
+'statistics-users-active-desc' => 'Geavaheaddjit, geat leat bargan juoidá maŋimus {{PLURAL:$1|beaivvi|$1 beaivvi}} áigge.',
 'statistics-mostpopular' => 'Eanemusta gehčojuvvon siiddut',
 
 'disambiguations' => 'Liŋkkat dárkonsiidduide',
@@ -813,6 +880,7 @@ $1 {{int:pipe-separator}} $2',
 'protectedpages-indef' => 'Beare siiddut, maid suodjaleapmi lea bissovaš',
 'protectedpages-cascade' => 'Beare siiddut, maid suodjaleapmi lea viiddiduvvon',
 'protectedpagestext' => 'Čuovvovaš siiddut leat suodjáluvvon sirdimiin ja rievdadusain',
+'protectedtitles' => 'Suodjaluvvon siidonamat',
 'listusers' => 'Geavaheaddjilistu',
 'newpages' => 'Ođđa siiddut',
 'newpages-username' => 'Geavaheaddjidovddaldat:',
@@ -870,6 +938,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'activeusers-hidebots' => 'Čiega bohtaid',
 'activeusers-hidesysops' => 'Čiega administráhtoriid',
 
+# Special:ListGroupRights
+'listgrouprights-members' => '(listu miellahtuin)',
+
 # E-mail user
 'mailnologin' => 'Sáddejeaddji čujuhus váilo',
 'mailnologintext' => 'Don fertet leat [[Special:UserLogin|čálligoahtán sisa]] ja du [[Special:Preferences|ásahusain]] ferte leat gelbbolaš ja <strong>sihkarastojuvvon</strong> e-poastačujuhus, ovdalgo sáhtat sáddet e-poasta eará geavaheddjiide.',
@@ -946,6 +1017,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'deletionlog' => 'sihkkunlogga',
 'reverted' => 'Máhcahuvvon ovddit veršuvdnii',
 'deletecomment' => 'Sivva',
+'deleteotherreason' => 'Eará sivva:',
 
 # Rollback
 'rollback' => 'máhcat ovddit veršuvdnii',
@@ -970,14 +1042,18 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'protectexpiry' => 'Boarásnuvvá',
 'protect_expiry_invalid' => 'Boarášnuvvánáigi ii dohket.',
 'protect_expiry_old' => 'Boarásnuvvánáigi lea vássán.',
-'protect-default' => '(eai rádjehusat)',
+'protect-default' => 'Suova buot geavaheddjiid',
 'protect-level-autoconfirmed' => 'Cakkastala ođđa ja anonyma geavaheddjiid',
-'protect-level-sysop' => 'Dušše bájasdoallit',
+'protect-level-sysop' => 'Suova beare administráhtoriid',
 'protect-summary-cascade' => 'viiddiduvvon',
 'protect-expiring' => 'boarásnuvvá $1',
 'protect-cascade' => 'Viididt suodjálusa guoskat buot siidduit, mat gullet dán siidui',
 'protect-othertime' => 'Eará áigi:',
 'protect-othertime-op' => 'eará áigi',
+'protect-dropdown' => '** Dávjjes vandalisma
+** Dávjjes spammen
+** Rievdadansoahti
+** Dehálaš siidu',
 'protect-expiry-options' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite',
 'restriction-type' => 'Rádjehus',
 'restriction-level' => 'Suodjálus',
@@ -1080,6 +1156,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'infiniteblock' => 'bissovaččat',
 'expiringblock' => 'boarásnuvvá $1 $2',
 'contribslink' => 'rievdadusat',
+'blocklogentry' => 'esttii geavaheaddji dahje IP-čujuhusa [[$1]], eastima bistin lea $2 $3',
 'proxyblocksuccess' => 'Gárvvis.',
 
 # Developer tools
@@ -1141,7 +1218,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'tooltip-pt-mycontris' => 'Listu iežas rievdadusain',
 'tooltip-pt-login' => 'Čálligoađe sisa dahje ráhkat geavaheaddjidovddaldaga',
 'tooltip-pt-anonlogin' => 'Čálligoađe sisa dahje ráhkat geavaheaddjidovddaldaga',
-'tooltip-pt-logout' => 'Čálligoađe olggos',
+'tooltip-pt-logout' => 'Logge olggos',
 'tooltip-ca-talk' => 'Ságastala sisdoalus',
 'tooltip-ca-edit' => 'Rievdat dán siiddu',
 'tooltip-ca-addsection' => 'Lasit kommeantta dán siidui',
@@ -1153,7 +1230,7 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'tooltip-ca-move' => 'Sirdde dán siiddu',
 'tooltip-ca-watch' => 'Lasit dán siiddu iežat čuovvunlistui',
 'tooltip-ca-unwatch' => 'Sirdde dán siiddu eret du čuovvunlisttus',
-'tooltip-search' => 'Oza {{GRAMMAR:elative|{{SITENAME}}}}',
+'tooltip-search' => 'Oza {{SITENAME}}s',
 'tooltip-p-logo' => 'Váldosiidu',
 'tooltip-n-mainpage' => 'Mana váldosiidui',
 'tooltip-n-portal' => 'Ságastallan prošeavttas',
index d05a354..be52dea 100644 (file)
@@ -442,8 +442,8 @@ $1",
 'mainpage' => 'මුල් පිටුව',
 'mainpage-description' => 'මුල් පිටුව',
 'policy-url' => 'Project:ප්‍රතිපත්තිය',
-'portal' => 'පà·\8aâ\80\8dරජà·\8f à¶´à·\92à·\80à·\92à·\83à·\94ම',
-'portal-url' => 'Project:පà·\8aâ\80\8dරජà·\8f à¶´à·\92à·\80à·\92à·\83à·\94ම',
+'portal' => 'පà·\8aâ\80\8dරජà·\8f à¶¯à·\8aà·\80à·\8fරය',
+'portal-url' => 'Project:පà·\8aâ\80\8dරජà·\8f à¶¯à·\8aà·\80à·\8fරය',
 'privacy' => 'පුද්ගලිකත්ව ප්‍රතිපත්තිය',
 'privacypage' => 'Project:පුද්ගලිකත්ව ප්‍රතිපත්තිය',
 
@@ -619,7 +619,7 @@ $2',
 'notloggedin' => 'ප්‍රවිසී නැත',
 'nologin' => "ඔබ හට ගිණුමක් නොමැතිද? '''$1'''.",
 'nologinlink' => 'ගිණුමක් තනන්න',
-'createaccount' => 'à¶\9cà·\92ණà·\94ම තනන්න',
+'createaccount' => 'à¶\85ලà·\94තà·\8a à¶\9cà·\92ණà·\94මà¶\9aà·\8a තනන්න',
 'gotaccount' => "දැනටමත් ගිණුමක් තිබේද? '''$1'''.",
 'gotaccountlink' => 'පිවිසෙන්න',
 'userlogin-resetlink' => 'ඔබේ පිවිසුම් තොරතුරු අමතකද?',
@@ -1288,7 +1288,7 @@ $1",
 'timezoneuseserverdefault' => 'විකියෙහි සාමාන්‍ය විදිහ භාවිත කරන්න ($1)',
 'timezoneuseoffset' => 'වෙනත් (හිලව්ව නියමාකාරයෙන් දක්වන්න)',
 'timezoneoffset' => 'Offset¹:',
-'servertime' => "ස'වරයේ වේලාව:",
+'servertime' => 'සේවාදායකයේ වේලාව:',
 'guesstimezone' => 'බ්‍රවුසරයෙන් පුරවන්න',
 'timezoneregion-africa' => 'අප්‍රිකාව',
 'timezoneregion-america' => 'අමෙරිකාව',
index 71dc43c..0111218 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Slovak (Slovenčina)
+/** Slovak (slovenčina)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 6f50a4d..0d61ed7 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Slovenian (Slovenščina)
+/** Slovenian (slovenščina)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -2066,6 +2066,7 @@ Prosimo, upoštevajte, da se lahko druge spletne strani povezujejo na datoteko z
 'alllogstext' => 'Združeno so prikazani dnevniki sprememb uporabniških pravic, preimenovanj uporabnikov, nalaganja predstavnostnih datotek, prestavljanja in zaščite strani, brisanja, registracij uporabnikov, sprememb položaja botov ter blokiranja in deblokiranja uporabnikov na strani {{SITENAME}}. Pogled lahko zožite z izbiro dnevnika, uporabniškega imena ali strani. Vedite, da polje »Uporabnik« razlikuje med malimi in velikimi črkami.',
 'logempty' => 'O tej strani ni v dnevniku ničesar.',
 'log-title-wildcard' => 'Iskanje po naslovih, začenši s tem besedilom',
+'showhideselectedlogentries' => 'Pokaži/skrij izbrane dnevniške vnose',
 
 # Special:AllPages
 'allpages' => 'Vse strani',
@@ -2955,6 +2956,7 @@ Omogoča vnos pojasnila v povzetku urejanja.',
 'spambot_username' => 'Čiščenje navlake MediaWiki',
 'spam_reverting' => 'Vračanje na zadnjo redakcijo brez povezav na $1',
 'spam_blanking' => 'Vse redakcije so vsebovale povezave na $1, izpraznjujem',
+'spam_deleting' => 'Vse redakcije so vsebovale povezave na $1, brišem',
 
 # Info page
 'pageinfo-title' => 'Informacije o »$1«',
index 3ca1e95..97fb200 100644 (file)
@@ -152,7 +152,7 @@ $magicWords = array(
        'numberofpages'           => array( '1', 'NUMRIFAQEVE', 'NUMBEROFPAGES' ),
        'numberofarticles'        => array( '1', 'NUMRIIARTIKUJVE', 'NUMBEROFARTICLES' ),
        'numberoffiles'           => array( '1', 'NUMRIISKEDAVE', 'NUMBEROFFILES' ),
-       'numberofusers'           => array( '1', 'NUMRIIPËRDORUESVE', 'NUMRIPËRDORUESVE', 'NUMBEROFUSERS' ),
+       'numberofusers'           => array( '1', 'NUMRIIPËRDORUESVE', 'NUMBEROFUSERS' ),
        'numberofactiveusers'     => array( '1', 'NUMRIIPËRDORUESVEAKTIVË', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'           => array( '1', 'NUMRIREDAKTIMEVE', 'NUMBEROFEDITS' ),
        'numberofviews'           => array( '1', 'NUMRIISHIKIMEVE', 'NUMBEROFVIEWS' ),
index 2e95365..2400634 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Serbian (Cyrillic script) (‪Српски (ћирилица)‬)
+/** Serbian (Cyrillic script) (‪српски (ћирилица)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index dec59d1..af585ca 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Serbian (Latin script) (‪Srpski (latinica)‬)
+/** Serbian (Latin script) (‪srpski (latinica)‬)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index f9f11e2..50716de 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Swedish (Svenska)
+/** Swedish (svenska)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
index 19c3b0a..b705e0f 100644 (file)
 
 $fallback = 'pl';
 
+$namespaceNames = array(
+       NS_SPECIAL        => 'Szpecyjalna',
+       NS_TALK           => 'Dyskusyjo',
+       NS_USER           => 'Używacz',
+       NS_USER_TALK      => 'Dyskusyjo_używacza',
+       NS_PROJECT_TALK   => 'Dyskusyjo_$1',
+       NS_FILE           => 'Plik',
+       NS_FILE_TALK      => 'Dyskusyjo_plika',
+       NS_MEDIAWIKI      => 'MediaWiki',
+       NS_MEDIAWIKI_TALK => 'Dyskusyjo_MediaWiki',
+       NS_TEMPLATE       => 'Muster',
+       NS_TEMPLATE_TALK  => 'Dyskusyjo_mustra',
+       NS_HELP           => 'Půmoc',
+       NS_HELP_TALK      => 'Dyskusyjo_půmocy',
+       NS_CATEGORY       => 'Kategoryjo',
+       NS_CATEGORY_TALK  => 'Dyskusyjo_kategoryji',
+);
+
+$namespaceAliases = array(
+       // Aliases for Polish namespaces (bug 34988).
+       'Specjalna'            => NS_SPECIAL,
+       'Dyskusja'             => NS_TALK,
+       'Użytkownik'           => NS_USER,
+       'Dyskusja_użytkownika' => NS_USER_TALK,
+       'Dyskusja_$1'          => NS_PROJECT_TALK,
+       'Dyskusja_pliku'       => NS_FILE_TALK,
+       'Dyskusja_MediaWiki'   => NS_MEDIAWIKI_TALK,
+       'Szablon'              => NS_TEMPLATE,
+       'Dyskusja_szablonu'    => NS_TEMPLATE_TALK,
+       'Pomoc'                => NS_HELP,
+       'Dyskusja_pomocy'      => NS_HELP_TALK,
+       'Kategoria'            => NS_CATEGORY,
+       'Dyskusja_kategorii'   => NS_CATEGORY_TALK,
+);
+
+// Remove Polish gender aliases
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Podsztrychńyńcy linkůw:',
@@ -648,7 +686,7 @@ abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}
 'userinvalidcssjstitle' => "'''Pozůr:''' Ńy mo skůrki uo mjańe \"\$1\". Pamjyntej, aže zajty užytkowńika zawjyrajůnce CSS i JavaScript powinny začynać śe mouům buchštabům, np. {{ns:user}}:Foo/vector.css.",
 'updated' => '(Pomjyńano)',
 'note' => "'''Pozůr:'''",
-'previewnote' => "'''To je ino podglůnd - artikel ješče ńy je naškryflany!'''",
+'previewnote' => "'''To je ino podglůnd - artikel jeszcze ńy je spamjyntany!'''",
 'previewconflict' => 'Wersyjo podglůndano uodnośi śe do tekstu s pola edycyje na wjyrchu. Tak bydźe wyglůndać zajta jeli zdecyduješ śe jům naškryflać.',
 'session_fail_preview' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji. Sprůbuj ješče roz. Kejby to ńy pomoguo - wylůguj śe i zalogůj uod nowa.'''",
 'session_fail_preview_html' => "'''Přeprašomy! Serwer ńy može přetwořyć tygo sprowjyńo skuli utraty danych ze sesyji.'''
@@ -924,7 +962,7 @@ $1',
 'search-nonefound' => 'Ńy mo wynikůw, kere uodpadajům kryterjům zapytańo.',
 'powersearch' => 'Sznupańy zaawansowane',
 'powersearch-legend' => 'Šnupańy zaawansowane',
-'powersearch-ns' => 'Šnupej we přestřyńach mjan:',
+'powersearch-ns' => 'Sznupej we przestrzyńach mjan:',
 'powersearch-redir' => 'Pokož překerowańa',
 'powersearch-field' => 'Šnupej',
 'powersearch-togglelabel' => 'Zaznocz:',
index e8d3d01..5c6f837 100644 (file)
@@ -1633,7 +1633,7 @@ $1',
 'file-anchor-link' => 'கோப்பு',
 'filehist' => 'கோப்பு வரலாறு',
 'filehist-help' => 'குறித்த நேரத்தில் இருந்த படிமத்தைப் பார்க்க அந்நேரத்தின் மீது சொடுக்கவும்.',
-'filehist-deleteall' => 'சகலதையும் நீக்கு',
+'filehist-deleteall' => 'à®\9aà®\95லதà¯\8dதà¯\88யà¯\81à®®à¯\8d à®¨à¯\80à®\95à¯\8dà®\95à¯\81',
 'filehist-deleteone' => 'நீக்குக',
 'filehist-revert' => 'முன்நிலையாக்கு',
 'filehist-current' => 'தற்போதைய',
index 85e840b..8435208 100644 (file)
@@ -159,7 +159,7 @@ $messages = array(
 'tog-enotifwatchlistpages' => 'Padalhan ako ng e-liham kapag nabago ang isa sa mga pahinang binabantayan ko',
 'tog-enotifusertalkpages' => 'Padalhan ako ng e-liham kapag binago ang aking pahina ng usapan',
 'tog-enotifminoredits' => 'Padalhan din ako ng e-liham para sa mga maliliit na pagbabago ng mga pahina',
-'tog-enotifrevealaddr' => 'Ipakita ang adres ng e-liham ko sa loob ng mga e-liham ng pagpapahayag',
+'tog-enotifrevealaddr' => 'Ipakita ang aking direksiyong e-liham sa loob ng mga e-liham ng pagpapahayag',
 'tog-shownumberswatching' => 'Ipakita ang bilang ng mga nagbabantay na tagagamit',
 'tog-oldsig' => 'Umiiral na lagda:',
 'tog-fancysig' => 'Ituring ang lagda bilang teksto ng wiki (walang automatikong pagkawing)',
@@ -390,9 +390,9 @@ $1',
 'badaccess-group0' => 'Hindi ka pinahintulutang isagawa ang hiniling mong kilos.',
 'badaccess-groups' => 'Ang kilos na hiniling mo ay nakatakda lamang para sa mga tagagamit sa {{PLURAL:$2|pangkat na|isa sa mga pangkat na}}: $1.',
 
-'versionrequired' => 'Kinakailangan ang bersyong $1 ng MediaWiki',
+'versionrequired' => 'Kinakailangan ang bersiyong $1 ng MediaWiki',
 'versionrequiredtext' => 'Kinakailangan ang bersyong $1 ng MediaWiki upang magamit ang pahinang ito.
-Tingnan ang [[Special:Version|pahina ng bersyon]].',
+Tingnan ang [[Special:Version|pahina ng bersiyon]].',
 
 'ok' => 'Sige',
 'retrievedfrom' => 'Ikinuha mula sa "$1"',
@@ -413,7 +413,7 @@ Tingnan ang [[Special:Version|pahina ng bersyon]].',
 'collapsible-expand' => 'Ibuka',
 'thisisdeleted' => 'Tingnan o ibalik ang $1?',
 'viewdeleted' => 'Tingnan ang $1?',
-'restorelink' => '{{PLURAL:$1|isang binurang pagbabagp|$1 binurang pagbabago}}',
+'restorelink' => '{{PLURAL:$1|isang binurang pagbabago|$1 binurang pagbabago}}',
 'feedlinks' => 'Subo/Karga:',
 'feed-invalid' => 'Hindi tanggap na uri ng serbisyo ng pagpaparating.',
 'feed-unavailable' => 'Walang serbisyo mula sa sindikasyong pangpaglalathala',
@@ -495,8 +495,8 @@ Maaaring ibinura na ito ng iba.',
 'badtitle' => 'Hindi kanais-nais na pamagat',
 'badtitletext' => 'Ang hiniling na pamagat ng pahina ay hindi katanggap-tanggap, wala, o isang may-maling kawing na pamagat na pangugnayang-wika (interwika) o pangugnayang wiki (interwiki).
 Maaaring naglalaman ito ng isa o higit pang mga panitik (karakter) na hindi maaaring gamitin para sa mga pamagat.',
-'perfcached' => 'Ang sumusunod na datos ay nakaligpit at maaaring wala na sa panahon. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Ang sumusunod na datos ay nakaligpit, at dating isinapanahon noong $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Ang sumusunod na mga dato ay nakaligpit at maaaring hindi na napapanahon. Isang pinakamataas na {{PLURAL:$1|isang resulta|$1 mga resulta ang}} ang makukuha mula sa taguan.',
+'perfcachedts' => 'Ang sumusunod na mga dato ay nakaligpit, at dating isinapanahon noong $1. Isang pinakamataas na {{PLURAL:$4|isang resulta ang|$4 mga resulta ang}} makukuha mula sa taguan.',
 'querypage-no-updates' => 'Kasulukuyang hindi gumagana ang mga pagbabago para sa pahinang ito.
 Ang mga dato dito ay hindi pa masasariwa sa kasalukuyan.',
 'wrong_wfQuery_params' => 'Maling mga parametro sa wfQuery()<br />
@@ -509,6 +509,7 @@ Tanong: $2',
 Pakisubok na lang ulit pagkaraan ng kaunting mga minuto.",
 'protectedpagetext' => 'Kinandado ang pahinang ito upang mahadlangang ang pagbago.',
 'viewsourcetext' => 'Maaari mong tingnan at kopyahin ang pinagmulan ng pahinang ito:',
+'viewyourtext' => "Matitingnan at makukopya mo ang pinagmulan ng '''mga pagbabago''' papunta sa pahinang ito:",
 'protectedinterface' => "Nagbibigay ang pahinang ito ng tekstong panghangganan (''interface'') para sa sopwer, at ikinandado para maiwasan ang pangaabuso.",
 'editinginterface' => "'''Babala:''' Binabago mo ang isang pahinang ginagamit sa pagbibigay ng tekstong panghangganan para sa sopwer.
 Makakaapekto ang mga pagbago sa pahinang ito sa anyo ng hangganang (''interface'') pangtagagamit na para sa ibang mga tagagamit.
@@ -517,9 +518,16 @@ Para sa mga salinwika, paki isang-alang-alang o konsiderahin ang paggamit ng [//
 'cascadeprotected' => 'Nakasanggalang ang pahinang ito mula sa mga pagbabago, dahil kabilang ito sa sumusunod na {{PLURAL:$1|pahinang|mga pahinang}} nakasanggalang sa pamamagitan ng binuhay na opsyong "nahuhulog" (kumakaskada):
 $2',
 'namespaceprotected' => "Wala kang pahintulot na magbago ng mga pahinang nasa ngalan-espasyong '''$1'''.",
+'customcssprotected' => 'Wala kang pahintulot na baguhin ang pahina ng CSS na ito, dahil naglalaman ito ng mga katakdaang pansarili ng ibang tagagamit.',
+'customjsprotected' => 'Wala kang pahintulot na baguhin ang pahina ng JavaScript na ito, dahil naglalaman ito ng mga katakdaang pansarili ng ibang tagagamit.',
 'ns-specialprotected' => 'Hindi pwedeng baguhin ang mga natatanging pahina.',
 'titleprotected' => "Nakasanggalang ang pamagat na ito mula sa paglikha ni [[User:$1|$1]].
 Ang ibinigay na dahilan ay ''$2''.",
+'filereadonlyerror' => 'Hindi nabago ang talaksang "$1" dahil ang repositoryong talaksan na "$2" ay nasa kalakarang mababasa lang.
+
+Ang tagapangasiwang nagkandado nito ay nag-alok ng ganitong paliwanag: "$3".',
+'invalidtitle-knownnamespace' => 'Hindi katanggap-tanggap na pamagat na may puwang na pampangalang "$2" at tekstong "$3"',
+'invalidtitle-unknownnamespace' => 'Hindi katanggap-tanggap na pamagat na mayroong hindi nalalamang bilang na pampuwang ng pangalan na $1 at tekstong "$2"',
 
 # Virus scanner
 'virus-badscanner' => "Masamang kompigurasyon: hindi kilalang tagahagilap (iskaner) ng birus: ''$1''",
@@ -619,6 +627,7 @@ Walang e-liham na ipapadala para sa anumang sumusunod na tampok na kasangkapang-
 'invalidemailaddress' => 'Hindi matatanggap ang direksiyong e-liham na ito dahil tila mayroon itong maling anyo.
 Pakipasok ang isang may mahusay na anyong adres o paki-iwang walang laman na lang ang lagayan.',
 'cannotchangeemail' => 'Hindi maaaring baguhin ang mga direksiyong e-liham sa wiking ito.',
+'emaildisabled' => 'Ang sityong ito ay hindi makapagpapadala ng mga e-liham.',
 'accountcreated' => 'Nilikha na ang kuwenta',
 'accountcreatedtext' => 'Nilikha na ang kuwentang tagagamit para kay $1.',
 'createaccount-title' => 'Paglikha ng kuwenta para sa {{SITENAME}}',
@@ -635,6 +644,7 @@ Maghintay po muna bago subukan uli.',
 
 # E-mail sending
 'php-mail-error-unknown' => 'Hindi malamang kamalian sa tungkulin ng liham ng PHP ()',
+'user-mail-no-addy' => 'Sinubukang magpadala ng e-liham na walang tirahan na para sa e-liham.',
 
 # Change password dialog
 'resetpass' => 'Palitan ang hudyat',
@@ -660,15 +670,18 @@ Maaaring matagumpay mo nang nabago ang iyong hudyat o nakahiling na ng isang bag
 'passwordreset-text' => 'Punuin ang pormularyong ito upang makatanggap ng isang pampaalalang e-liham ng iyong mga detalye ng akawnt.',
 'passwordreset-legend' => 'Itakdang muli ang hudyat',
 'passwordreset-disabled' => 'Hindi pinagagana sa wiking ito ang muling mga pagtatakda ng hudyat.',
-'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng dato sa ibaba}}',
+'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng datos sa ibaba}}',
 'passwordreset-username' => 'Pangalan ng tagagamit:',
-'passwordreset-email' => 'Tirahan ng e-liham:',
-'passwordreset-emailtitle' => 'Mga detalye ng akawnt sa {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Isang tao (marahil ay ikaw, mula sa tirahan ng IP na $1) ang humiling ng isang paalala sa iyong mga detalye ng akawnt para sa {{SITENAME}} ($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
+'passwordreset-domain' => 'Nasasakupan:',
+'passwordreset-capture' => 'Tingnan ang lumabas na e-liham?',
+'passwordreset-capture-help' => 'Kapag tsetsekan mo ang kahong ito, ang e-liham (may pansamantalang hudyat) ay ipapakita sa iyo at ipapadala rin sa tagagamit.',
+'passwordreset-email' => 'Direksiyong e-liham:',
+'passwordreset-emailtitle' => 'Mga detalye ng kuwenta sa {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Isang tao (marahil ay ikaw, mula sa direksiyong IP na $1) ang humiling ng isang paalala sa iyong mga detalye ng kuwenta para sa {{SITENAME}} ($4). Ang sumusunod na {{PLURAL:$3|kuwenta ng tagagamit ay|mga kuwenta ng tagagamit ay}} may kaugnayan sa direksiyong e-liham na ito:
 
 $2
 
-{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang pansamantalang mga hudyat na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
+{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang mga pansamantalang hudyat na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
 Dapat kang lumagda at pumili ng isang bagong hudyat ngayon. Kung ibang tao ang gumawa ng kahilingang ito, o kung naalala mo na ang orihinal mong hudyat, at hindi mo na nais palitan ito, maaari mong huwag nang pansinin ang mensaheng ito at magpatuloy sa paggamit ng luma mong hudyat.',
 'passwordreset-emailtext-user' => 'Ang tagagamit na si $1 sa {{SITENAME}} ay humiling ng isang paalala ng iyong mga akawnt ng detalye para sa {{SITENAME}}
 ($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
@@ -680,13 +693,18 @@ Dapat kang lumagda at pumili ng isang hudyat ngayon. Kung ibang tao ang gumawa n
 'passwordreset-emailelement' => 'Pangalan ng tagagamit: $1
 Pansamantalang hudyat: $2',
 'passwordreset-emailsent' => 'Naipadala na ang isang e-liham na pampaalala.',
+'passwordreset-emailsent-capture' => 'Naipadala na ang isang e-liham na paalala, na ipinapakita sa ibaba.',
+'passwordreset-emailerror-capture' => 'Nalikha na ang isang e-liham na paalala, na ipinapakita sa ibaba, subalit nabigo ang pagpapadala sa tagagamit: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Baguhin ang direksiyong e-liham',
 'changeemail-header' => 'Baguhin ang direksiyong e-liham ng kuwenta',
+'changeemail-text' => 'Kumpletuhin ang pormularyong ito upang mabago ang tirahan na para sa e-liham mo. Kakailanganin mong ipasok ang iyong hudyat upang tiyakin ang pagbabagong ito.',
+'changeemail-no-info' => 'Kailangan mong lumagda upang tuwirang mapuntahan ang pahinang ito.',
 'changeemail-oldemail' => 'Kasalukuyang direksiyong e-liham:',
 'changeemail-newemail' => 'Bagong direksiyong e-liham:',
 'changeemail-none' => '(wala)',
+'changeemail-submit' => 'Baguhin ang e-liham',
 'changeemail-cancel' => 'Kanselahin',
 
 # Edit page toolbar
@@ -720,8 +738,8 @@ Pansamantalang hudyat: $2',
 'showlivepreview' => 'Buhay na paunang tingin',
 'showdiff' => 'Ipakita ang mga pagbabago',
 'anoneditwarning' => "'''Babala:''' Hindi ka nakalagda.
-Matatala ang adres ng IP mo sa kasaysayan ng pagbabago ng pahinang ito.",
-'anonpreviewwarning' => "''Hindi ka nakalagda.  Itatala sa inyong pagtatala ang inyong adres ng IP sa kasaysayan ng pagbabago ng pahinang ito.''",
+Matatala ang iyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.",
+'anonpreviewwarning' => "''Hindi ka nakalagda.  Itatala sa inyong pagtatala ang inyong direksiyong IP sa kasaysayan ng pagbabago ng pahinang ito.''",
 'missingsummary' => "'''Paalala:''' Hindi ka nagbigay ng buod ng pagbabago.
 Kapag pinindot mo uli ang Sagip, masasagip ang pagbabago mo na wala nito.",
 'missingcommenttext' => 'Magbigay ng isang kumento/puna sa ibaba.',
@@ -730,17 +748,18 @@ Kapag pinindot mo uli ang \"{{int:savearticle}}\", masasagip ang pagbabago mo na
 'summary-preview' => 'Paunang tingin sa buod:',
 'subject-preview' => 'Paunang tingin sa paksa/paulo:',
 'blockedtitle' => 'Hinarang ang tagagamit',
-'blockedtext' => "'''Hinarang/hinadlangan ang iyong pangalan ng tagagamit o adres ng IP.'''
+'blockedtext' => "'''Hinarang/hinadlangan ang iyong pangalan ng tagagamit o direksiyong IP.'''
 
-Ginawa ang pagharang/paghadlang ni $1. Ito ang ibinigay na dahilan: ''$2''.
+Ginawa ni $1 ang pagharang/paghadlang.
+Ito ang ibinigay na dahilan: ''$2''.
 
 * Simula ng pagharang/paghadlang: $8
 * Katapusan ng pagharang/paghadlang: $6
 * Ang hinarang/hinadlangan ay si: $7
 
-Maaari kang makipag-ugnayan kay $1 o sa iba pang [[{{MediaWiki:Grouppage-sysop}}|tagapangasiwa]] upang pagusapan ang pagharang/paghadlang na ito.
-Hindi mo magagamit ang kasangkapang-katangiang 'magpadala ng e-liham sa tagagamit' hangga't hindi tinutukoy ang isang tanggap na adres ng e-liham sa iyong [[Special:Preferences|mga kagustuhan]] at hindi ka pa hinaharangan/hinahadlangan sa paggamit nito.
-Ang pangkasalukuyang adres ng IP mo ay $3, at ang ID ay #$5.
+Maaari kang makipag-ugnayan kay $1 o sa ibang [[{{MediaWiki:Grouppage-sysop}}|tagapangasiwa]] upang pagusapan ang pagharang/paghadlang na ito.
+Hindi mo magagamit ang kasangkapang-katangiang 'magpadala ng e-liham sa tagagamit' hangga't hindi tinutukoy ang isang tanggap na direksiyong e-liham sa iyong [[Special:Preferences|mga kagustuhan]] at hindi ka pa hinaharangan/hinahadlangan sa paggamit nito.
+Ang kasalukuyan mong direksiyong IP ay $3, at ang ID ng pagharang/paghadlang ay #$5.
 Pakisama ang lahat ng mga detalye sa anumang mga pagtatanong na ginagawa/gagawin mo.",
 'autoblockedtext' => 'Kusang hinadlangan/hinarang ang adres ng IP mo dahil ginamit ito ng ibang tagagamit, na hinadlangan/hinarang ni $1.
 Ang ibinigay na dahilan ay:
@@ -791,12 +810,12 @@ Pakisuri kung ibig mong likhain/baguhin ang pahinang ito.',
 'userpage-userdoesnotexist-view' => 'Hindi nakatala ang kuwenta ng tagagamit na "$1".',
 'blocked-notice-logextract' => 'Kasalukuyang hinarang ang tagagamit na ito.
 Ang pinakahuling entrada sa talaan  ng pagharang ay ibinigay sa baba para sa inyong pagsasangguni:',
-'clearyourcache' => "'''Tandaan: Pagkatapos magtala, baka kailangan mong linisin ang baunan ng iyong pambasa-basa upang makita ang mga pagbabago.'''
-'''Firefox / Safari:''' Panatilihing nakapindot ang ''Shift'' habang kiniklik ang ''Reload'', o pindutin ang ''Ctrl-F5'' o ''Ctrl-R'' (''Command-R'' sa isang Mac)
-'''Google Chrome:''' Pindutin ang ''Ctrl-Shift-R'' (''Command-Shift-R'' sa isang Mac)
-'''Internet Explorer:''' Panatilihing nakapindot ang ''Ctrl'' habang kiniklik ang ''Refresh'', o pindutin ang ''Ctrl-F5''.
-'''Konqueror:''' I-klik ang ''Reload'' o pindutin ang ''F5''
-'''Opera:''' Linisin ang baunan sa ''Tools → Preferences''",
+'clearyourcache' => "'''Paunawa: Pagkatapos magsagip, baka kailangan mong laktawan ang taguan ng pantingin-tingin mo upang makita ang mga pagbabago.
+'''Firefox / Safari:''' Panatilihin ang pagpindot sa ''Shift'' habang nilalagitik ang ''Reload'', o pindutin ang ''Ctrl-F5'' o ''Ctrl-R'' (''⌘-R'' sa Mac)
+'''Google Chrome:''' Pindutin ang ''Ctrl-Shift-R'' (''⌘-Shift-R'' sa Mac)
+'''Internet Explorer:''' Panatilihin ang pagpindot sa ''Ctrl'' habang nilalagitik ang ''Refresh'', o pindutin ang ''Ctrl-F5''
+'''Konqueror:''' Lagitikin ang ''Reload'' o pindutin ang ''F5''
+'''Opera:''' Linisin ang taguan sa ''Tools → Preferences''",
 'usercssyoucanpreview' => "'''Balato:''' Gamitin ang pindutang \"{{int:showpreview}}\" upang masubok ang bago mong CSS bago sagipin.",
 'userjsyoucanpreview' => "'''Balato:''' Gamitin ang pindutang \"{{int:showpreview}}\" upang masubok ang bago mong JavaScript bago sagipin.",
 'usercsspreview' => "'''Tandaan mong paunang tingin pa lamang ito ng iyong CSS na pantagagamit.'''
@@ -811,8 +830,9 @@ Ang pinakahuling entrada sa talaan  ng pagharang ay ibinigay sa baba para sa iny
 Tandaang gumagamit ang pinasadyang mga pahinang .css at .js ng mga pamagat na may maliliit na mga titik, halimbawa na ang {{ns:user}}:Foo/vector.css na taliwas sa {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Naisapanahon na)',
 'note' => "'''Paunawa:'''",
-'previewnote' => "'''Isang lamang itong paunang tingin;
-hindi pa nasasagip ang mga pagbabago!'''",
+'previewnote' => "'''Tandaan na isa lamang itong paunang tingin.'''
+Hindi pa nasasagip ang mga binago mo!",
+'continue-editing' => 'Ipagpatuloy ang pamamatnugot',
 'previewconflict' => 'Ipinamamalas ng paunang tinging ito ang teksto sa loob ng pangitaas na pook-patnugutan ng teksto ayon sa lilitaw na anyo nito kapag pinili mo ang pagsagip.',
 'session_fail_preview' => "'''Paumanhin! Hindi namin maproseso ang iyong pagbabago hinggil sa pagkawala ng sesyon ng datos.
 Paki ulit muli. Kung hindi ito gumana, subukang umalis sa pagkalagda at bumalik muli.'''",
@@ -827,6 +847,7 @@ Tinanggihan ang pagbabago upang maiwasan ang korapsyon ng teksto ng artikulo.
 Kadalasang nangyayari ito kapag gumagamit ka ng masurot na serbisyo ng hindi-nakikilalang apoderadong (''anonymous proxy'') nasa web.",
 'edit_form_incomplete' => "'''Ilan sa mga bahagi ng pormularyong pampatnugot ay hindi nakarating sa tagapaghain; suriing muli na ang iyong mga pagbabago ay buo at subukang muli.'''",
 'editing' => 'Binabago ang $1',
+'creating' => 'Nililikha ang $1',
 'editingsection' => 'Binabago ang $1 (bahagi)',
 'editingcomment' => 'Binabago ang $1 (bagong seksyon)',
 'editconflict' => 'Alitan sa pagbabago: $1',
@@ -850,8 +871,8 @@ Nangangako ka rin sa amin na ikaw mismo ang sumulat nito, sumipi/kumopya nito mu
 Kung ayaw mong mabago nang labis-labis ang mga isinulat mo, mas mabuting huwag mo na lamang ipasa iyan dito.<br />
 Nangangako ka rin sa amin na ikaw ang mismong sumulat nito, o sinipi/kinopya mo ito mula sa isang pinagmulang nasa dominyo na ng publiko o katulad (tingnan ang $1 para sa mga detalye).
 '''HUWAG MAGTALA NG AKDANG NAKAKARAPATANG-ARI (NAKAKOPIRAYT) NA HINDI MUNA HUMIHINGI NG PAHINTULOT!'''",
-'longpageerror' => "'''KAMALIAN: May habang $1 ''kilobyte'' ang ipinasa mong teksto, na mas mahaba kaysa $2 ''kilobyte'' na siyang pinakamataas na nakatakdang halaga.
-Hindi ito masasagip.'''",
+'longpageerror' => "'''Kamalian: May haba na {{PLURAL:$1|isang kilobyte|$1 mga kilobyte}} ang ipinasa mong teksto, na mas mahaba kaysa sa pinakamataas na nakatakdang halaga na {{PLURAL:$2|isang kilobyte|$2 mga kilobyte}}.''' 
+Hindi ito masasagip.",
 'readonlywarning' => "'''BABALA: Ikinandado ang kalipunan ng dato para sa gawaing pampagpapanatili, kaya't hindi mo pa masasagip ang mga pagbabagong ginawa mo ngayon.
 Maaaring ibigin mong gupitin at idikit ang teksto patungo sa isang talaksang pangteksto at sagipin ito mamaya.'''
 
@@ -894,6 +915,7 @@ Tila binura na ito.',
 'edit-no-change' => 'Binalewala ang pagbabago mo, dahil walang pagbabagong ginawa sa teksto.',
 'edit-already-exists' => 'Hindi makalikha ng isang bagong pahina.
 Umiiral na ito.',
+'defaultmessagetext' => 'Nakatakdang teksto ng mensahe',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Babala: Naglalaman ang pahinang ito ng napakaraming mamahaling mga tawag na pantungkulin.
@@ -908,6 +930,12 @@ Hindi isasama ang ilang mga suleras.',
 'parser-template-loop-warning' => 'Nadiskubreng silo ng suleras: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Lumabis na sa nakatakdang lalim ng rekursyon (pormula) ng suleras ($1)',
 'language-converter-depth-warning' => 'Lumampas sa ($1) ang hangganan ng lalim ng pampalit ng wika',
+'node-count-exceeded-category' => 'Mga pahina kung saan nalampasan ang bilang ng buko',
+'node-count-exceeded-warning' => 'Lumampas ang pahina sa bilang ng buko',
+'expansion-depth-exceeded-category' => 'Mga pahina kung saan lampas ang lalim ng paglawak',
+'expansion-depth-exceeded-warning' => 'Lumampas ang pahina sa lalim ng paglawak',
+'parser-unstrip-loop-warning' => 'Napansin ang silo ng hindi pagtalop',
+'parser-unstrip-recursion-limit' => 'Nalampasan ang hangganan ng rekursiyon ng hindi pagtalop ($1)',
 
 # "Undo" feature
 'undo-success' => 'Matatanggal ang pagbabago.
@@ -962,28 +990,28 @@ Subukang [[Special:Search|hanapin sa wiki]] para sa mga kaugnay na mga bagong pa
 'rev-deleted-user-contribs' => '[itinanggal ang bansag o adres ng IP - itinago ang pagbabago mula sa mga ambag]',
 'rev-deleted-text-permission' => "Itong pagbabago ng pahina ay '''ibinura'''.
 Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagbubura].",
-'rev-deleted-text-unhide' => "Itong pagbabago ng pahina ay '''ibinura'''.
-Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagbubura].
-Bilang isang tagapangasiwa, maaari mo pang [$1 tingnan ang pagbabagong ito] kung nais mong tumuloy.",
-'rev-suppressed-text-unhide' => "Itong pagbabago ng pahina ay '''isinugpo'''.
-Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].
-Bilang isang tagapangasiwa, maaari mo pang [$1 tingnan ang pagbabagong ito] kung nais mong tumuloy.",
-'rev-deleted-text-view' => "Itong pagbabago ng pahina ay '''ibinura'''.
-Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tala ng pagbubura].",
-'rev-suppressed-text-view' => "Itong pagbabago ng pahina ay '''isinugpo'''.
-Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].",
+'rev-deleted-text-unhide' => "'''Binura''' ang pahinang ito ng pagbabago.
+Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].
+Maaari mo pa ring [$1 tingnan ang pagbabagong ito] kung nais mong magpatuloy.",
+'rev-suppressed-text-unhide' => "Ang pagbabagong ito ng pahina ay '''pinigilan'''.
+Maaaring matagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagsupil].
+Maaari mo pa ring [$1 tingnan ang rebisyong ito] kung nais mong magpatuloy.",
+'rev-deleted-text-view' => "Ang pagbabagong ito sa pahina ay '''binura'''.
+Maaarin mo itong makita; matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
+'rev-suppressed-text-view' => "Ang pagbabagong ito sa pahina ay '''pinigilan'''.
+Maaari mo itong makita; matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagsupil].",
 'rev-deleted-no-diff' => "Hindi mo maaaring makita ang pagkakaibang ito dahil '''binura na''' ang isa sa mga pagbabago.  Matatagpuan ang mga detalye mula sa loob ng [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
 'rev-suppressed-no-diff' => "Hindi mo maaaring tingnan ang pagkakaibang ito dahil '''ibinura''' ang isa sa mga pagbabago.",
-'rev-deleted-unhide-diff' => "'''Binura''' ang isa sa mga pagbabago ng pagkakaibang ito.
-Maaaring matagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].
-Bilang isang tagapangasiwa, maaari mo pa ring [$1 tingnan ang pagkakaibang ito] kung nais mong magpatuloy.",
-'rev-suppressed-unhide-diff' => "Isa sa mga pagbabago ng pagkakaibang ito ay '''isinugpo'''.
-Maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].
-Bilang isang tagapangasiwa, maaari mo pang [$1 tingnan ang pagbabagong ito] kung nais mong tumuloy.",
-'rev-deleted-diff-view' => "Isa sa mga pagbabago ng pagkakaibang ito ay '''binura'''.
-Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tala ng pagbubura].",
-'rev-suppressed-diff-view' => "Isa sa mga pagbabago ng pagkakaibang ito ay '''isinugpo'''.
-Bilang isang tagapangasiwa, maaari mo itong makita; maaaring hanapin ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tala ng pagsusugpo].",
+'rev-deleted-unhide-diff' => "'''Nabura''' ang isa sa mga pagbabago para sa kaibahang ito.
+Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].
+Maaari mo pa ring [$1 makita ang pagkakaibang ito] kung nais mong magpatuloy.",
+'rev-suppressed-unhide-diff' => "Ang isa sa mga pagbabago para sa kaibahang ito ay '''pinigilan'''.
+Matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagsupil].
+Maaari mo pa ring [$1 tingnan ang pagbabagong ito] kung nais mong magpatuloy.",
+'rev-deleted-diff-view' => "'''Nabura''' ang isa sa mga pagbabago para sa kaibahang ito.
+Makikita mo pa rin pagkakaibang ito; matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} talaan ng pagbura].",
+'rev-suppressed-diff-view' => "'''Pinigalan''' ang isa sa mga pagbabago para sa kaibahang ito.
+Makikita mo ang pagkakaibang ito; matatagpuan ang mga detalye sa [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} talaan ng pagsupil].",
 'rev-delundel' => 'ipakita/itago',
 'rev-showdeleted' => 'ipakita',
 'revisiondelete' => 'Burahin/ibalik ang mga pagbabago',
@@ -1051,8 +1079,8 @@ Pakitingnan ang mga talaan.',
 
 # Suppression log
 'suppressionlog' => 'Tala ng pagpipigil',
-'suppressionlogtext' => "Nasa ibaba ang isang tala ng mga pagbura at mga pagharang/paghadlang na kinakasangkutan ng nilalamang nakatago sa mga ''sysop''.
-Tingnan ang [[Special:IPBlockList|talaan ng hinarang na/hinadlangang IP]] para sa isang talaan ng mga pangkasalukuyan at gumaganang mga pinagbawalan at mga pagharang/paghadlang.",
+'suppressionlogtext' => 'Nasa ibaba ang isang talaan ng mga pagbura at mga pagharang na kinakasangkutan ng nilalamang nakatago sa mga tagapangasiwa.
+Tingnan ang [[Special:BlockList||talaan ng pagharang]] para sa isang talaan ng mga pangkasalukuyang gumaganang mga pinagbawalan at mga pagharang.',
 
 # History merging
 'mergehistory' => 'Pagsanibin mga pahina ng kasaysayan',
@@ -1084,7 +1112,9 @@ Tiyakin na ang pagbabago ay makapagpapanatili ng pagkakatuluy-tuloy ng pahinang
 'mergelogpagetext' => 'Nasa ibaba ang isang talaan ng mga pinakakamakailan lamang na mga pagsasanib ng isang kasaysayan ng pahina patungo sa isa pa.',
 
 # Diffs
-'history-title' => 'Kasaysayan ng pagbabago ng "$1"',
+'history-title' => 'Kasaysayan sa pagbago ng "$1"',
+'difference-title' => 'Pagkakaiba sa pagitan ng mga pagbago ng "$1"',
+'difference-title-multipage' => 'Kaibahan sa pagitan ng mga pahinang "$1" at "$2"',
 'difference-multipage' => '(Pagkakaiba sa pagitan ng mga pahina)',
 'lineno' => 'Linya $1:',
 'compareselectedversions' => 'Paghambingin ang mga napiling bersyon',
@@ -1165,10 +1195,11 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'qbsettings-fixedright' => 'Inayos ang kanan',
 'qbsettings-floatingleft' => 'Kaliwa lumulutang',
 'qbsettings-floatingright' => 'Kanan lumulutang',
+'qbsettings-directionality' => 'Naayos na, ayon sa kapupuntahan ng panitik ng wika mo',
 
 # Preferences page
 'preferences' => 'Mga kagustuhan',
-'mypreferences' => 'Aking mga kagustuhan',
+'mypreferences' => 'Mga nais ko',
 'prefs-edits' => 'Bilang ng mga pagbabago:',
 'prefsnologin' => 'Hindi nakalagda/nakatala',
 'prefsnologintext' => 'Kailangan mong <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} lumagda/tumala]</span> para makapagtakda ng mga kagustuhang ng tagagamit.',
@@ -1179,17 +1210,19 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'prefs-beta' => 'Mga kaangkapang-katangiang pang-beta',
 'prefs-datetime' => 'Petsa at oras',
 'prefs-labs' => 'Mga kasangkapang-katangiang pang-Labs',
+'prefs-user-pages' => 'Mga pahina ng tagagamit',
 'prefs-personal' => 'Sanligang pangkatangian ng tagagamit',
 'prefs-rc' => 'Kamakailan lamang na mga pagbabago',
 'prefs-watchlist' => 'Talaan ng mga binabantayan',
 'prefs-watchlist-days' => 'Mga araw na ipapakita sa talaan ng mga binabantayan:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Pinakamataas ang $1 {{PLURAL:$1|araw|mga araw}}',
 'prefs-watchlist-edits' => 'Pinakamaraming bilang ng mga pagbabagong ipapakita sa pinalawak na talaan ng mga binabantayan:',
 'prefs-watchlist-edits-max' => 'Pinakamataas na bilang: 1000',
 'prefs-watchlist-token' => 'Balap ng talaan ng mga binabantayan:',
 'prefs-misc' => 'Bala-balaki',
 'prefs-resetpass' => 'Baguhin ang hudyat',
-'prefs-setemail' => 'Itakda ang bagong tirahan ng e-liham $1',
+'prefs-changeemail' => 'Baguhin ang direksiyong e-liham',
+'prefs-setemail' => 'Magtakda ng direksiyong e-liham',
 'prefs-email' => 'Mga pagpipilian para sa e-liham',
 'prefs-rendering' => 'Hitsura',
 'saveprefs' => 'Sagipin',
@@ -1211,7 +1244,7 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'savedprefs' => 'Nasagip na ang mga kagustuhan mo.',
 'timezonelegend' => 'Sona ng oras:',
 'localtime' => 'Lokal na oras:',
-'timezoneuseserverdefault' => 'Gamitin ang itinakda ng serbidor',
+'timezoneuseserverdefault' => 'Gamitin ang katakdaan ng wiki ($1)',
 'timezoneuseoffset' => "Iba pa (tukuyin ang pambawi o ''offset'')",
 'timezoneoffset' => "Pambawi/pambalanse (''offset'')¹:",
 'servertime' => 'Oras sa serbidor',
@@ -1246,7 +1279,8 @@ Hindi ito maibabalik sa dating gawi.',
 'prefs-registration' => 'Oras ng pagtatala:',
 'yourrealname' => 'Tunay na pangalan:',
 'yourlanguage' => 'Wika:',
-'yourvariant' => 'Naiiba pa:',
+'yourvariant' => 'Iba pang anyo ng wika ng nilalaman:',
+'prefs-help-variant' => 'Ang nais mong kaibahan o ortograpiya sa pagpapakita ng mga pahina ng nilalaman ng wiking ito.',
 'yournick' => 'Panglagda:',
 'prefs-help-signature' => 'Ang mga puna sa mga pahina ng usapan ay dapat na lagdaan ng "<nowiki>~~~~</nowiki>" na magiging lagda mo at marka ng oras.',
 'badsig' => 'Hindi tamang hilaw na lagda.
@@ -1263,7 +1297,7 @@ Dapat na mas mababa kaysa $1 {{PLURAL:$1|panitik|mga panitik}}.',
 Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para iyong mga ginawa.",
 'prefs-help-email' => 'Hindi talaga kailangang may tirahan ng e-liham, subalit kailangan para sa muling pagtatakda ng hudyat, kung makalimutan mo ang hudyat mo.',
 'prefs-help-email-others' => 'Mapipili mo rin na makipag-ugnayan sa iyo ang iba sa pamamagitan ng iyong pahina ng tagagamit o usapan na hindi kailangang ilantad ang katauhan mo.',
-'prefs-help-email-required' => 'Kailangan ang adres ng e-liham.',
+'prefs-help-email-required' => 'Kailangan ang direksiyong e-liham.',
 'prefs-info' => 'Payak na kabatiran',
 'prefs-i18n' => 'Internasyonalisasyon',
 'prefs-signature' => 'Lagda',
@@ -1280,15 +1314,15 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'prefs-diffs' => 'Mga pagkakaiba',
 
 # User preference: e-mail validation using jQuery
-'email-address-validity-valid' => 'Mukhang katanggap-tanggap ang tirahan ng e-liham',
-'email-address-validity-invalid' => 'Magpasok ng isang tanggap na tirahan ng e-liham',
+'email-address-validity-valid' => 'Mukhang katanggap-tanggap ang direkisyong e-liham',
+'email-address-validity-invalid' => 'Magpasok ng isang tanggap na direksiyong e-liham',
 
 # User rights
 'userrights' => 'Pamamahala ng mga karapatan ng tagagamit',
 'userrights-lookup-user' => 'Pamahalaan ang mga pangkat ng tagagamit',
 'userrights-user-editname' => 'Magpasok ng isang pangalan ng tagagamit:',
 'editusergroup' => 'Baguhin ang mga pangkat ng tagagamit',
-'editinguser' => "Binabago ang mga karapatang pangtagagamit ng tagagamit na si '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "Binabago ang mga karapatang pangtagagamit ng tagagamit na si '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'Baguhin ang mga pangkat ng tagagamit',
 'saveusergroups' => 'Sagipin ang mga pangkat ng tagagamit',
 'userrights-groupsmember' => 'Kasapi ng:',
@@ -1301,7 +1335,7 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'userrights-no-interwiki' => 'Wala kang pahintulot na baguhin ang mga karapatan ng tagagamit sa ibang mga wiki.',
 'userrights-nodatabase' => 'Hindi umiiral o hindi lokal ang kalipunan ng datos na $1',
 'userrights-nologin' => 'Kailangang [[Special:UserLogin|nakalagda ka]] bilang tagapangasiwa upang maitalaga ang mga karapatan ng tagagamit.',
-'userrights-notallowed' => 'Walang pahintulot ang iyong akawnt na magtalaga ng mga karapatan ng tagagamit.',
+'userrights-notallowed' => 'Walang pahintulot ang akawnt mo na magdagdag o magtanggal ng mga karapatan ng tagagamit.',
 'userrights-changeable-col' => 'Mga pangkat na maaari mong baguhin',
 'userrights-unchangeable-col' => 'Mga pangkat na hindi mo mababago',
 
@@ -1311,16 +1345,16 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'group-autoconfirmed' => 'Mga tagagamit na nakompirma sa kusang paraan (autokompirmasyon)',
 'group-bot' => "Mga ''bot''",
 'group-sysop' => 'Mga tagapangasiwa',
-'group-bureaucrat' => 'Mga burokrato',
+'group-bureaucrat' => 'Mga burokrata',
 'group-suppress' => 'Mga tagapagingat-tago',
 'group-all' => '(lahat)',
 
-'group-user-member' => 'Tagagamit',
-'group-autoconfirmed-member' => 'Kusang nakumpirmang tagagamit',
-'group-bot-member' => 'Bot',
-'group-sysop-member' => 'tagapangasiwa',
-'group-bureaucrat-member' => 'Burokrato',
-'group-suppress-member' => 'Tagapagingat-tago',
+'group-user-member' => '{{GENDER:$1|tagagamit}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|tagagamit na kusang natiyak}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-sysop-member' => '{{GENDER:$1|tagapangasiwa}}',
+'group-bureaucrat-member' => '{{GENDER:$1|burokrata}}',
+'group-suppress-member' => '{{GENDER:$1|tagapangalingat}}',
 
 'grouppage-user' => '{{ns:project}}:Mga tagagamit',
 'grouppage-autoconfirmed' => '{{ns:project}}:Kusang nakumpirmang mga tagagamit',
@@ -1388,12 +1422,13 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'right-siteadmin' => 'Ikandado at alisin ang pagkakakandado ng kalipunan ng dato',
 'right-override-export-depth' => 'Iluwas ang mga pahina na kabilang ang mga pahinang nakakawing magpahanggang sa isang lalim na 5',
 'right-sendemail' => 'Magpadala ng e-liham sa ibang mga tagagamit',
-'right-passwordreset' => 'Muling itinakdang hudyat para sa isang tagagamit ([[Special:PasswordReset|natatanging pahina]])',
+'right-passwordreset' => 'Tingnan ang mga e-liham ng muling pagtatakda ng hudyat',
 
 # User rights log
 'rightslog' => 'Tala ng mga karapatan ng tagagamit',
 'rightslogtext' => 'Isa itong tala ng mga pagbabago sa mga karapatan ng tagagamit.',
 'rightslogentry' => 'binago ang kasapiang pampangkat para kay $1 mula sa $2 patungong $3',
+'rightslogentry-autopromote' => 'ay kusang naitaas ang ranggo mula $2 upang maging $3',
 'rightsnone' => '(wala)',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1421,6 +1456,7 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'action-suppressionlog' => 'tingnan itong pribadong tala',
 'action-block' => 'harangin sa paggawa ng pagbabago ang tagagamit na ito',
 'action-protect' => 'baguhin ang mga antas ng pagsasanggalang para sa pahinang ito',
+'action-rollback' => 'mabilisang igulong na pabalik ang mga pagbabago ng huling tagagamit na namatnugot ng isang partikular na pahina',
 'action-import' => 'angkatin itong pahina mula sa ibang wiki',
 'action-importupload' => 'angkatin ang pahinang ito mula sa isang ikinargang talaksan',
 'action-patrol' => 'tatakan bilang napatrolya na ang mga pagbabagong ginawa ng iba',
@@ -1430,6 +1466,7 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'action-userrights' => 'baguhin ang lahat ng karapatan ng tagagamit',
 'action-userrights-interwiki' => 'baguhin ang mga karapatan ng tagagamit na nasa ibang mga wiki',
 'action-siteadmin' => 'ikandado o tanggalin ang pagkakakandado ng kalipunan ng dato',
+'action-sendemail' => 'magpadala ng mga e-liham',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
@@ -1461,9 +1498,11 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'number_of_watching_users_pageview' => '[$1 binabantayang {{PLURAL:$1|tagagamit|mga tagagamit}}]',
 'rc_categories' => 'Itakda lang sa mga kaurian (ihiwalay sa pamamagitan ng "|")',
 'rc_categories_any' => 'Kahit ano',
+'rc-change-size-new' => '$1 {{PLURAL:$1|byte|mga byte}} pagkaraan ng pagbabago',
 'newsectionsummary' => '/* $1 */ bagong seksyon',
 'rc-enhanced-expand' => 'Ipakita ang mga detalye (kailangan ng JavaScript)',
 'rc-enhanced-hide' => 'Itago ang mga detalye',
+'rc-old-title' => 'dating nalikha bilang "$1"',
 
 # Recent changes linked
 'recentchangeslinked' => 'Kaugnay na mga pagbabago',
@@ -1513,6 +1552,7 @@ Para maisama ang isang talaksan sa loob ng isang pahina, gumamit ng isang kawing
 'ignorewarnings' => 'Balewalain ang anumang mga babala',
 'minlength1' => 'Dapat may kahit na isang titik lang ang mga pangalan ng talaksan.',
 'illegalfilename' => 'Ang pangalan ng talaksan (filename) na "$1" ay mayroon mga karakter na hindi pinapahintulot bilang pamagat ng isang pahina. Paki palitan ang pangalan at subukang ikarga muli.',
+'filename-toolong' => 'Ang mga pangalan ng talaksan ay hindi maaaring maging mas mahaba kaysa sa 240 mga byte.',
 'badfilename' => 'Pinalitan ang pangalan ng talaksan na naging "$1".',
 'filetype-mime-mismatch' => 'Hindi tumutugma ang dugtong ng talaksan na ".$1" sa napansing uri ng MIME ng talaksan ($2).',
 'filetype-badmime' => 'Hindi pinapahintulutang maikarga ang uring "$1" ng mga talaksang MIME.',
@@ -1538,6 +1578,7 @@ Ang mga pinapayagang {{PLURAL:$3|uri ng talaksan ay ang|mga uri ng talaksan ay a
 ang talaksang ito ay $2.',
 'largefileserver' => 'Mas malaki ang talaksan kaysa nakatakdang papahintulutan ng serbidor.',
 'emptyfile' => 'Mukhang walang laman ang talaksan (file) na ikinarga mo. Maaaring dahil ito sa maling pagkapasok ng pangalan ng talaksan.  Paki tingin kung gusto mo talagang ikarga ang talaksan na ito.',
+'windows-nonascii-filename' => 'Ang wiking ito ay hindi nagsusuporta ng mga pangalan ng talaksan na mayroong natatanging mga panitik.',
 'fileexists' => "Mayroon ng talaksan na ganitong pangalan, paki tingin ang '''<tt>[[:$1]]</tt>''' kung tiyak ka na babaguhin ito.
 [[$1|thumb]]",
 'filepageexists' => "Ang pahina ng paglalarawan para sa talaksan na ito ay nalikha na sa '''<tt>[[:$1]]</tt>''', ngunit walang talaksang umiiral na may ganitong pangalan.
@@ -1545,8 +1586,8 @@ Hindi lilitaw ang buod na ipapasok mo sa pahina ng paglalarawan.
 Para lumitaw ang buod mo doon, kailangan mong kinakamay na baguhin ito.
 [[$1|thumb]]",
 'fileexists-extension' => "Mayroon talaksan na ganitong pangalan: [[$2|thumb]]
-* Pangalan ng ikakargang talaksan: '''<tt>[[:$1]]</tt>'''
-* Pangalan ng mayroon nang talaksan: '''<tt>[[:$2]]</tt>'''
+* Pangalan ng ikinakargang talaksan: '''<tt>[[:$1]]</tt>'''
+* Pangalan ng umiiral na talaksan: '''<tt>[[:$2]]</tt>'''
 Pumili ng ibang pangalan.",
 'fileexists-thumbnail-yes' => "Mukhang pinaliit ''(thumbnail)'' na larawan ang talaksan. [[$1|thumb]]
 Paki tingin ang talaksan '''<tt>[[:$1]]</tt>'''.
@@ -1603,6 +1644,48 @@ Kapag nagpatuloy ang suliranin, makipagugnayan sa isang [[Special:ListUsers/syso
 'upload-too-many-redirects' => 'Naglalaman ng napakaraming panlipat ng pupuntahan ang URL',
 'upload-unknown-size' => 'Hindi nalalamang laki',
 'upload-http-error' => 'Naganap ang isang kamaliang pang-HTTP: $1',
+'upload-copy-upload-invalid-domain' => 'Hindi makakakuha ng mga pagkakarga ng kopya mula sa nasasakupang ito.',
+
+# File backend
+'backend-fail-stream' => 'Hindi mapadaloy ang talaksang $1.',
+'backend-fail-backup' => 'Hindi na makatigan ng kopya ang talaksang $1.',
+'backend-fail-notexists' => 'Hindi umiiral ang talaksang $1.',
+'backend-fail-hashes' => 'Hindi makuha ang mga tadtad ng talaksan para sa paghahambing.',
+'backend-fail-notsame' => 'Isang hindi kamukhang talaksan ang umiiral na sa $1.',
+'backend-fail-invalidpath' => 'Ang $1 ay hindi isang katanggap-tanggap na landas ng imbakan.',
+'backend-fail-delete' => 'Hindi mabura ang talaksang $1.',
+'backend-fail-alreadyexists' => 'Umiiral na ang pahinang $1.',
+'backend-fail-store' => 'Hindi maimbak ang talaksang $1 sa $2.',
+'backend-fail-copy' => 'Hindi makopya ang talaksang $1 sa $2.',
+'backend-fail-move' => 'Hindi mailipat ang talaksang $1 sa $2.',
+'backend-fail-opentemp' => 'Hindi mabuksan ang pansamantalang talaksan.',
+'backend-fail-writetemp' => 'Hindi maisulat sa pansamantalang talaksan.',
+'backend-fail-closetemp' => 'Hindi maisara ang pansamantalang talaksan.',
+'backend-fail-read' => 'Hindi mabasa ang talaksang $1.',
+'backend-fail-create' => 'Hindi maisulat ang talaksang $1.',
+'backend-fail-maxsize' => 'Hindi maisulat ang talaksang $1 dahil mas malaki ito kaysa sa {{PLURAL:$2|isang byte|$2 mga byte}}.',
+'backend-fail-readonly' => 'Ang hulihang likuran ng pag-iimbak na "$1" ay kasalukuyang mababasa lamang. Ang dahilang ibinigay ay: "\'\'$2\'\'"',
+'backend-fail-synced' => 'Ang talaksang "$1" ay nasa isang katayuang pabagu-bago sa loob ng mga panloob na hulihang likuran ng pag-iimbak',
+'backend-fail-connect' => 'Hindi makakunekta sa hulihang panlikod ng imbakan na "$1".',
+'backend-fail-internal' => 'Naganap ang isang hindi mapag-alamang kamalian sa huling likuran ng imbakan na "$1".',
+'backend-fail-contenttype' => 'Hindi matukoy ang uri ng nilalaman ng talaksang maiimbak sa "$1".',
+'backend-fail-batchsize' => 'Ang hulihang panlikuran ay nabigyan ng isang pulutong na $1 talaksan ng {{PLURAL:$1|operasyon|mga operasyon}}; ang hangganan ay $2 {{PLURAL:$2|operasyon|mga operasyon}}.',
+'backend-fail-usable' => 'Hindi maisulat ang talaksang $1 dahil sa hindi sapat na mga kapahintulutan o nawawalang mga direktoryo/mga lalagyan.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'Hindi makakunekta sa kalipunang pandato ng talaarawan para sa hulihang panlikuran ng imbakang "$1".',
+'filejournal-fail-dbquery' => 'Hindi maisapanahon ang kalipunan ng dato ng talaarawan para sa hulihang panlikod ng imbakang "$1".',
+
+# Lock manager
+'lockmanager-notlocked' => 'Hindi mabuksan ang "$1"; hindi ito nakakandado.',
+'lockmanager-fail-closelock' => 'Hindi maisara ang talaksan ng kandado para sa "$1".',
+'lockmanager-fail-deletelock' => 'Hindi mabura ang talaksan ng kandado para sa "$1".',
+'lockmanager-fail-acquirelock' => 'Hindi makamtan ang kandado para sa "$1".',
+'lockmanager-fail-openlock' => 'Hindi mabuksan ang talaksan ng kandado para sa "$1".',
+'lockmanager-fail-releaselock' => 'Hindi mapakawalan ang kandado para sa "$1".',
+'lockmanager-fail-db-bucket' => 'Hindi sapat na makaugnay sa mga kalipunang pandato ng kandado sa timba na $1.',
+'lockmanager-fail-db-release' => 'Hindi mapakawalan ang mga kandado sa kalipunan ng dato na $1.',
+'lockmanager-fail-svr-release' => 'Hindi mapakawalan ang mga kandado sa tagapaghain na $1.',
 
 # ZipDirectoryReader
 'zip-file-open-error' => 'Nakaranas ng isang kamalian habang binubuksan ang talaksan para sa mga pagsusuri ng ZIP.',
@@ -1620,12 +1703,13 @@ Hindi ito maaaring suriin ng tama para sa kaligtasan.',
 'uploadstash-badtoken' => 'Hindi matagumpay ang pagsasagawa ng mga galaw, maaaring dahil wala nang bisa ang iyong mga katibayan ng kapangyarihang mamatnugot.  Subukang muli.',
 'uploadstash-errclear' => 'Nabigo ang paghawi ng mga talaksan.',
 'uploadstash-refresh' => 'Sariwain ang talaan ng mga talaksan',
+'invalid-chunk-offset' => 'Hindi katanggap-tanggap na pagbawi ng tipak',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Hindi pinayagan ang pagpunta',
-'img-auth-nopathinfo' => 'Nawawalang PATH_INFO.
-Ang tagapaghain mo ay hindi nakatakdang na maipasa ang kabatirang ito.
-Maaaring pang-CGI ito at hindi makatangkilik ng img_auth.
+'img-auth-nopathinfo' => 'Nawawala ang PATH_INFO.
+Ang tagapaghain mo ay hindi nakatakda na magpasa ng ganitong kabatiran.
+Maaaring pang-CGI ito at hindi sumusuporta ng img_auth.
 Tingnan ang https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'img-auth-notindir' => 'Ang hiniling na daan ay wala sa loob ng isinaayos na direktoryo ng pagkarga.',
 'img-auth-badtitle' => 'Hindi nagawang makabuo ng tanggap na pamagat mula sa "$1".',
@@ -1659,17 +1743,16 @@ Pakisuring muli kung tama ang URL at kung buhay ang sityo/sayt.',
 Pakisuri kung buhay ang sayt, maghintay ng kaunti at subukin uli.
 Maaaring ibigin mong subukin uli sa isang hindi gaanong abalang panahon.',
 
-'license' => 'Paglilisensya:',
-'license-header' => 'Paglilisensya',
+'license' => 'Paglilisensiya:',
+'license-header' => 'Paglilisensiya',
 'nolicense' => 'Walang napili',
 'license-nopreview' => '(Walang makuhang paunang tingin)',
 'upload_source_url' => ' (isang tanggap at napupuntahan ng publikong URL)',
 'upload_source_file' => ' (isang talaksan sa iyong kompyuter)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Ipinapakita nitong natatanging pahinang ang lahat ng naikargang mga talaksan.
-Bilang naitakda ipinapakita sa itaas ng talaan ang huling ikinargang mga talaksan.
-Mababago ang pagkakapangkat-pangkat sa pamamagitan ng pagpindot sa isang paulo ng pahabang kahanayan.',
+'listfiles-summary' => 'Ipinapakita ng natatanging pahinang ito ang lahat ng naikargang mga talaksan.
+Kapag sinala ng tagagamit, tanging mga talaksan lang kung saan nagkarga ang tagagamit na iyan ng pinaka kamakailang bersiyon ng talaksan ang ipinapakita.',
 'listfiles_search_for' => 'Hanapin ang pangalan ng midya:',
 'imgfile' => 'talaksan',
 'listfiles' => 'Talaan ng talaksan',
@@ -1679,7 +1762,7 @@ Mababago ang pagkakapangkat-pangkat sa pamamagitan ng pagpindot sa isang paulo n
 'listfiles_user' => 'Tagagamit',
 'listfiles_size' => 'Sukat',
 'listfiles_description' => 'Paglalarawan',
-'listfiles_count' => 'Mga bersyon',
+'listfiles_count' => 'Mga bersiyon',
 
 # File description page
 'file-anchor-link' => 'Talaksan',
@@ -1698,19 +1781,24 @@ Mababago ang pagkakapangkat-pangkat sa pamamagitan ng pagpindot sa isang paulo n
 'filehist-filesize' => 'Sukat ng talaksan',
 'filehist-comment' => 'Puna/Kumento',
 'filehist-missing' => 'Nawawala ang talaksan',
-'imagelinks' => 'Mga kawing ng talaksan',
+'imagelinks' => 'Paggamit ng talaksan',
 'linkstoimage' => 'Nakakawing ang sumusunod na {{PLURAL:$1|pahina|$1 mga pahina}} sa talaksang ito.',
 'linkstoimage-more' => 'Mahigit sa $1 {{PLURAL:$1|pahina|mga pahina}} ang nakakawing sa talaksang ito.
 Ipinapakita sa sumusunod na talaan ang {{PLURAL:$1|unang pahina lamang|unang $1 mga pahina lamang}} na nakakawing sa talaksang ito.
 Mayroong makukuhang [[Special:WhatLinksHere/$2|buong talaan]].',
 'nolinkstoimage' => 'Walang pahinang nakakawing sa talaksang ito.',
 'morelinkstoimage' => 'Tingnan ang [[Special:WhatLinksHere/$1|mas marami pang mga kawing]] para sa pahinang ito.',
+'linkstoimage-redirect' => '$1 (pagpapapunta ng talaksan sa ibang lugar) $2',
 'duplicatesoffile' => 'Ang sumusunod na {{PLURAL:$1|file is a duplicate|$1 mga talaksan ay mga kapareho}} ng talaksang ito ([[Special:FileDuplicateSearch/$2|mas marami pang mga detalye]]):',
 'sharedupload' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin ng iba pang mga proyekto.',
 'sharedupload-desc-there' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin sa ibang mga proyekto.
 Pakitingnan ang [$2 pahina ng paglalarawan ng talaksan] para sa iba pang kabatiran.',
 'sharedupload-desc-here' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin sa ibang mga proyekto.
 Ang paglalarawang nasa ibabaw ng [$2 pahina ng paglalarawan ng talaksan] nito doon ay ipinapakita sa ibaba.',
+'sharedupload-desc-edit' => 'Ang talaksang ito ay mula sa $1 at maaaring gamitin ng iba pang mga proyekto.
+Marahil ay nais mong baguhin ang paglalarawan doon sa [$2 pahina ng paglalarawan ng talaksan] nito.',
+'sharedupload-desc-create' => 'Ang talaksang ito ay mula sa $1 at maaaring gamitin ng iba pang mga proyekto.
+Marahil ay naisa mong baguhin ang paglalarawan doon sa [$2 pahina ng paglalarawan ng talaksan] nito.',
 'filepage-nofile' => 'Walang talaksang umiiral sa pangalang ito.',
 'filepage-nofile-link' => 'Walang talaksang umiiral sa pangalang ito, ngunit maaari mong [$1 kargahin ito].',
 'uploadnewversion-linktext' => 'Magkarga ng isang bagong bersyon ng talaksang ito',
@@ -1745,6 +1833,7 @@ Ang paglalarawang nasa ibabaw ng [$2 pahina ng paglalarawan ng talaksan] nito do
 ** Nagkadalawang talaksan',
 'filedelete-edit-reasonlist' => 'Baguhin ang mga dahilan ng pagbura',
 'filedelete-maintenance' => 'Pansamantalang hindi pinagana ang pagbura at pagpapnumbalik ng mga talaksan habang nagpapanatili ng kaayusan.',
+'filedelete-maintenance-title' => 'Hindi mabura ang talaksan',
 
 # MIME search
 'mimesearch' => 'Maghanap ng MIME',
@@ -1792,7 +1881,7 @@ Ang paglalarawang nasa ibabaw ng [$2 pahina ng paglalarawan ng talaksan] nito do
 'statistics-users-active-desc' => 'Mga tagagamit na nagsagawa ng isang galaw/gawain sa huling {{PLURAL:$1|araw|$1 mga araw}}',
 'statistics-mostpopular' => 'Mga pinakarinarayong pahina',
 
-'disambiguations' => 'Mga pahina ng paglilinaw',
+'disambiguations' => 'Mga pahinang nakakawing sa mga pahina ng paglilinaw',
 'disambiguationspage' => 'Template:disambig',
 'disambiguations-text' => "Ang sumusunod ay mga pahinang may ugnay (link) sa isang '''pahinang naglilinaw'''.
 Dapat silang umugnay sa tamang paksa<br />
@@ -1840,6 +1929,8 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'wantedpages' => 'Kinakailangang mga pahina',
 'wantedpages-badtitle' => 'Hindi tanggap na pamagat sa loob ng pangkat ng kinalabasan: $1',
 'wantedfiles' => 'Ninanais na mga talaksan',
+'wantedfiletext-cat' => 'Ang sumusunod na mga talaksan ay ginagamit ngunit hindi naman umiiral. Ang mga talaksang nagmumula sa mga repositoryong dayuhan ay maaariing nakalista kahit na umiiral. Ang anumang ganyang mga kamalian sa pagiging positibo ay <del>aalisin</del>. Bilang karagdagan, ang mga pahinang may nakabaon na mga talaksang hindi umiiral ay nakatala sa [[:$1]]',
+'wantedfiletext-nocat' => 'Ginagamit ang sumusunod na mga talaksan ngunit hindi naman umiiral. Ang mga talaksan mula sa mga repositoryong dayuhan ay maaaring nakalista kahit na umiiral. Ang ganyang mga kamalian sa pagiging positibo ay <del>aalisin</del>.',
 'wantedtemplates' => 'Ninanais na mga suleras',
 'mostlinked' => 'Pinakamaraming ugnay sa mga pahina',
 'mostlinkedcategories' => 'Pinakamaraming ugnay sa mga kategorya',
@@ -1848,9 +1939,10 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'mostimages' => 'Pinakamaraming ugnay sa mga larawan',
 'mostrevisions' => 'Mga artikulong may pinakamaraming pagbabago',
 'prefixindex' => 'Lahat ng mga pahinang may unlapi',
+'prefixindex-namespace' => 'Lahat ng mga pahinang may unlapi ($1 puwang ng pangalan)',
 'shortpages' => 'Mga maiikling pahina',
 'longpages' => 'Mga mahahabang pahina',
-'deadendpages' => 'Mga pahinang walang panloob na ugnay (internal link)',
+'deadendpages' => 'Mga pahinang walang kawing panloob (internal link)',
 'deadendpagestext' => "Ang mga sumusunod na mga pahina'y hindi umuugnay sa ibang mga pahina sa wiking ito.",
 'protectedpages' => 'Mga nakaprotektang pahina',
 'protectedpages-indef' => 'Mga walang katiyakang proteksyon lamang',
@@ -1864,7 +1956,7 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'listusers-editsonly' => 'Ipakita lamang ang mga tagagamit na gumawa/nakagawa na ng mga pagbabago',
 'listusers-creationsort' => 'Pagsama-samahin ayon sa petsa ng pagkakalikha',
 'usereditcount' => '$1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
-'usercreated' => 'Nalikha noong $1 sa ika-$2',
+'usercreated' => '{{GENDER:$3|Nalikha}} noong $1 sa ika-$2',
 'newpages' => 'Mga bagong pahina',
 'newpages-username' => 'Bansag:',
 'ancientpages' => 'Mga pinakalumang pahina',
@@ -1891,14 +1983,15 @@ na iba pang impormasyon tungkol sa mga aklat na hinahanap mo:',
 'booksources-invalid-isbn' => 'Tila mukhang hindi yata katanggap-tanggap ang ibinigay na ISBN; pakisuri kung may mga kamalian ang pagkakasip/pagkakakopya mula sa orihinal na pinagmulan.',
 
 # Special:Log
-'specialloguserlabel' => 'Tagagamit:',
-'speciallogtitlelabel' => 'Pamagat:',
+'specialloguserlabel' => 'Tagaganap:',
+'speciallogtitlelabel' => 'Pinupukol (pamagat o tagagamit):',
 'log' => 'Mga talaan',
 'all-logs-page' => 'Lahat ng mga pampublikong tala',
 'alllogstext' => 'Pinagsama-samang mga pagpapakita ng makukuhang mga talaan ng {{SITENAME}}.
 Maaari mong pakitirin/pakiputin ang ipinapakita sa pamamagitan ng pagpili ng uri ng mga talaan, ang pangalan ng tagagamit (maselan ang pagmamakiniliya ng panitik), o ang naaapektuhang pahina (maselan din ang pagmamakinilya ng panitik).',
 'logempty' => 'Walang katumbas na bagay sa talaan.',
 'log-title-wildcard' => 'Hanapin ang mga pamagat na nagsisimula sa tekstong ito',
+'showhideselectedlogentries' => 'Ipakita/itago ang napiling mga lahok sa talaan',
 
 # Special:AllPages
 'allpages' => 'Lahat ng pahina',
@@ -1916,6 +2009,12 @@ Maaari mong pakitirin/pakiputin ang ipinapakita sa pamamagitan ng pagpili ng uri
 'allpagesprefix' => 'Ipakita ang mga pahinang may unlaping:',
 'allpagesbadtitle' => 'Ang binagay na pamagat ng pahina ay hindi tinatanggap o may unlapi na tumuturo sa ibang wika o wiki.  Maaaring naglalaman ito ng isa o higit pa na mga karakter na hindi ginagamit bilang pamagat.',
 'allpages-bad-ns' => 'Wala sa {{SITENAME}} ang espasyo ng pangalang "$1".',
+'allpages-hide-redirects' => 'Itago ang mga pagpapapunta sa iba',
+
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Tinatanaw mo ang isang bersyong nakatago ng pahinang ito, na maaaring $1 na ang katagalan.',
+'cachedspecial-viewing-cached-ts' => 'Tinatanaw mo ang isang bersyong nakatago ng pahinang ito, na maaaring hindi buo ang katalagahan.',
+'cachedspecial-refresh-now' => 'Tingnan ang pinakahuli.',
 
 # Special:Categories
 'categories' => 'Mga kategorya',
@@ -1932,12 +2031,13 @@ Tingnan din ang [[Special:WantedCategories|ninanais na mga kategorya]].',
 'sp-deletedcontributions-contribs' => 'mga ambag',
 
 # Special:LinkSearch
-'linksearch' => 'Panlabas na mga kawing',
+'linksearch' => 'Paghanap sa mga kawing na panlabas',
 'linksearch-pat' => 'Huwaran ng hanap',
 'linksearch-ns' => 'Pangalang espasyo',
 'linksearch-ok' => 'Hanapin',
-'linksearch-text' => 'Maaaring gamitin ang mga "barahang panghalili/pamalit" (mga \'\'wildcard\'\') katulad ng "*.wikipedia.org".<br />
-Sinusuportahang mga protokolo: <tt>$1</tt>',
+'linksearch-text' => 'Maaaring gamitin ang mga "barahang pamalit" na katulad ng "*.wikipedia.org".
+Kailangan ng kahit na isang nasasakupang mataas ang kaantasan, halimbawa na ang "*.org".<br />
+Sinusuportahang mga protokolo: <tt>$1</tt> (huwag idagdag ang anuman sa mga ito sa paghahanap mo).',
 'linksearch-line' => '$1 nakakawing/nakaugnay mula sa $2',
 'linksearch-error' => "Lilitaw lamang ang mga \"barahang-pamalit\" (''wildcard'') sa simula ng pangunahin/punong-abalang pangalan.",
 
@@ -1984,9 +2084,9 @@ Maaaring may mga [[{{MediaWiki:Listgrouprights-helppage}}|karagdagang kabatiran]
 'emailuser' => 'Padalhan ng e-liham ang tagagamit',
 'emailpage' => 'Magpadala ng e-liham sa tagagamit',
 'emailpagetext' => 'Magagamit mo ang pormularyo sa ibaba para makapagpadala ng mensahe sa pamamagitan ng isang e-liham para sa tagagamit na ito.
-Ang ipinasok mong adres ng e-liham sa [[Special:Preferences|iyong mga kagustuhan ng tagagamit]] ay lilitaw bilang adres na "Mula kay" ng e-liham, para tuwirang makatugon sa iyo ang nakatanggap.',
+Ang ipinasok mong direksiyong e-liham sa [[Special:Preferences|iyong mga kagustuhan ng tagagamit]] ay lilitaw bilang adres na "Mula kay" ng e-liham, para tuwirang makatugon sa iyo ang nakatanggap.',
 'usermailererror' => 'Pagkakamaling sanhi ng pagkakabalik ng liham mula sa puntirya:',
-'defemailsubject' => 'E-liham ng {{SITENAME}}',
+'defemailsubject' => 'E-liham ng {{SITENAME}} mula sa tagagamit na si "$1"',
 'usermaildisabled' => 'Hindi pinagana ang e-liham ng tagagamit',
 'usermaildisabledtext' => 'Hindi maaaring magpadala ng e-liham sa ibang mga tagagamit sa wiki na ito.',
 'noemailtitle' => 'Walang adres ng e-liham',
@@ -2019,10 +2119,12 @@ Ang ipinasok mong adres ng e-liham sa [[Special:Preferences|iyong mga kagustuhan
 'watchlistfor2' => 'Para sa $1 $2',
 'nowatchlist' => 'Wala kang pahinang binabantayan.',
 'watchlistanontext' => 'Paki $1 upang makita o mabago ang mga aytem sa iyong binabantayan.',
-'watchnologin' => 'Di ka naka-lagda',
+'watchnologin' => 'Hindi nakalagda',
 'watchnologintext' => 'Dapat kang [[Special:UserLogin|nakalagda]] upang mabago ang talaan mo ng mga binabantayan.',
+'addwatch' => 'Idagdag sa bantayan',
 'addedwatchtext' => "Dinagdag na ang pahinang \"[[:\$1]]\" sa iyong [[Special:Watchlist|Babantayan]].
 Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang usapang pahina, at ang pahina ay makikitang sa '''malalaking titik''' ('''''bold''''') sa [[Special:RecentChanges|tala ng mga huling binago]] para madaling makita.",
+'removewatch' => 'Alisin mula sa bantayan',
 'removedwatchtext' => 'Ang pahinang "[[:$1]]" ay tinanggal na mula sa [[Special:Watchlist|iyong talaan ng binabantayan]].',
 'watch' => 'Bantayan ito',
 'watchthispage' => 'Bantayan ang pahinang ito',
@@ -2038,13 +2140,14 @@ Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang
 'watchmethod-list' => 'sinusuri ang binabantayang mga pahina para sa mga kamakailan lamang na mga pagbabago',
 'watchlistcontains' => 'Naglalaman ng $1 {{PLURAL:$1|pahina|mga pahina}} ang iyong talaan ng mga binabantayan.',
 'iteminvalidname' => "May suliranin ang bagay na '$1', hindi tanggap na pangalan...",
-'wlnote' => "Nasa ibaba ang {{PLURAL:$1|pinakahuling pagbabago|pinakahuling '''$1''' mga pagbabago}} sa loob ng huling {{PLURAL:$2|oras|'''$2''' mga oras}}.",
+'wlnote' => "Nasa ibaba ang {{PLURAL:$1|pinakahuling pagbabago|pinakahuling '''$1''' mga pagbabago}} sa loob ng huling {{PLURAL:$2|oras|'''$2''' mga oras}}, magmula noong $3 sa ganap na ika-$4.",
 'wlshowlast' => 'Ipakita ang huling $1 mga oras $2 mga araw $3',
 'watchlist-options' => 'Mga pagpipilian para sa talaan ng mga binabantayan',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Isinasama sa mga binabantayan...',
 'unwatching' => 'Tinatanggal mula sa mga binabantayan...',
+'watcherrortext' => 'Naganap ang isang kamalian habang binabago ang mga katakdaan ng bantayan mo para sa "$1".',
 
 'enotif_mailer' => 'Tagapagpadala ng mga Pahayag ng {{SITENAME}}',
 'enotif_reset' => 'Tatakan ang lahat ng pahina bilang nadalaw na',
@@ -2056,29 +2159,35 @@ Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang
 'enotif_lastvisited' => 'Tingnan ang $1 para sa lahat ng mga pagbabago magmula noong huling pagdalaw mo.',
 'enotif_lastdiff' => 'Tingnan ang $1 para makita ang pagbabagong ito.',
 'enotif_anon_editor' => 'hindi nakikilalang tagagamit $1',
-'enotif_body' => 'Mahal na $WATCHINGUSERNAME,
+'enotif_body' => 'Mahal naming $WATCHINGUSERNAME,
 
 
-Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED noong $PAGEEDITDATE ni $PAGEEDITOR, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang rebisyon.
+Ang pahinang $PAGETITLE ng {{SITENAME}} ay $CHANGEDORCREATED ni $PAGEEDITOR noong $PAGEEDITDATE, tingnan ang $PAGETITLE_URL para sa pangkasalukuyang rebisyon.
 
 $NEWPAGE
 
-Buod mula sa patnugot: $PAGESUMMARY $PAGEMINOREDIT
+Buod ng patnugot: $PAGESUMMARY $PAGEMINOREDIT
 
 Makipagugnayan sa patnugot:
 liham: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
 Wala nang iba pang mga pagpapahayag sa pagkakataon ng pagkakaroon ng karagdagang mga pagbabago maliban na lamang kung dadalawin mo ang pahinang ito.
-Maaari mo ring muling itakda ang mga watawat na pangpag-uulat para sa lahat ng mga pahinang binabantayan mo sa loob ng iyong talaan ng mga binabantayan.
+Maaari mo ring itakda muli ang mga watawat na pangpagpapabatid para sa lahat ng mga pahinang binabantayan mo sa loob ng iyong talaan ng mga binabantayan.
 
-             Ang iyong palakaibigang sistemang pangpag-uulat ng {{SITENAME}}
+Ang iyong maginhawang sistema ng pagpapabatid ng {{SITENAME}}
 
 --
-Para baguhin ang mga pagtatakda ng iyong talaan ng mga binabantayan, puntahan ang
+Upang mabago ang mga katakdaan sa iyong talaan ng mga binabantayan, dalawin ang
+{{canonicalurl:{{#special:Preferences}}}}
+
+Upang baguhin ang mga katakdaan ng bantayan mo, dumalaw sa
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Upang burahin ang pahina mula sa pahina mo ng mga binabantayan, dumalaw sa
 $UNWATCHURL
 
-Balik-tugon at karagdagang tulong:
+Tugon at karagdagang tulong:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
@@ -2137,14 +2246,17 @@ Pakipindot ang pindutang \"ibalik\" (''back'') at ikarga uli ang pinanggalingan
 
 # Protect
 'protectlogpage' => 'Talaan ng pagsasanggalang',
-'protectlogtext' => 'Nasa ibaba ang isang talaan ng mga pagkandado at pagtanggal na mga pagkandado ng pahina.
-Tingnan ang [[Special:ProtectedPages|talaan ng nakasanggalang na mga pahina]] para sa talaan ng mga pangkasalukuyang gumaganang mga pagsasanggalang ng pahina.',
+'protectlogtext' => 'Nasa ibaba ang isang talaan ng mga pagbabago sa mga pruteksiyon ng pahina.
+Tingnan ang [[Special:ProtectedPages|talaan ng pinuprutektahang mga pahina]] para sa talaan ng kasalukuyang gumaganang mga pagprutekta ng pahina.',
 'protectedarticle' => 'ipinagsanggalang ang "[[$1]]"',
 'modifiedarticleprotection' => 'binago ang antas ng panananggalang para sa "[[$1]]"',
-'unprotectedarticle' => 'tinanggal sa panananggalang ang "[[$1]]"',
+'unprotectedarticle' => 'tinanggal ang pruteksiyon mula sa "[[$1]]"',
 'movedarticleprotection' => 'inilipat ang pagtatakdang pampanananggalang mula sa "[[$2]]" patungong "[[$1]]"',
 'protect-title' => 'Palitan ang antas ng panananggalang para sa "$1"',
+'protect-title-notallowed' => 'Tingnan ang antas ng proteksiyon ng "$1"',
 'prot_1movedto2' => 'Inilipat ang [[$1]] patungo sa [[$2]]',
+'protect-badnamespace-title' => 'Hindi mapupruteksiyunang puwang ng pangalan',
+'protect-badnamespace-text' => 'Hindi mapupruteksiyunan ang mga pahinang nasa puwang na pampangalang ito.',
 'protect-legend' => 'Pagtibayin/tiyakin ang panananggalang',
 'protectcomment' => 'Dahilan:',
 'protectexpiry' => 'Magtatapos sa:',
@@ -2166,6 +2278,7 @@ Maaari mong baguhin ang antas ng panananggalang ng pahina, ngunit hindi ito maka
 'protect-level-sysop' => "Mga tagapangasiwa (''sysop'') lamang",
 'protect-summary-cascade' => 'baita-baitang',
 'protect-expiring' => 'mawawalan ng bisa sa $1 (UTC)',
+'protect-expiring-local' => 'magtatapos sa $1',
 'protect-expiry-indefinite' => 'walang katiyakan',
 'protect-cascade' => 'Ipagsanggalang ang mga pahinang kasama/kabilang sa pahinang ito (baita-baitang na panananggalang)',
 'protect-cantedit' => 'Hindi mo mababago ang mga antas ng panananggalang ng pahinang ito, dahil wala kang pahintulot para baguhin ito.',
@@ -2206,8 +2319,8 @@ Maaari mong baguhin ang antas ng panananggalang ng pahina, ngunit hindi ito maka
 'undeletepagetext' => 'Ang sumusunod na {{PLURAL:$1|pahina ay nabura na subalit |$1 mga pahina ay nabura na subalit}} nananatili pa rin sa sinupan/arkibo at maaaring bang ibalik mula sa pagkakabura.
 Maaaring palagiang linisin o tanggalan ng laman ang sinupan/arkibo.',
 'undelete-fieldset-title' => 'Ibalik ang mga pagbabago',
-'undeleteextrahelp' => "Para maibalik ang kabuoan ng kasaysayan ng pahina, iwanang walang laman ang mga kahong lagayan ng mga tsek at pindutin ang '''''Ibalik'''''. Para maisagawa ang pagbabalik na may pagpili, lagyan ng tsek ang mga kahong may kaugnayan sa pagpapabalik ng mga pagbabago at pindutin ang '''''Ibalik'''''.
-Malilinis ang pook ng kumento/puna at iba pang mga kahong lagayan ng mga tsek kapag pinindot ang '''''Magtakda uli'''''.",
+'undeleteextrahelp' => "Upang maibalik ang buong kasaysayan ng pahina, iwanang walang mga tsek ang lahat ng mga kahon at lagitikin ang '''''{{int:undeletebtn}}'''''.
+Upang makapagsagawa ng pagpapanumbalik na may pinipili, tsekan ang mga kahon na tumutugma sa mga pagbabagong ibabalik, at pindutin ang '''''{{int:undeletebtn}}'''''.",
 'undeleterevisions' => 'Sininop/nilagay sa sinupan o arkibo ang $1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
 'undeletehistory' => 'Kapag ibinalik mo ang pahina, ibabalik ang lahat ng mga pagbabago sa kasaysayan.
 Kapag nalikha ang isang bagong pahinang may katulad na pangalan mula noong pagbura, lilitaw ang naibalik na mga pagbabago sa sinaunang kasaysayan.',
@@ -2231,6 +2344,7 @@ Sa ganitong mga pagkakataon, dapat mong tanggalin ang tsek o huwag itago ang pin
 
 Tingnan ang [[Special:Log/delete|talaan ng pagbubura]] para sa isang talaan ng mga kamakailan lamang na mga pagbubura at mga pagbabalik mula sa pagkakabura.",
 'undelete-header' => 'Tingnan ang [[Special:Log/delete|talaan ng pagbubura]] para sa kamakailan lamang na  binura/naburang mga pahina.',
+'undelete-search-title' => 'Hanapin ang binurang mga pahina',
 'undelete-search-box' => 'Hanapin ang binura/naburang mga pahina',
 'undelete-search-prefix' => 'Ipakita ang mga pahinang nagsisimula sa:',
 'undelete-search-submit' => 'Maghanap',
@@ -2239,6 +2353,7 @@ Tingnan ang [[Special:Log/delete|talaan ng pagbubura]] para sa isang talaan ng m
 'undelete-bad-store-key' => 'Hindi maibalik mula sa pagkakabura ang pagbabagong pangtalaksang may tatak ng oras na $1: nawawala na ang talaksan bago pa maganap ang pagbura.',
 'undelete-cleanup-error' => 'Mali ang pagbura sa hindi ginagamit na talaksan ng sinupan/arkibong "$1".',
 'undelete-missing-filearchive' => 'Hindi naibalik mula sa pagkakabura ang sinupan/arkibo ng talaksang may ID na $1 dahil wala ito sa kalipunan ng dato.  Maaaring naibalik na ito dati mula sa pagkakabura.',
+'undelete-error' => 'Kamalian sa hindi pagbura ng pahina',
 'undelete-error-short' => 'May mali sa pagkakabalik mula sa pagkakabura ng talaksang: $1',
 'undelete-error-long' => 'Nakaranas ng mga kamalian habang ibinabalik mula sa pagkakabura ang talaksang:
 
@@ -2249,13 +2364,15 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Espasyo ng pangalan:',
 'invert' => 'Baligtarin and pinili',
+'tooltip-invert' => 'Tsekan ang kahong ito upang ikubli ang mga pagbabago sa mga pahina sa loob ng napiling mga puwang ng pangalan (at ang kaugnay na puwang ng pangalan kung may tsek)',
 'namespace_association' => 'Kaugnay na mga puwang na pampangalan',
+'tooltip-namespace_association' => 'Tsekan ang kahong ito upang maisama ang puwang na pampangalan ng usapan o paksa na may kaugnayan sa napiling puwang na pampangalan',
 'blanknamespace' => '(Pangunahin)',
 
 # Contributions
 'contributions' => 'Mga ambag ng tagagamit',
 'contributions-title' => 'Mga ambag ng tagagamit na si $1',
-'mycontris' => 'Aking mga ginawa',
+'mycontris' => 'Mga ambag ko',
 'contribsub2' => 'Para kay $1 ($2)',
 'nocontribs' => 'Walang pagbabagong nakita sa binigay na kondisyon.',
 'uctop' => ' (itaas)',
@@ -2289,7 +2406,7 @@ Ang pinakahuling entrada sa talaan  ng pagharang ay ibinigay sa ibaba para sa pa
 'nolinkshere-ns' => "Walang pahinang nakakawing sa '''[[:$1]]''' mula sa loob ng napiling espasyo ng pangalan.",
 'isredirect' => 'pahinang panturo/panuto',
 'istemplate' => 'pagsasali',
-'isimage' => 'kawing ng/sa larawan',
+'isimage' => 'kawing sa talaksan',
 'whatlinkshere-prev' => '{{PLURAL:$1|nakaraang|nakaraang $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|susunod|susunod na $1}}',
 'whatlinkshere-links' => '← mga kawing',
@@ -2338,7 +2455,7 @@ Punan ang espesipikong dahilan sa ibaba (halimbawa, magbanggit ng partikular na
 'badipaddress' => 'Hindi tanggap na adres ng IP',
 'blockipsuccesssub' => 'Matagumpay ang pagharang/paghadlang',
 'blockipsuccesstext' => 'Hinadlangan ang  [[Special:Contributions/$1|$1]].<br />
-Tingnan ang [[Special:BlockList|talaan ng mga hinadlangang IP]] upang makita ang mga paghadlang.',
+Tingnan ang [[Special:BlockList|talaan ng mga hinadlangan]] upang suriin ang mga paghadlang.',
 'ipb-blockingself' => 'Hahadlangan mo na ang sarili mo!  Nakatitiyak ka bang nais mong gawin iyan?',
 'ipb-confirmhideuser' => 'Hahadlangan mo na ang isang tagagamit na pinagagana ang "ikubli ang tagagamit".  Susupilin nito ang pangalan ng tagagamit sa lahat ng mga pagpapasok sa mga tala at mga talaan.  Nakatitiyak ka bang nais mong gawin iyan?',
 'ipb-edit-dropdown' => 'Baguhin ang mga dahilan sa pagharang',
@@ -2358,6 +2475,7 @@ Tingnan ang [[Special:BlockList|talaan ng mga hinadlangang IP]] upang makita ang
 'blocklist-userblocks' => 'Itago ang mga paghahadlang ng akawnt',
 'blocklist-tempblocks' => 'Pansamantalang ikubli ang mga pagharang',
 'blocklist-addressblocks' => 'Itago ang isahang mga paghadlang sa IP',
+'blocklist-rangeblocks' => 'Itago ang mga tipak ng nasasaklawan',
 'blocklist-timestamp' => 'Tatak ng oras',
 'blocklist-target' => 'Puntirya',
 'blocklist-expiry' => 'Magtatapos sa',
@@ -2380,6 +2498,7 @@ Tingnan ang [[Special:BlockList|talaan ng mga hinadlangang IP]] upang makita ang
 'unblocklink' => 'tanggalin ang pagharang/paghadlang',
 'change-blocklink' => 'baguhin ang pagharang/paghadlang',
 'contribslink' => 'ambag',
+'emaillink' => 'ipadala ang e-liham',
 'autoblocker' => 'Kusang hinarang dahil ang iyong adres ng IP ay kamakailan lamang na ginamit ni "[[User:$1|$1]]".
 Ang dahilang ibinigay para sa pagharang kay $1 ay: "$2"',
 'blocklogpage' => 'Tala ng pagharang',
@@ -2389,9 +2508,9 @@ Ibinigay sa ibaba ang talaan ng pagharang upang mapagsanggunian:',
 Ang tala ng pagpigil ay ibinigay sa ibaba upang mapagsanggunian:',
 'blocklogentry' => 'hinarang/hinadlangan si [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
 'reblock-logentry' => 'binago ang itinakdang pagharang/paghadlang kay [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
-'blocklogtext' => 'Tala ito ng paghaharang at pagpapawawalang bisa ng pagharang/paghadlang.
-Hindi nakatala rito ang mga awtomatiko/kusang hinarang/hinadlangang mga adres ng IP.
-Tingnan ang [[Special:BlockList|talaan ng mga hinarang na/hinadlangang IP]] para sa talaan ng pangkasalukuyang gumagana pang mga pinagbabawalan at mga pagharang/paghadlang.',
+'blocklogtext' => 'Isa itong talaan ng mga gawain ng pagharang at hindi pagharang sa tagagamit.
+Hindi nakalista ang mga tirahan ng IP ng kusang hinadlangan.
+Tingnan ang [[Special:BlockList|talaan ng pagharang]] para sa lista ng kasalukuyang may bisa na mga pagbabawal at mga paghadlang.',
 'unblocklogentry' => 'tinanggal ang pagharang/paghadlang kay $1',
 'block-log-flags-anononly' => 'mga di-kilalang tagagamit lamang',
 'block-log-flags-nocreate' => 'Nakapatay ang paglikha ng akawnt',
@@ -2445,6 +2564,7 @@ Huwag kalimutang [[Special:UnlockDB|tanggalin ang kandado]] pagkaraan mong maisa
 'lockfilenotwritable' => "Hindi masusulatan ang talaksang pangkandado ng kalipunan ng dato.
 Para ikandado o tanggalin ang kandado ng kalipunan ng dato, kailangan nitong maging nasusulatan/masusulatan ng serbidor ng ''web''.",
 'databasenotlocked' => 'Hindi nakakandado ang kalipunan ng datos.',
+'lockedbyandtime' => '(ni {{GENDER:$1|$1}} noong $2 sa ganap na ika- $3)',
 
 # Move page
 'move-page' => 'Ilipat ang $1',
@@ -2517,7 +2637,7 @@ Pumili muli ng ibang pangalan.',
 
 Mayroon na ang pupuntahang artikulo na "[[$1]]". Nais mo bang burahin ito para magbigay daan para sa paglipat?',
 'delete_and_move_confirm' => 'Oo, burahin ang pahina',
-'delete_and_move_reason' => 'Binura upang makalipat',
+'delete_and_move_reason' => 'Binura upang makapagbigay ng daan para sa paglipat mula sa "[[$1]]"',
 'selfmove' => 'Magkatulad ang pinagmulan at pupuntahan ng mga titulo; hindi mailipat ang isang pahina sa kanyang sarili.',
 'immobile-source-namespace' => 'Hindi mailipat ang mga pahinang nasa espasyo ng pangalang "$1"',
 'immobile-target-namespace' => 'Hindi mailipat ang mga pahina patungo sa espasyo ng pangalang "$1"',
@@ -2546,9 +2666,11 @@ Pumili lang po ng ibang pangalan.',
 Para ilabas ang mga pahina, ipasok ang mga pamagat sa tekstong kahon sa ibaba, isang pamagat bawat guhit, at piliin kung gusto mo rin ang kasalukuyang bersyon o mga lumang bersyon, kasama ang mga pahina ng kasaysayan, o iyon lamang kasalukuyang bersyon kasama ang mga kaalaman tungkol sa huling binago.
 
 Sa huling kaso, maaari mong gumamit ng ungay, hal. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para sa pahinang "[[{{MediaWiki:Mainpage}}]]".',
+'exportall' => 'Iluwas ang lahat ng mga pahina',
 'exportcuronly' => 'Isama lamang ang kasalukuyang rebisyon, hindi ang buong kasaysayan',
 'exportnohistory' => "----
 '''Tandaan:''' Nakapatay ang paglalabas ng buong kasaysayan ng pahina ng mga pahina sa pamamagitan ng ''form'' na ito dahil maaaring bumagal ang sayt.",
+'exportlistauthors' => 'Magsama ng isang buong listahan ng mga tagapab-ambag para sa bawat isang pahina',
 'export-submit' => 'Magluwas',
 'export-addcattext' => 'Magdagdag ng mga pahina mula sa kategorya:',
 'export-addcat' => 'Magdagdag',
@@ -2581,6 +2703,8 @@ Pakidalaw ang [//www.mediawiki.org/wiki/Localisation Lokalisasyong MediaWiki] at
 'thumbnail_error' => "May kamalian sa paglikha ng kagyat (''thumbnail''): $1",
 'djvu_page_error' => 'Wala sa nasasakupan ang pahinang DjVu',
 'djvu_no_xml' => 'Hindi makuha ang XML para sa talaksang DjVu',
+'thumbnail-temp-create' => 'Hindi nakalikha ng pansamantalang talaksan ng kagyat',
+'thumbnail-dest-create' => 'Hindi nasagip ang kagyat sa kapupuntahan',
 'thumbnail_invalid_params' => "Hindi tanggap ang mga parametro para sa kagyat (''thumbnail'')",
 'thumbnail_dest_directory' => 'Hindi malikha ang papuntahang direktoryo',
 'thumbnail_image-type' => 'Hindi tinatangkili ang uri ng larawan',
@@ -2625,6 +2749,11 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 'import-upload' => 'Magkarga ng datos na XML',
 'import-token-mismatch' => 'Nawala ang dato ng pagpupulong.  Pakisubok muli.',
 'import-invalid-interwiki' => 'Hindi maangkat mula sa tinukoy na wiki.',
+'import-error-edit' => 'Hindi naangkat ang pahinang "$1" dahil  wala kang pahintulot na baguhin ito.',
+'import-error-create' => 'Hindi naangkat ang "$1" dahil wala kang pahintulot na likhain ito.',
+'import-error-interwiki' => 'Hindi naangkat ang pahinang "$1" dahil ang pangalan nito ay nakalaan para sa pagkakawing na panlabas (interwiki).',
+'import-error-special' => 'Hindi naangkat ang pahinang "$1" dahil pag-aari ito ng isang natatanging puwang na pampangalan na hindi nagpapahintulot ng mga pahina.',
+'import-error-invalid' => 'Hindi naangkat ang pahinang "$1" dahil hindi katanggap-tanggap ang pangalan nito.',
 
 # Import log
 'importlogpage' => 'Talaan ng pagaangkat',
@@ -2634,12 +2763,23 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 'import-logentry-interwiki' => 'Na-i-transwiki na ang $1',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|pagbabago|mga pagbabago}} mula sa $2',
 
+# JavaScriptTest
+'javascripttest' => 'Pagsubok sa JavaScript',
+'javascripttest-disabled' => 'Hindi gumagana ang tungkuling ito sa wiking ito.',
+'javascripttest-title' => 'Pinatatakbo ang mga pagsubok ng $1',
+'javascripttest-pagetext-noframework' => 'Nakalaan ang pahinang ito para sa pagpapatakbo ng mga pagsubok ng JavaScript.',
+'javascripttest-pagetext-unknownframework' => 'Hindi napag-aalamang balangkas ng pagsubok na "$1".',
+'javascripttest-pagetext-frameworks' => 'Mangyaring pumili ng isa sa sumusunod na mga  balangkas na pangsubok: $1',
+'javascripttest-pagetext-skins' => 'Pumili ng isang pabalat na patatakbuhan ng mga pagsubok:',
+'javascripttest-qunit-intro' => 'Tingnan ang [$1 dokumentasyon ng pagsubok] sa mediawiki.org.',
+'javascripttest-qunit-heading' => 'Pook na subukan ng QUnit ng JavaScript ng MediaWiki',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Ang iyong pahina ng tagagamit',
 'tooltip-pt-anonuserpage' => 'Ang pahina ng tagagamit para sa IP na iyong binabago bilang',
 'tooltip-pt-mytalk' => 'Ang iyong pahina ng usapan',
 'tooltip-pt-anontalk' => 'Usapang tungkol sa mga pagbabagong ginawa sa ip address na ito',
-'tooltip-pt-preferences' => 'Aking mga kagustuhan',
+'tooltip-pt-preferences' => 'Mga nais ko',
 'tooltip-pt-watchlist' => 'Ang talaan ng mga pagbabago sa mga pahinang binabantayan mo',
 'tooltip-pt-mycontris' => 'Talaan ng mga ambag mo',
 'tooltip-pt-login' => 'Hinihimok kang lumagda, bagaman hindi ito kinakailangan.',
@@ -2651,7 +2791,7 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 'tooltip-ca-viewsource' => 'Nakaprotekta ang pahinang ito. Makikita mo lamang ang pinagmulan (source) nito.',
 'tooltip-ca-history' => 'Nakaraang bersyon ng pahinang ito.',
 'tooltip-ca-protect' => 'Iprotekta ang pahinang ito',
-'tooltip-ca-unprotect' => 'Huwag prutektahan ang pahinang ito',
+'tooltip-ca-unprotect' => 'Baguhin ang pruteksiyon ng pahinang ito',
 'tooltip-ca-delete' => 'Burahin ang pahinang ito',
 'tooltip-ca-undelete' => 'Ibalik ang mga pagbabagong ginawa sa pahinang ito bago ito binura',
 'tooltip-ca-move' => 'Ilipat ang pahinang ito',
@@ -2694,6 +2834,8 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
 'tooltip-diff' => 'Ipakita ang mga pagbabagong ginawa mo sa teksto.',
 'tooltip-compareselectedversions' => 'Tingnan ang pagkakaiba sa pagitan ng dalawang napiling bersyon ng pahinang ito.',
 'tooltip-watch' => 'Idagdag ang pahinang ito sa iyong tala ng mga binabantayan',
+'tooltip-watchlistedit-normal-submit' => 'Tanggalin ang mga pamagat',
+'tooltip-watchlistedit-raw-submit' => 'Isapanahon ang bantayan',
 'tooltip-recreate' => 'Muling likhain ang pahina kahit na nabura na ito',
 'tooltip-upload' => 'Simulan ang pagkarga',
 'tooltip-rollback' => 'Ibinabalik ng "Pagulungin pabalik sa dati" ang (mga) pagbabago sa pahinang ito patungo sa huling bersyon ng huling tagapagambag sa pamamagitan ng isang pindot lamang.',
@@ -2748,6 +2890,20 @@ Maaaring dahil ito sa isang kawing sa isang nakatalang hinarang dahil di-kinaisn
 'spambot_username' => "Paglilinis ng ''spam'' ng MediaWiki",
 'spam_reverting' => "Ibinabalik sa huling bersyon na 'di-naglalaman ng mga kawing sa $1",
 'spam_blanking' => 'Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, pagpapatlang',
+'spam_deleting' => 'Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, binubura',
+
+# Info page
+'pageinfo-title' => 'Kabatiran para sa "$1"',
+'pageinfo-header-edits' => 'Mga pagpatnugot',
+'pageinfo-header-watchlist' => 'Bantayan ko',
+'pageinfo-header-views' => 'Mga pagtanaw',
+'pageinfo-subjectpage' => 'Pahina',
+'pageinfo-talkpage' => 'Pahina ng usapan',
+'pageinfo-watchers' => 'Bilang ng mga nagbabantay',
+'pageinfo-edits' => 'Bilang ng mga pamamatnugot',
+'pageinfo-authors' => 'Bilang ng magkakabukod na mga may-akda',
+'pageinfo-views' => 'Bilang ng mga pagtanaw',
+'pageinfo-viewsperedit' => 'Pagtanaw sa bawat pagbago',
 
 # Skin names
 'skinname-standard' => 'Klasiko',
@@ -2803,7 +2959,7 @@ Maaaring manganib ang iyong sistema kapag ipinagana mo ito.",
 'svg-long-desc' => 'Talaksang SVG, nasa mga bilang na $1 × $2 mga piksel, sukat ng talaksan: $3',
 'show-big-image' => 'Buong resolusyon (kalinawan)',
 'show-big-image-preview' => 'Sukat ng paunang-tingin na ito: $1.',
-'show-big-image-other' => 'Iba pang mga resolusyon: $1.',
+'show-big-image-other' => 'Iba pang {{PLURAL:$2|resolusyon|mga resolusyon}}: $1.',
 'show-big-image-size' => '$1 x $2 mga piksel',
 'file-info-gif-looped' => 'nasilo na',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|banhay|mga banhay}}',
@@ -2825,6 +2981,11 @@ Maaaring manganib ang iyong sistema kapag ipinagana mo ito.",
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'hours-abbrev' => '$1o',
+'seconds' => '{{PLURAL:$1|$1 segundo|$1 mga segundo}}',
+'minutes' => '{{PLURAL:$1|$1 minuto|$1 mga minuto}}',
+'hours' => '{{PLURAL:$1|$1 horas|$1 mga oras}}',
+'days' => '{{PLURAL:$1|$1 araw|$1 mga araw}}',
+'ago' => '$1 na ang nakalipas',
 
 # Bad image list
 'bad_image_list' => 'Ang anyo ay ang mga sumusunod:
@@ -3035,6 +3196,9 @@ Likas na nakatakdang itago ang iba pa.
 
 # EXIF attributes
 'exif-compression-1' => 'Walang kompresyon',
+'exif-compression-2' => 'CCITT Pangkat 3 1-kodigo sa haba ng pagtakbo ng Pangdimensiyong Huffman na May Bahagyang Pagbabago',
+'exif-compression-3' => 'Kodigo ng Pangkat 3 ng CCITT',
+'exif-compression-4' => 'Kodigo ng Pangkat 4 ng CCITT',
 
 'exif-copyrighted-true' => 'Nakakarapatang-ari',
 'exif-copyrighted-false' => 'Nasasakupan ng madla',
@@ -3046,9 +3210,9 @@ Likas na nakatakdang itago ang iba pa.
 'exif-orientation-3' => 'Pinaikot ng 180°',
 'exif-orientation-4' => 'Pinihit ng patayo',
 'exif-orientation-5' => 'Pinaikot ng 90° CCW at pinihit ng patayo',
-'exif-orientation-6' => 'Pinaikot ng 90° CW',
+'exif-orientation-6' => 'Pinaikot ng 90° na salungat sa galaw ng kamay ng orasan',
 'exif-orientation-7' => 'Pinaikot ng 90° CW at pinihit ng patayo',
-'exif-orientation-8' => 'Pinaikot ng 90° CCW',
+'exif-orientation-8' => 'Pinaikot ng 90° na nakaayon sa galaw ng kamay ng orasan',
 
 'exif-planarconfiguration-1' => 'pagkaayos sa malalaking bahagi (chunky)',
 'exif-planarconfiguration-2' => 'planar na pagkaayos',
@@ -3338,6 +3502,12 @@ Pakitiyak kung ibig mo talagang likhain muli ang pahinang ito.",
 'confirm-purge-top' => 'Linisin/hawiin ang taguan ng pahinang ito?',
 'confirm-purge-bottom' => 'Nililinis ng pagdadalisay ng isang pahina ang taguan at mapipilitang palitawin ang pinakapangkasalukuyang bersyon.',
 
+# action=watch/unwatch
+'confirm-watch-button' => 'Sige',
+'confirm-watch-top' => 'Idaragdag ba ang pahinang ito sa bantayan mo?',
+'confirm-unwatch-button' => 'Sige',
+'confirm-unwatch-top' => 'Aalisin ba ang pahinang ito mula sa bantayan mo?',
+
 # Multipage image navigation
 'imgmultipageprev' => '← nakaraang pahina',
 'imgmultipagenext' => 'susunod na pahina →',
@@ -3444,6 +3614,9 @@ Maaari mo ring [[Special:EditWatchlist|gamitin ang pangkaraniwang pampatnugot]].
 'hebrew-calendar-m11' => 'Av',
 'hebrew-calendar-m12' => 'Elul',
 
+# Signatures
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|makipag-usap]])',
+
 # Core parser functions
 'unknown_extension_tag' => 'Hindi nalalamang tatak ng karugtong na "$1"',
 'duplicate-defaultsort' => 'Babala: Madadaig ng susi ng pagtatakdang "$2" ang mas naunang susi ng pagtatakdang "$1".',
@@ -3474,14 +3647,16 @@ Dapat na nakatanggap ka ng [{{SERVER}}{{SCRIPTPATH}}/COPYING isang sipi ng Pangk
 'version-software' => 'Inistalang software',
 'version-software-product' => 'Produkto',
 'version-software-version' => 'Bersyon',
+'version-entrypoints' => 'Mga URL na butas-pasukan',
+'version-entrypoints-header-entrypoint' => 'Butas na pasukan',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Lokasyon ng talaksan (file path)',
 'filepath-page' => 'Talaksan:',
 'filepath-submit' => 'Gawin',
-'filepath-summary' => 'Ibinabalik ng natatanging pahinang ito ang buong daanan ng isang talaksan.  Ipinapakita ang mga larawan na may buong resolusyon (kalinawan), tuwirang sinimulan ang ibang uri ng mga talaksan sa pamamagitan ng kaugnay nilang mga programa.
-
-Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
+'filepath-summary' => 'Ibinabalik ng natatanging pahinang ito ang buong landas para sa isang talaksan.  
+Ipinapakita ang mga larawan sa buong kalinawan, tuwirang sinisimulan ang ibang uri ng mga talaksan sa pamamagitan ng kaugnay nilang mga programa.',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Maghanap ng kaparehong mga talaksan',
@@ -3497,9 +3672,8 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 # Special:SpecialPages
 'specialpages' => 'Mga natatanging pahina',
 'specialpages-note' => '----
-* Pangkaraniwang natatanging mga pahina.
-* <strong class="mw-specialpagerestricted">Pinaghihigpitang natatanging mga pahina.</strong>
-* <span class="mw-specialpagecached">Nakakubli lamang na natatanging mga pahina.</span>',
+* Normal na natatanging mga pahina.
+* <span class="mw-specialpagerestricted">Pinaghihigpitang natatanging mga pahina.</span>',
 'specialpages-group-maintenance' => 'Mga pagpapanatiling ulat',
 'specialpages-group-other' => 'Iba pang natatanging mga pahina',
 'specialpages-group-login' => 'Lumagda/tumala',
@@ -3547,6 +3721,9 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'compare-rev1' => 'Rebisyon 1',
 'compare-rev2' => 'Rebisyon 2',
 'compare-submit' => 'Paghambingin',
+'compare-invalid-title' => 'Hindi katanggap-tanggap ang tinukoy mong pamagat.',
+'compare-title-not-exists' => 'Hindi umiiral ang tinukoy mong pamagat.',
+'compare-revision-not-exists' => 'Hindi umiiral ang tinukoy mong rebisyon.',
 
 # Database error messages
 'dberr-header' => 'May isang suliranin ang wiking ito',
@@ -3574,11 +3751,40 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'sqlite-no-fts' => '$1 na walang suporta ng paghahanap ng buong teksto',
 
 # New logging system
+'logentry-delete-delete' => 'Binura ni $1 ang pahinang $3',
+'logentry-delete-restore' => 'Ibinalik ni $1 ang pahinang $3',
+'logentry-delete-event' => 'Binago ni $1 ang antas ng pagkanatatanaw ng {{PLURAL:$5|isang pangyayari sa talaan|$5 mga pangyayari sa talaan}} sa $3: $4',
+'logentry-delete-revision' => 'Binago ni $1 ang antas ng pagtanaw sa {{PLURAL:$5|isang rebisyon|$5 mga rebisyon}} sa pahinang $3: $4',
+'logentry-delete-event-legacy' => 'Binago ni $1 ang antas ng pagtanaw sa mga pangyayari sa talaan sa $3',
+'logentry-delete-revision-legacy' => 'Binago ni $1 ang antas ng pagtanaw sa mga rebisyong nasa pahinang $3',
+'logentry-suppress-delete' => 'Sinupil ni $1 ang pahinang $3',
+'logentry-suppress-event' => 'Palihim na binago ni $1 ang antas ng pagtanaw sa {{PLURAL:$5|isang pangyayari sa talaan|$5 mga pangyayari sa talaan}} sa $3: $4',
+'logentry-suppress-revision' => 'Palihim na binago ni  $1 ang antas ng pagkanakikita ng {{PLURAL:$5|isang rebisyon|$5 mga rebisyon}} sa pahinang $3: $4',
+'logentry-suppress-event-legacy' => 'Palihim na binago ni $1 ang antas ng pagtanaw sa mga kaganapan sa talaan sa $3',
+'logentry-suppress-revision-legacy' => 'Palihim na binago ni $1 ang antas ng pagtanaw ng mga rebisyon sa pahinang $3',
+'revdelete-content-hid' => 'nakatago ang nilalaman',
+'revdelete-summary-hid' => 'nakatago ang buod ng pagbago',
+'revdelete-uname-hid' => 'nakatago ang pangalan ng tagagamit',
+'revdelete-content-unhid' => 'hindi na nakatago ang nilalaman',
+'revdelete-summary-unhid' => 'pinalitaw ang buod ng pagpatnugot',
+'revdelete-uname-unhid' => 'pinalitaw ang pangalan ng tagagamit',
 'revdelete-restricted' => 'nilapat na mga paghihigpit sa mga tagapangasiwa',
 'revdelete-unrestricted' => 'tinanggal ang mga pagbabawal para sa mga tagapangasiwa',
+'logentry-move-move' => 'Inilipat ni $1 ang pahinang $3 papunta sa $4',
+'logentry-move-move-noredirect' => 'Inilipat ni $1 ang pahinang $3 papunta sa $4 na hindi nag-iiwan ng ibang kapupuntahan',
+'logentry-move-move_redir' => 'Inilipat ni $1 ang pahinang $3 papunta sa $4 na nasa ibayo ng ibang kapupuntahan',
+'logentry-move-move_redir-noredirect' => 'Inilipat ni $1 ang pahinang $3 papunta sa $4 sa ibabaw ng isang pagpapunta sa iba na hindi nag-iiwan ng isang pagpapapunta sa iba',
+'logentry-patrol-patrol' => 'Minarkahan ni $1 ang rebisyong $4 ng pahinang $3 bilang napatrolya na',
+'logentry-patrol-patrol-auto' => 'Kusang minarkahan ni $1 ang rebisyong $4 ng pahinang $3 bilang napatrolya na',
+'logentry-newusers-newusers' => 'Lumikha si $1 ng isang akawnt ng tagagamit',
+'logentry-newusers-create' => 'Lumikha si $1 ng isang akawnt ng tagagamit',
+'logentry-newusers-create2' => 'Lumikha si $1 ng isang akawnt ng tagagamit na $3',
+'logentry-newusers-autocreate' => 'Kusang nalikha ang akawnt na $1',
 'newuserlog-byemail' => 'Ipinadala ang hudyat sa pamamagitan ng e-liham',
 
 # Feedback
+'feedback-bugornote' => 'Kung handa ka nang detalyadong maglarawan ng isang suliraning teknikal mangyaring [$1 iulat ang sira].
+O kaya, maaari mong gamitin ang maginhawang pormularyo sa ibaba. Ang iyong pagpuna ay idaragdag sa pahinang "[$3 $2]", kasama ang iyong pangalan na pangtagagamit at kung anong pantingin-tingin ang ginagamit mo.',
 'feedback-subject' => 'Paksa:',
 'feedback-message' => 'Mensahe:',
 'feedback-cancel' => 'Huwag ituloy',
@@ -3587,6 +3793,10 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'feedback-error1' => 'Kamalian: Hindi nakikilalang kinalabasan mula sa API',
 'feedback-error2' => 'Kamalian: Nabigo ang pagpatnugot',
 'feedback-error3' => 'Kamalian: Walang tugon mula sa API',
+'feedback-thanks' => 'Salamat! Ang katugunan mo ay naipaskil na sa pahinang "[$2 $1]".',
+'feedback-close' => 'Nagawa na',
+'feedback-bugcheck' => 'Mahusay! Suriin lang na hindi pa ito isa sa [$1 nalalamang mga depekto].',
+'feedback-bugnew' => 'Sinuri ko na. Mag-ulat ng panibagong sira',
 
 # API errors
 'api-error-badaccess-groups' => 'Hindi ka pinapayagang makapagkarga ng mga talaksan papunta sa wiking ito.',
@@ -3597,6 +3807,7 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'api-error-duplicate-archive-popup-title' => 'Nabura nang kakambal na {{PLURAL:$1|talaksan|mga talaksan}}',
 'api-error-duplicate-popup-title' => 'Kagayang {{PLURAL:$1|talaksan|mga talaksan}}',
 'api-error-empty-file' => 'Walang laman ang ipinasa mong talaksan.',
+'api-error-emptypage' => 'Lumilikha ng bago, hindi pinapayagan ang mga pahinang walang laman.',
 'api-error-fetchfileerror' => 'Panloob na kamalian: may naganap na pagkakamali habang kinukuha ang talaksan.',
 'api-error-file-too-large' => 'Napakalaki ng talaksang ipinasa mo.',
 'api-error-filename-tooshort' => 'Napakaiksi ng pangalan ng talaksan.',
@@ -3621,7 +3832,19 @@ Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
 'api-error-unknown-code' => 'Hindi malamang kamalian: "$1"',
 'api-error-unknown-error' => 'Panloob na kamalian: may nangyaring kamalian habang sinusubok mong ikarga ang talaksan mo.',
 'api-error-unknown-warning' => 'Hindi nalalamang babala: $1',
+'api-error-unknownerror' => 'Hindi malamang kamalian: "$1".',
 'api-error-uploaddisabled' => 'Hindi pinapagana ang pagkakargang paitaas sa wiking ito.',
 'api-error-verification-error' => 'Maaaring sira ang talaksang ito, o may maling karugtong.',
 
+# Durations
+'duration-seconds' => '$1 {{PLURAL:$1|segundo|mga segundo}}',
+'duration-minutes' => '$1 {{PLURAL:$1|minuto|mga minuto}}',
+'duration-hours' => '$1 {{PLURAL:$1|oras|mga oras}}',
+'duration-days' => '$1 {{PLURAL:$1|araw|mga araw}}',
+'duration-weeks' => '$1 {{PLURAL:$1|linggo|mga linggo}}',
+'duration-years' => '$1 {{PLURAL:$1|taon|mga taon}}',
+'duration-decades' => '$1 {{PLURAL:$1|dekada|mga dekada}}',
+'duration-centuries' => '$1 {{PLURAL:$1|daantaon|mga daantaon}}',
+'duration-millennia' => '$1 {{PLURAL:$1|milenyo|mga milenyo}}',
+
 );
index 04e3743..df6482c 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Толышә зывон (Толышә зывон)
+/** толышә зывон (толышә зывон)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -484,9 +484,9 @@ $messages = array(
 'prefsnologintext' => 'Шымә бәбе <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ыштәни едәштән]</span> бо иштирокәкә пеғәндон дәгиш кардеј.',
 'changepassword' => 'Пароли дәгиш кардеј',
 'skin-preview' => 'Сыфтәнә нишо дој',
-'prefs-rc' => 'Ән нуә дәгишон',
+'prefs-rc' => 'Ән нујә дәгишон',
 'prefs-changeemail' => 'Е-номә дәгиш кардеј',
-'saveprefs' => 'Огәте',
+'saveprefs' => 'Огәтеј',
 'searchresultshead' => 'Нәве',
 'timezoneregion-america' => 'Америка',
 'timezoneregion-europe' => 'Авропа',
index bd1e1ec..c7ba9d4 100644 (file)
@@ -15,6 +15,7 @@
  * @author Dbl2010
  * @author Don Alessandro
  * @author Emperyan
+ * @author Erdemaslancan
  * @author Erkan Yilmaz
  * @author Fryed-peach
  * @author Goktr001
@@ -1825,6 +1826,7 @@ Güvenlik denetimi uygun bir şekilde gerçekleştirilemiyor.',
 'uploadstash-badtoken' => 'İşlemin gerçekleştirilmesi başarısız oldu, muhtemelen düzenleme yetkileriniz zaman aşımına uğradı. Yeniden deneyin.',
 'uploadstash-errclear' => 'Dosyaların silinmesi başarısız oldu.',
 'uploadstash-refresh' => 'Dosya listelerini yenile',
+'invalid-chunk-offset' => 'Geçersiz öbek ofset',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Erişim engellendi',
@@ -2866,8 +2868,8 @@ Geçici dosya kayıp.',
 'tooltip-pt-preferences' => 'Tercihleriniz (ayarlarınız)',
 'tooltip-pt-watchlist' => 'Değişiklikler için izlemeye aldığınız sayfaların listesi',
 'tooltip-pt-mycontris' => 'Katkılarınızın listesi',
-'tooltip-pt-login' => 'Mecbur değilsiniz fakat oturum açmanız tavsiye olunur',
-'tooltip-pt-anonlogin' => 'Oturum açmanız tavsiye olunur ama mecbur değilsiniz.',
+'tooltip-pt-login' => 'Oturum açmanızı tavsiye ederiz; ancak zorunda değilsiniz',
+'tooltip-pt-anonlogin' => 'Oturum açmanızı tavsiye ederiz; ancak zorunda değilsiniz',
 'tooltip-pt-logout' => 'Sistemden çık',
 'tooltip-ca-talk' => 'İçerik ile ilgili tartışma',
 'tooltip-ca-edit' => 'Bu sayfayı değiştirebilirsiniz. Lütfen kaydetmeden önce önizleme düğmesini kullanın.',
index 47bdcd1..3015bec 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tatar (Cyrillic script) (Татарча)
+/** Tatar (Cyrillic script) (татарча)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -1108,6 +1108,7 @@ $1",
 'compareselectedversions' => 'Сайланган юрамаларны чагыштыру',
 'showhideselectedversions' => 'Сайланган юрамаларны күрсәтү/яшерү',
 'editundo' => 'үткәрмәү',
+'diff-multi' => '({{PLURAL:$2|бер кулланучының|$2 кулланучының}} {{PLURAL:$1|арадагы $1 версиясе күрсәтелмәгән}})',
 
 # Search results
 'searchresults' => 'Эзләү нәтиҗәләре',
@@ -1119,6 +1120,8 @@ $1",
 'notextmatches' => 'Тиңдәш текстлы битләр юк',
 'prevn' => 'алдагы {{PLURAL:$1|$1}}',
 'nextn' => 'чираттагы {{PLURAL:$1|$1}}',
+'prevn-title' => 'Алдагы $1  {{PLURAL:$1|язма}}',
+'nextn-title' => 'Киләсе $1  {{PLURAL:$1|язма}}',
 'shown-title' => 'Сәхифәдә $1 {{PLURAL:$1|язма|язма}} күрсәтелсен',
 'viewprevnext' => 'Күрсәтелүе: ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'Эзләү көйләнмәләре',
@@ -1137,6 +1140,7 @@ $1",
 'searchprofile-everything-tooltip' => 'Барлык битләрдә дә эзләү',
 'searchprofile-advanced-tooltip' => 'Бирелгән исемнәр мәйданында эзләү',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 сүз}})',
+'search-result-category-size' => '{{PLURAL:$1|1 әгъза|$1 әгъза}} ({{PLURAL:$2|1 асттөркем|$2 асттөркем}}, {{PLURAL:$3|1 файл|$3 файл}})',
 'search-result-score' => 'Релевантлыгы: $1 %',
 'search-redirect' => '(юнәлтү $1)',
 'search-section' => '($1 бүлеге)',
@@ -1632,6 +1636,7 @@ PICT # төрле
 'protectedpages' => 'Якланган битләр',
 'protectedtitles' => 'Тыелган исемнәр',
 'listusers' => 'Кулланучылар исемлеге',
+'usercreated' => '$3 $1 көнне $2 вакытта {{GENDER:$3|теркәлде}}',
 'newpages' => 'Яңа битләр',
 'newpages-username' => 'Кулланучы:',
 'ancientpages' => 'Иң иске битләр',
@@ -1739,6 +1744,7 @@ PICT # төрле
 # Watchlist
 'watchlist' => 'Күзәтү исемлегем',
 'mywatchlist' => 'Күзәтү исемлегем',
+'watchlistfor2' => '$1 $2 өчен',
 'nowatchlist' => 'Күзәтү исемлегегездә битләр юк.',
 'watchnologin' => 'Кермәдегез',
 'watchnologintext' => 'Күзәтү исемлегегезне үзгәртү өчен сез [[Special:UserLogin|керергә]] тиешсез.',
@@ -1923,6 +1929,7 @@ $1',
 'sp-contributions-talk' => 'бәхәс',
 'sp-contributions-search' => 'Кертемне эзләү',
 'sp-contributions-username' => 'Кулланучының IP адресы яки исеме:',
+'sp-contributions-toponly' => 'Соңгы версия булган үзгәртүләрне генә күрсәтергә',
 'sp-contributions-submit' => 'Эзләү',
 
 # What links here
@@ -2426,6 +2433,9 @@ $1',
 'hijri-calendar-m7' => 'Раҗәб',
 'hijri-calendar-m9' => 'Рамазан',
 
+# Core parser functions
+'duplicate-defaultsort' => 'Игътибар. Уйланма куелган "$2" бүлгәләү ачкычы элеккеге уйланма куелган "$1" бүлгәләү ачкычын үзгәртә.',
+
 # Special:Version
 'version' => 'Юрама',
 'version-extensions' => 'Куелган киңәйтүләр',
@@ -2469,6 +2479,16 @@ $1',
 'blankpage' => 'Буш бит',
 'intentionallyblankpage' => 'Бу бит махсус буш калдырылган',
 
+# External image whitelist
+'external_image_whitelist' => '#Бу юлны ничек бар, шулаө калдырыгыз<pre>
+#Монда даими фразаларның фрагментларын куегыз (// арасында торган өлешен)
+#алар тышкы сурәтләрнең URL белән бәйләнерләр.
+#Туры килгәннәре сурәт буларак, туры килмәгәннәре сурәткә сылтама буларак күрсәтеләчәкләр.
+# # билгесе белән башланучы юллар шәрехнамә дип саналалар.
+#Юллар регистрга игътибар бирмиләр.
+
+#Даими фразаларның фрагментларын бу кыр өстендә куегыз. Бу кырны ничек бар, шулай калдырыгыз.</pre>',
+
 # Special:Tags
 'tags' => 'Гамәлдә булучы үзгәртүләр билгеләре',
 'tag-filter' => '[[Special:Tags|Tag]] фильтры:',
index 49910be..c523d24 100644 (file)
@@ -176,6 +176,7 @@ $messages = array(
 'vector-action-delete' => 'Ырадыры',
 'vector-action-move' => 'Шимчээри',
 'vector-action-protect' => 'Камгалаары',
+'vector-action-undelete' => 'Эгидер',
 'vector-action-unprotect' => 'Камгалалды өскертири',
 'vector-view-create' => 'Чогаадыры',
 'vector-view-edit' => 'Өскертири',
@@ -501,8 +502,8 @@ The password for this new account can be changed on the ''[[Special:ChangePasswo
 'searchresults-title' => '«$1» диле',
 'prevn' => 'эрткен {{PLURAL:$1|$1}}',
 'nextn' => 'дараазында {{PLURAL:$1|$1}}',
-'prevn-title' => 'Эрткен $1 {{PLURAL:$1|түңнел|түңнел}}',
-'nextn-title' => 'Дараазында $1 {{PLURAL:$1|түңнел|түңнел}}',
+'prevn-title' => 'Эрткен $1 {{PLURAL:$1|бижик|бижик}}',
+'nextn-title' => 'Дараазында $1 {{PLURAL:$1|бижик|бижик}}',
 'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнелди|түңнелди}} көргүзери',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
 'searchmenu-new' => "'''Бо вики-проектиге «[[:$1]]» арынны чогаадыры'''",
index 1442e8f..7d00a21 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Ukrainian (Українська)
+/** Ukrainian (українська)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
  * @author Тест
  */
 
-/**
- * УВАГА! НЕ РЕДАГУЙТЕ ЦЕЙ ФАЙЛ!
- *
- * Якщо необхідно змінити переклад окремих частин інтерфейсу,
- * то це можна зробити редагуючи сторінки типу «MediaWiki:*».
- * Їх список можна знайти на сторінці «Special:Allmessages».
- */
-
 $separatorTransformTable = array(
        ',' => "\xc2\xa0", # nbsp
        '.' => ','
@@ -109,6 +101,104 @@ $bookstoreList = array(
        'Amazon.com' => 'http://www.amazon.com/exec/obidos/ISBN=$1'
 );
 
+$specialPageAliases = array(
+       'Activeusers'               => array( 'Активні_учасники' ),
+       'Allmessages'               => array( 'Системні_повідомлення' ),
+       'Allpages'                  => array( 'Усі_сторінки' ),
+       'Ancientpages'              => array( 'Давні_сторінки' ),
+       'Badtitle'                  => array( 'Помилковий_заголовок' ),
+       'Blankpage'                 => array( 'Порожня_сторінка' ),
+       'Block'                     => array( 'Заблокувати' ),
+       'Blockme'                   => array( 'Заблокуйте_мене' ),
+       'Booksources'               => array( 'Джерела_книг' ),
+       'BrokenRedirects'           => array( 'Розірвані_перенаправлення' ),
+       'Categories'                => array( 'Категорії' ),
+       'ChangeEmail'               => array( 'Змінити_e-mail' ),
+       'ChangePassword'            => array( 'Змінити_пароль' ),
+       'ComparePages'              => array( 'Порівняння_сторінок' ),
+       'Confirmemail'              => array( 'Підтвердити_e-mail' ),
+       'Contributions'             => array( 'Внесок' ),
+       'CreateAccount'             => array( 'Створити_обліковий_запис' ),
+       'Deadendpages'              => array( 'Сторінки_без_посилань' ),
+       'DeletedContributions'      => array( 'Вилучений_внесок' ),
+       'Disambiguations'           => array( 'Неоднозначні_посилання' ),
+       'DoubleRedirects'           => array( 'Подвійні_перенаправлення' ),
+       'EditWatchlist'             => array( 'Правити_список_спостереження' ),
+       'Emailuser'                 => array( 'Лист_користувачеві' ),
+       'Export'                    => array( 'Експорт' ),
+       'Fewestrevisions'           => array( 'Найменші_перевірки' ),
+       'FileDuplicateSearch'       => array( 'Пошук_дублікатів_файлів' ),
+       'Filepath'                  => array( 'Шлях_до_файлу' ),
+       'Import'                    => array( 'Імпорт' ),
+       'Invalidateemail'           => array( 'Нечинна_e-mail' ),
+       'BlockList'                 => array( 'Список_блокувань', 'Блокування', 'Блокування_IP-адрес' ),
+       'LinkSearch'                => array( 'Пошук_посилань' ),
+       'Listadmins'                => array( 'Список_адміністраторів' ),
+       'Listbots'                  => array( 'Список_ботів' ),
+       'Listfiles'                 => array( 'Список_файлів' ),
+       'Listgrouprights'           => array( 'Список_прав_груп', 'Права_груп_користувачів' ),
+       'Listredirects'             => array( 'Список_перенаправлень' ),
+       'Listusers'                 => array( 'Список_користувачів' ),
+       'Lockdb'                    => array( 'Заблокувати_базу_даних' ),
+       'Log'                       => array( 'Журнали' ),
+       'Lonelypages'               => array( 'Ізольовані_сторінки' ),
+       'Longpages'                 => array( 'Найдовші_сторінки' ),
+       'MergeHistory'              => array( 'Об\'єднання_історії' ),
+       'MIMEsearch'                => array( 'Пошук_по_MIME' ),
+       'Mostcategories'            => array( 'Найкатегоризовуваніші' ),
+       'Mostimages'                => array( 'Найбільш_використовувані_файли' ),
+       'Mostlinkedcategories'      => array( 'Найуживаніші_категорії' ),
+       'Mostlinkedtemplates'       => array( 'Найуживаніші_шаблони' ),
+       'Mostrevisions'             => array( 'Найбільш_редаговані' ),
+       'Movepage'                  => array( 'Перейменувати' ),
+       'Mycontributions'           => array( 'Мій_внесок' ),
+       'Mypage'                    => array( 'Моя_сторінка' ),
+       'Mytalk'                    => array( 'Моє_обговорення' ),
+       'Myuploads'                 => array( 'Мої_завантаження' ),
+       'Newimages'                 => array( 'Нові_файли' ),
+       'Newpages'                  => array( 'Нові_сторінки' ),
+       'PasswordReset'             => array( 'Скинути_пароль' ),
+       'PermanentLink'             => array( 'Постійне_посилання' ),
+       'Popularpages'              => array( 'Популярні_сторінки' ),
+       'Preferences'               => array( 'Налаштування' ),
+       'Protectedpages'            => array( 'Захищені_сторінки' ),
+       'Protectedtitles'           => array( 'Захищені_назви_сторінок' ),
+       'Randompage'                => array( 'Випадкова_сторінка' ),
+       'Randomredirect'            => array( 'Випадкове_перенаправлення' ),
+       'Recentchanges'             => array( 'Нові_редагування' ),
+       'Recentchangeslinked'       => array( 'Пов\'язані_редагування' ),
+       'Revisiondelete'            => array( 'Перевірити_видалення' ),
+       'Search'                    => array( 'Пошук' ),
+       'Shortpages'                => array( 'Короткі_сторінки' ),
+       'Specialpages'              => array( 'Спеціальні_сторінки' ),
+       'Statistics'                => array( 'Статистика' ),
+       'Tags'                      => array( 'Мітки' ),
+       'Unblock'                   => array( 'Розблокувати' ),
+       'Uncategorizedcategories'   => array( 'Некатегоризовані_категорії' ),
+       'Uncategorizedimages'       => array( 'Некатегоризовані_файли' ),
+       'Uncategorizedpages'        => array( 'Некатегоризовані_сторінки' ),
+       'Uncategorizedtemplates'    => array( 'Некатегоризовані_шаблони' ),
+       'Undelete'                  => array( 'Відновити' ),
+       'Unlockdb'                  => array( 'Розблокувати_базу_даних' ),
+       'Unusedcategories'          => array( 'Порожні_категорії' ),
+       'Unusedimages'              => array( 'Невикористовувані_файли' ),
+       'Unusedtemplates'           => array( 'Невикористовувані_шаблони' ),
+       'Unwatchedpages'            => array( 'Неспостережувані' ),
+       'Upload'                    => array( 'Завантаження' ),
+       'UploadStash'               => array( 'Приховане_завантаження' ),
+       'Userlogin'                 => array( 'Вхід' ),
+       'Userlogout'                => array( 'Вихід' ),
+       'Userrights'                => array( 'Керування_правами_користувачів' ),
+       'Version'                   => array( 'Версія' ),
+       'Wantedcategories'          => array( 'Потрібні_категорії' ),
+       'Wantedfiles'               => array( 'Потрібні_файли' ),
+       'Wantedpages'               => array( 'Потрібні_сторінки' ),
+       'Wantedtemplates'           => array( 'Потрібні_шаблони' ),
+       'Watchlist'                 => array( 'Список_спостереження' ),
+       'Whatlinkshere'             => array( 'Посилання_сюди' ),
+       'Withoutinterwiki'          => array( 'Без_інтервікі' ),
+);
+
 $magicWords = array(
        'redirect'                => array( '0', '#ПЕРЕНАПРАВЛЕННЯ', '#ПЕРЕНАПР', '#перенапр', '#перенаправление', '#REDIRECT' ),
        'notoc'                   => array( '0', '__БЕЗ_ЗМІСТУ__', '__БЕЗ_ОГЛАВЛЕНИЯ__', '__БЕЗ_ОГЛ__', '__NOTOC__' ),
@@ -263,10 +353,10 @@ $messages = array(
 'tog-hideminor' => 'Ховати незначні редагування у списку останніх змін',
 'tog-hidepatrolled' => 'Приховувати патрульовані редагування у списку нових редагувань',
 'tog-newpageshidepatrolled' => 'Приховувати патрульовані сторінки у списку нових сторінок',
-'tog-extendwatchlist' => 'РозÑ\88иÑ\80ений Ñ\81пиÑ\81ок Ñ\81поÑ\81Ñ\82еÑ\80еженнÑ\8f, Ñ\89о Ð²ÐºÐ»Ñ\8eÑ\87аÑ\94 Ð²сі зміни, а не лише останню',
+'tog-extendwatchlist' => 'РозÑ\88иÑ\80ений Ñ\81пиÑ\81ок Ñ\81поÑ\81Ñ\82еÑ\80еженнÑ\8f, Ñ\89о Ð¼Ñ\96Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\83сі зміни, а не лише останню',
 'tog-usenewrc' => 'Використовувати покращений список останніх змін (JavaScript)',
 'tog-numberheadings' => 'Автоматично нумерувати заголовки',
-'tog-showtoolbar' => 'Показувати панель інструментів при редагуванні (JavaScript)',
+'tog-showtoolbar' => 'Показувати панель інструментів (JavaScript)',
 'tog-editondblclick' => 'Редагувати сторінки при подвійному клацанні мишкою (JavaScript)',
 'tog-editsection' => 'Показувати посилання [ред.] для кожного розділу',
 'tog-editsectiononrightclick' => 'Редагувати розділи при клацанні правою кнопкою мишки на заголовку (JavaScript)',
@@ -278,7 +368,7 @@ $messages = array(
 'tog-watchdeletion' => 'Додавати вилучені мною сторінки до мого списку спостереження',
 'tog-minordefault' => 'Спочатку позначати всі зміни незначними',
 'tog-previewontop' => 'Показувати попередній перегляд перед вікном редагування, а не після',
-'tog-previewonfirst' => 'Ð\9fоказÑ\83ваÑ\82и Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð¿Ñ\80и Ð¿ÐµÑ\80Ñ\88омÑ\83 Ñ\80едагÑ\83ваннÑ\96',
+'tog-previewonfirst' => 'Ð\9fоказÑ\83ваÑ\82и Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð¿Ñ\96д Ñ\87аÑ\81 Ð¿ÐµÑ\80Ñ\88ого Ñ\80едагÑ\83ваннÑ\8f',
 'tog-nocache' => 'Відключити кешування сторінок браузером',
 'tog-enotifwatchlistpages' => 'Повідомляти електронною поштою, коли сторінка з мого списку спостереження змінилася',
 'tog-enotifusertalkpages' => 'Повідомляти електронною поштою про зміну моєї сторінки обговорення',
@@ -299,7 +389,7 @@ $messages = array(
 'tog-watchlisthideanons' => 'Ховати редагування анонімів у списку спостереження',
 'tog-watchlisthidepatrolled' => 'Приховувати патрульовані редагування у списку спостререження',
 'tog-nolangconversion' => 'Відключити перетворення систем письма',
-'tog-ccmeonemails' => 'Ð\92Ñ\96дпÑ\80авлÑ\8fти мені копії листів, які я надсилаю іншим користувачам',
+'tog-ccmeonemails' => 'Ð\9dадÑ\81илати мені копії листів, які я надсилаю іншим користувачам',
 'tog-diffonly' => 'Не показувати вміст сторінки під різницею версій',
 'tog-showhiddencats' => 'Показувати приховані категорії',
 'tog-noconvertlink' => 'Вимкнути конвертацію назви посилання',
@@ -376,11 +466,11 @@ $messages = array(
 'category-empty' => "''Ця категорія зараз порожня.''",
 'hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}}',
 'hidden-category-category' => 'Приховані категорії',
-'category-subcat-count' => '{{PLURAL:$1|Показана $1 підкатегорія|Показані $1 підкатегорії|Показані $1 підкатегорій}} із $2.',
+'category-subcat-count' => 'Показано $1 {{PLURAL:$1|підкатегорію з|підкатегорії з|підкатегорій із}} $2.',
 'category-subcat-count-limited' => 'У цій категорії {{PLURAL:$1|$1 підкатегорія|$1 підкатегорії|$1 підкатегорій}}.',
-'category-article-count' => '{{PLURAL:$1|Показана $1 сторінка|Показані $1 сторінки|Показані $1 сторінок}} цієї категорії з $2.',
+'category-article-count' => 'Показано $1 {{PLURAL:$1|сторінку|сторінки|сторінок}} цієї категорії (із $2).',
 'category-article-count-limited' => 'У цій категорії {{PLURAL:$1|$1 сторінка|$1 сторінки|$1 сторінок}}.',
-'category-file-count' => '{{PLURAL:$2|Ця категорія містить $2 файл.|{{PLURAL:$1|Показаний $1 файл|Показані $1 файли|Показані $1 файлів}} цієї категорії з $2.}}',
+'category-file-count' => 'Показано $1 {{PLURAL:$1|файл|файли|файлів}} цієї категорії (із $2).}}',
 'category-file-count-limited' => 'У цій категорії {{PLURAL:$1|$1 файл|$1 файли|$1 файлів}}.',
 'listingcontinuesabbrev' => '(прод.)',
 'index-category' => 'Індексовані сторінки',
@@ -648,8 +738,9 @@ $1',
 'ns-specialprotected' => 'Спеціальні сторінки не можна редагувати.',
 'titleprotected' => "Створення сторінки з такою назвою було заборонене користувачем [[User:$1|$1]].
 Зазначена наступна причина: ''$2''.",
-'filereadonlyerror' => 'Не вдалося змінити файл «$1» тому, що файловий архів «$2» знаходиться в режимі «лише для читання».
-Вказана причина — «$3».',
+'filereadonlyerror' => "Неможливо змінити файл «$1» тому, що файловий архів «$2» перебуває в режимі «лише для читання».
+Адміністратор, що заблокував його, залишив таке пояснення: «''$3''».",
+'invalidtitle-knownnamespace' => 'Неприйнятна назва у просторі імен «$2» і текстом «$3»',
 
 # Virus scanner
 'virus-badscanner' => "Помилка налаштування: невідомий сканер вірусів: ''$1''",
@@ -680,7 +771,7 @@ $1',
 'notloggedin' => 'Ви не ввійшли до системи',
 'nologin' => "Ви ще не зареєструвались? '''$1'''.",
 'nologinlink' => 'Створіть обліковий запис',
-'createaccount' => 'СÑ\82воÑ\80иÑ\82и',
+'createaccount' => 'Ð\97аÑ\80еÑ\94Ñ\81Ñ\82Ñ\80Ñ\83ваÑ\82иÑ\81Ñ\8f',
 'gotaccount' => "Ви вже зареєстровані? '''$1'''.",
 'gotaccountlink' => 'Увійдіть',
 'userlogin-resetlink' => 'Забули дані, потрібні для входу?',
@@ -942,8 +1033,8 @@ $2
 Пам'ятайте, що користувацькі .css та .js сторінки повинні мати назву, що складається лише з малих літер, наприклад «{{ns:user}}:Хтось/vector.css», а не «{{ns:user}}:Хтось/Vector.css».",
 'updated' => '(Оновлена)',
 'note' => "'''Зауваження:'''",
-'previewnote' => "'''Ð\9fам'Ñ\8fÑ\82айÑ\82е, Ñ\89о Ñ\86е лише попередній перегляд.'''
\92аÑ\88Ñ\96 Ð·Ð¼Ñ\96ни Ñ\89е Ð½Ðµ Ð±Ñ\83ли Ð·Ð±ÐµÑ\80еженÑ\96!",
+'previewnote' => "'''Це лише попередній перегляд.'''
\92аÑ\88Ñ\96 Ð·Ð¼Ñ\96ни Ñ\89е Ð½Ðµ Ð·Ð±ÐµÑ\80ежено!",
 'continue-editing' => 'Продовжити редагування',
 'previewconflict' => 'Цей попередній перегляд відображає текст з верхнього вікна редагування так, як він буде виглядіти, якщо ви вирішите зберегти його.',
 'session_fail_preview' => "'''Система не може зберегти ваші редагування, оскільки втрачені дані сеансу. Будь ласка, повторіть вашу спробу.
@@ -968,7 +1059,8 @@ $2
 Якщо ви натиснете «{{int:savearticle}}», то буде збережено '''тільки''' текст у верхньому вікні редагування.",
 'yourtext' => 'Ваш текст',
 'storedversion' => 'Збережена версія',
-'nonunicodebrowser' => "'''ПОПЕРЕДЖЕННЯ: Ваш [[браузер]] не підтримує кодування [[Юнікод]]. При редагуванні статей всі не-ASCII символи будуть замінені на свої шіснадцяткові коди.'''",
+'nonunicodebrowser' => "'''ПОПЕРЕДЖЕННЯ: Ваш [[браузер]] не підтримує [[Юнікод]].''' 
+Щоб подолати це обмеження та дозволити Вам безпечно редагувати сторінки, усі не-ASCII символи буде показано їх шістнадцятковими кодами.",
 'editingold' => "'''ПОПЕРЕДЖЕННЯ: Ви редагуєте застарілу версію даної статті.
 Якщо ви збережете її, будь-які редагування, зроблені між версіями, будуть втрачені.'''",
 'yourdiff' => 'Відмінності',
@@ -1041,6 +1133,7 @@ $2
 'parser-template-loop-warning' => 'Виявлена петля у шаблонах: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Перевищене обмеження глибини рекурсії шаблону ($1)',
 'language-converter-depth-warning' => 'Перевищене обмеження глибини мовного конвертора ($1)',
+'parser-unstrip-loop-warning' => 'Виявлено незакритий тег <pre>',
 
 # "Undo" feature
 'undo-success' => 'Редагування може бути скасовано.
@@ -1220,7 +1313,7 @@ $1",
 # Diffs
 'history-title' => '$1: Історія змін',
 'difference-title' => '$1: Відмінності між версіями',
-'difference-title-multipage' => '$1 і $2: Відмінності між сторінками',
+'difference-title-multipage' => 'Різниця між сторінками «$1» та «$2»',
 'difference-multipage' => '(Різниця між сторінками)',
 'lineno' => 'Рядок $1:',
 'compareselectedversions' => 'Порівняти вибрані версії',
@@ -1315,6 +1408,7 @@ $1",
 'prefs-beta' => 'Бета-функції',
 'prefs-datetime' => 'Дата й час',
 'prefs-labs' => 'Експериментальні функції',
+'prefs-user-pages' => 'Сторінки користувача',
 'prefs-personal' => 'Особисті дані',
 'prefs-rc' => 'Сторінка останніх редагувань',
 'prefs-watchlist' => 'Список спостереження',
@@ -1340,10 +1434,10 @@ $1",
 'resultsperpage' => 'Кількість результатів на сторінку:',
 'stub-threshold' => 'Поріг для визначення оформлення <a href="#" class="stub">посилань на стаби</a> (у байтах):',
 'stub-threshold-disabled' => 'Вимкнений',
-'recentchangesdays' => 'Ð\9dа скільки днів показувати нові редагування:',
+'recentchangesdays' => 'Ð\97а скільки днів показувати нові редагування:',
 'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|день|дні|днів}})',
 'recentchangescount' => 'Кількість редагувань для показу за умовчанням:',
-'prefs-help-recentchangescount' => 'Це Ñ\82оÑ\80кається нових редагувань, історій сторінок і журналів.',
+'prefs-help-recentchangescount' => 'Це Ñ\81Ñ\82оÑ\81Ñ\83ється нових редагувань, історій сторінок і журналів.',
 'prefs-help-watchlist-token' => 'Заповнення цього поля секретним ключем буде створювати RSS-трансляцію для вашого списку спостереження.
 Кожен, хто знає ключ в цьому полі, зможе читати ваш список спостереження, тому оберіть секретне значення.
 Ви можете використати це випадково згенероване значення: $1',
@@ -1399,7 +1493,8 @@ $1",
 'gender-unknown' => 'не зазначена',
 'gender-male' => 'чоловіча',
 'gender-female' => 'жіноча',
-'prefs-help-gender' => "Необов'язкове поле: використовується в деяких повідомленнях двигуна, які залежать від статі користувача. Значення параметра загальнодоступне.",
+'prefs-help-gender' => "Необов'язково. Застосовується рушієм у тих звертаннях до користувача, які залежать від статі.
+Ця інформація загальнодоступна.",
 'email' => 'Електронна пошта',
 'prefs-help-realname' => "Справжнє ім'я необов'язково вказувати.
 Якщо ви його зазначите, то воно буде використовуватися, щоб показати, хто редагував сторінку.",
@@ -1581,7 +1676,7 @@ $1",
 'nchanges' => '$1 {{PLURAL:$1|зміна|зміни|змін}}',
 'recentchanges' => 'Нові редагування',
 'recentchanges-legend' => 'Налаштування нових редагувань',
-'recentchanges-summary' => 'Ð\9dа Ñ\86Ñ\96й Ñ\81Ñ\82оÑ\80Ñ\96нÑ\86Ñ\96 Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ\96 Ð¾Ñ\81Ñ\82аннÑ\96 Ð·Ð¼Ñ\96ни на сторінках {{grammar:genitive|{{SITENAME}}}}.',
+'recentchanges-summary' => 'Ð\92Ñ\96дÑ\81Ñ\82еженнÑ\8f Ð¾Ñ\81Ñ\82аннÑ\96Ñ\85 Ð·Ð¼Ñ\96н на сторінках {{grammar:genitive|{{SITENAME}}}}.',
 'recentchanges-feed-description' => 'Відстежувати останні зміни у вікі в цьому потоці.',
 'recentchanges-label-newpage' => 'Цим редагуванням створена нова сторінка',
 'recentchanges-label-minor' => 'Це незначна зміна',
@@ -1622,7 +1717,7 @@ $1",
 'recentchangeslinked-title' => "Пов'язані редагування для «$1»",
 'recentchangeslinked-noresult' => "На пов'язаних сторінках не було змін протягом зазначеного періоду.",
 'recentchangeslinked-summary' => "Це список нещодавніх змін на сторінках, на які посилається зазначена сторінка (або на сторінках, що містяться в цій категорії).
-Сторінки з [[Special:Watchlist|вашого списку спостереження]] виділені '''жирним шрифтом'''.",
+Сторінки з [[Special:Watchlist|вашого списку спостереження]] виділено '''жирним шрифтом'''.",
 'recentchangeslinked-page' => 'Назва сторінки:',
 'recentchangeslinked-to' => "Показати зміни на сторінках, пов'язаних з даною",
 
@@ -1688,7 +1783,7 @@ $1",
 'filename-tooshort' => 'Назва файлу занадто коротка.',
 'filetype-banned' => 'Цей тип файлів заборонений.',
 'verification-error' => 'Файлу не вдалося пройти процедуру перевірки.',
-'hookaborted' => 'Ð\97апÑ\80опонованÑ\83 Ð²Ð°Ð¼Ð¸ Ð·Ð¼Ñ\96нÑ\83 Ð¿ÐµÑ\80еÑ\80вав Ð¾Ð±Ñ\80обник Ñ\80озÑ\88иÑ\80еннÑ\8f.',
+'hookaborted' => 'Ð\97мÑ\96нÑ\83, Ñ\89о Ð\92и Ð½Ð°Ð¼Ð°Ð³Ð°Ð»Ð¸Ñ\81Ñ\8f Ð·Ñ\80обиÑ\82и, Ð²Ñ\96дкинÑ\83Ñ\82о Ð¾Ð±Ñ\80обником.',
 'illegal-filename' => 'Недозволена назва файлу.',
 'overwrite' => 'Заміну існуючого файлу не дозволено.',
 'unknown-error' => 'Трапилась невідома помилка.',
@@ -2138,6 +2233,10 @@ $1',
 'allpages-bad-ns' => '{{SITENAME}} не має простору назв «$1».',
 'allpages-hide-redirects' => 'Сховати перенаправлення',
 
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ts' => 'Ви переглядаєте кешовану версію сторінки, яка могла втратити актуальність',
+'cachedspecial-refresh-now' => 'Показати останні',
+
 # Special:Categories
 'categories' => 'Категорії',
 'categoriespagetext' => '{{PLURAL:$1|Наступна категорія|Наступні категорії}} містять сторінки або медіа-файли.
@@ -2248,8 +2347,8 @@ $1',
 'watchnologin' => 'Ви не ввійшли до системи',
 'watchnologintext' => 'Ви повинні [[Special:UserLogin|ввійти до системи]], щоб мати можливість змінювати список спостереження.',
 'addwatch' => 'Додати до списку спостереження',
-'addedwatchtext' => "Сторінка «[[:$1]]» додана до вашого [[Special:Watchlist|списку спостереження]].
\9dаÑ\81Ñ\82Ñ\83пнÑ\96 Ñ\80едагÑ\83ваннÑ\8f Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82аÑ\82Ñ\82Ñ\96 Ñ\96 Ð¿Ð¾Ð²'Ñ\8fзаноÑ\97 Ð· Ð½ÐµÑ\8e Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ\80еннÑ\8f Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ð²Ñ\96добÑ\80ажаÑ\82иÑ\81Ñ\8f Ð² Ñ\86Ñ\8cомÑ\83 Ñ\81пиÑ\81кÑ\83, Ð° Ñ\82акож Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ð²Ð¸Ð´Ñ\96ленÑ\96 '''жирним шрифтом''' на сторінці зі [[Special:RecentChanges|списком останніх редагувань]], щоб їх було легше помітити.",
+'addedwatchtext' => "Сторінку «[[:$1]]» додано до вашого [[Special:Watchlist|списку спостереження]].
\9fодалÑ\8cÑ\88Ñ\96 Ñ\80едагÑ\83ваннÑ\8f Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки (Ñ\82а Ð¿Ð¾Ð²'Ñ\8fзаноÑ\97 Ð· Ð½ÐµÑ\8e Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ\80еннÑ\8f) Ð²Ñ\96добÑ\80ажаÑ\82имÑ\83Ñ\82Ñ\8cÑ\81Ñ\8f Ð² Ñ\86Ñ\8cомÑ\83 Ñ\81пиÑ\81кÑ\83. Ð¢Ð°ÐºÐ¾Ð¶ Ñ\97Ñ\85 Ð±Ñ\83де Ð²Ð¸Ð´Ñ\96лено '''жирним шрифтом''' на сторінці зі [[Special:RecentChanges|списком останніх редагувань]], щоб їх було легше помітити.",
 'removewatch' => 'Видалити зі списку спостереження',
 'removedwatchtext' => 'Сторінка «[[:$1]]» вилучена з вашого [[Special:Watchlist|списку спостереження]].',
 'watch' => 'Спостерігати',
@@ -2276,7 +2375,7 @@ $1',
 'watcherrortext' => 'Сталася помилка при заміні налаштувань списку спостереження для " $1 ".',
 
 'enotif_mailer' => '{{SITENAME}} Служба сповіщення поштою',
-'enotif_reset' => 'Ð\9fомÑ\96Ñ\82ити всі сторінки як переглянуті',
+'enotif_reset' => 'Ð\9fознаÑ\87ити всі сторінки як переглянуті',
 'enotif_newpagetext' => 'Це нова сторінка.',
 'enotif_impersonal_salutation' => 'Користувач {{grammar:genitive|{{SITENAME}}}}',
 'changed' => 'змінена',
@@ -2626,9 +2725,9 @@ $1',
 'blocklog-showsuppresslog' => 'Цього користувача вже заблоковано і приховано. Далі наведено журнал приховань:',
 'blocklogentry' => 'заблокував [[$1]] на термін $2 $3',
 'reblock-logentry' => 'переблокував [[$1]] на термін $2 $3',
-'blocklogtext' => 'Ð\96Ñ\83Ñ\80нал Ð±Ð»Ð¾ÐºÑ\83ваннÑ\8f Ð¹ розблокування користувачів.
-IP-адреси, що блокуються автоматично тут не вказуються. Див.
-[[Special:BlockList|список поточних заборон і блокувань]].',
+'blocklogtext' => 'Ð\96Ñ\83Ñ\80нал Ð´Ñ\96й Ñ\89одо Ð±Ð»Ð¾ÐºÑ\83ваннÑ\8f Ñ\82а розблокування користувачів.
+Автоматично заблоковані IP-адреси тут не вказуються. 
+Див. [[Special:BlockList|перелік чинних обмежень]] .',
 'unblocklogentry' => 'розблокував $1',
 'block-log-flags-anononly' => 'тільки анонімні користувачі',
 'block-log-flags-nocreate' => 'заборонена реєстрація облікових записів',
@@ -3031,6 +3130,7 @@ The wiki server can't provide data in a format your client can read.",
 'spambot_username' => 'Очистка спаму',
 'spam_reverting' => 'Відкинути до останньої версії, що не містить посилання на $1',
 'spam_blanking' => 'Всі версії містять посилання на $1, очистка',
+'spam_deleting' => 'Все версії містили посилання на $1, видаляються',
 
 # Info page
 'pageinfo-title' => 'Інформація про " $1 "',
@@ -3788,8 +3888,8 @@ $5
 'livepreview-error' => "Не вдалося встановити з'єднання: $1 «$2». Спробуйте скористатися звичайним попереднім переглядом.",
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Зміни, зроблені $1 {{PLURAL:$1|секунду|секунди|секунд}} тому, можуть бути не показані в цьому списку.',
-'lag-warn-high' => 'ЧеÑ\80ез Ð²ÐµÐ»Ð¸ÐºÐµ Ð²Ñ\96дÑ\81Ñ\82аваннÑ\8f Ñ\83 Ñ\81инÑ\85Ñ\80онÑ\96заÑ\86Ñ\96Ñ\97 Ñ\81еÑ\80веÑ\80Ñ\96в Ð±Ð°Ð· Ð´Ð°Ð½Ð¸Ñ\85 Ð·Ð¼Ñ\96ни, Ð·Ñ\80обленÑ\96 Ð¼ÐµÐ½Ñ\88 Ð½Ñ\96ж $1 {{PLURAL:$1|Ñ\81екÑ\83ндÑ\83\81екÑ\83нди|Ñ\81екÑ\83нд}} Ñ\82омÑ\83, Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð±Ñ\83Ñ\82и Ð½Ðµ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ\96 Ð² Ñ\86Ñ\8cомÑ\83 Ñ\81пиÑ\81кÑ\83.',
+'lag-warn-normal' => 'Зміни, зроблені менш ніж $1 {{PLURAL:$1|секунду|секунди|секунд}} тому, можуть не відображатися в цьому переліку.',
+'lag-warn-high' => 'Ð\97мÑ\96ни, Ð·Ñ\80обленÑ\96 Ð¼ÐµÐ½Ñ\88 Ð½Ñ\96ж $1 {{PLURAL:$1|Ñ\81екÑ\83ндÑ\83\81екÑ\83нди|Ñ\81екÑ\83нд}} Ñ\82омÑ\83, Ð¼Ð¾Ð¶Ñ\83Ñ\82Ñ\8c Ð½Ðµ Ð²Ñ\96добÑ\80ажаÑ\82иÑ\81Ñ\8f Ð² Ñ\86Ñ\8cомÑ\83 Ð¿ÐµÑ\80елÑ\96кÑ\83 Ð²Ð½Ð°Ñ\81лÑ\96док Ð·Ð½Ð°Ñ\87ноÑ\97 Ð·Ð°Ñ\82Ñ\80имки Ñ\81еÑ\80веÑ\80а Ð\91Ð\94.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Ваш список спостереження містить {{PLURAL:$1|$1 запис|$1 записи|$1 записів}}, не включаючи сторінок обговорення.',
@@ -3912,6 +4012,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'version-software' => 'Установлене програмне забезпечення',
 'version-software-product' => 'Продукт',
 'version-software-version' => 'Версія',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Шлях до файлу',
@@ -4077,7 +4178,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'api-error-filename-tooshort' => 'Назва файлу занадто коротка.',
 'api-error-filetype-banned' => 'Цей тип файлів заборонений.',
 'api-error-filetype-missing' => 'У цього файла відсутнє розширення.',
-'api-error-hookaborted' => 'Зміни, які ви намагалися зробити перервав обробник розширення.',
+'api-error-hookaborted' => 'Зміну, що Ви намагалися зробити, відкинуто обробником.',
 'api-error-http' => 'Внутрішня помилка: Не вдається підключитися до сервера.',
 'api-error-illegal-filename' => "Неприпустиме ім'я файлу.",
 'api-error-internal-error' => 'Внутрішня помилка: Щось пішло не так під час обробки вашого завантаження на вікі.',
index 6d0f94a..73c51f3 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Vèneto (Vèneto)
+/** vèneto (vèneto)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -3347,28 +3347,28 @@ Le imagini le vien mostrà a la risoluzion pi granda che se pol, par i altri tip
 'sqlite-no-fts' => '$1 sensa la possibilità de riserca completa nel testo',
 
 # New logging system
-'logentry-delete-delete' => '$1 ga scanselà la pajina $3',
+'logentry-delete-delete' => '$1 ga scansełà ła pajina $3',
 'logentry-delete-restore' => '$1 ga ripristinà "$3"',
-'logentry-delete-event' => '$1 ga canbià la vixibilità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
-'logentry-delete-revision' => '$1 ga canbià la vixibilità de {{PLURAL:$5|na revixion|$5 revixion}} de la pajina"$3": $4',
-'logentry-delete-event-legacy' => '$1 ga canbià la vixibilità de calche asion del registro de "$3"',
-'logentry-delete-revision-legacy' => '$1 ga canbià la vixibilità par le revixion de la pajina $3',
+'logentry-delete-event' => '$1 ga canbià ła vixibiłità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
+'logentry-delete-revision' => '$1 ga canbià ła vixibiłità de {{PLURAL:$5|na revixion|$5 revixion}} de ła pajina"$3": $4',
+'logentry-delete-event-legacy' => '$1 ga canbià ła vixibiłità de calche asion del registro de "$3"',
+'logentry-delete-revision-legacy' => '$1 ga canbià ła vixibiłità par łe revixion de ła pajina $3',
 'logentry-suppress-delete' => '$1 ga sconto la pajina "$3"',
 'logentry-suppress-event' => '$1 ga canbià de scondón la vixibilità de {{PLURAL:$5|n\'asion del registro|$5 asion del registro}} de "$3": $4',
 'logentry-suppress-revision' => '$1 ga canbià de scondón la vixibilità de {{PLURAL:$5|na revixion|$5 revixion}} de "$3": $4',
 'logentry-suppress-event-legacy' => '$1 ga canbià de scondón la vixibilità de calche asion del registro de "$3"',
 'logentry-suppress-revision-legacy' => '$1 ga canbià de scondón la vixibilità de calche revixion de $3',
 'revdelete-content-hid' => 'contegnùo sconto',
-'revdelete-summary-hid' => 'ogeto de la modifega sconto',
+'revdelete-summary-hid' => 'ogeto de ła modifega sconto',
 'revdelete-uname-hid' => 'nome utente sconto',
 'revdelete-content-unhid' => 'contegnùo ripristinà',
 'revdelete-summary-unhid' => 'ogeto ripristinà',
 'revdelete-uname-unhid' => 'nome utente ripristinà',
 'revdelete-restricted' => 'aplicà restrizioni ai aministradori',
 'revdelete-unrestricted' => 'gà cavà le limitazion par i aministradori',
-'logentry-move-move' => '$1 ga spostà la pajina $3 a $4',
-'logentry-move-move-noredirect' => '$1 ga spostà la pajina $3 a $4 sensa metare un rimando',
-'logentry-move-move_redir' => '$1 ga spostà la pajina $3 a $4 metendo un rimando',
+'logentry-move-move' => '$1 ga spostà ła pajina $3 a $4',
+'logentry-move-move-noredirect' => '$1 ga spostà ła pajina $3 a $4 sensa metare un rimando',
+'logentry-move-move_redir' => '$1 ga spostà ła pajina $3 a $4 lasiando un rimando',
 'logentry-move-move_redir-noredirect' => '$1 ga spostà la pajina $3 a $4 al posto de un rimando sensa metare un rimando',
 'logentry-patrol-patrol' => '$1 ga segnà la revixion $4 de la pajina $3 come verifegà',
 'logentry-patrol-patrol-auto' => '$1 ga segnà automategamente la revixion $4 de la pajina $3 come verifegà',
index 3958b47..0ae2302 100644 (file)
@@ -2397,7 +2397,7 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
 
 # Patrolling
 'markaspatrolleddiff' => 'Znamoita kut patruliruidud',
-'markaspatrolledtext' => "Zmamoita nece lehtpol' kut patruliruidud",
+'markaspatrolledtext' => "Znamoita nece lehtpol' kut patruliruidud",
 'markedaspatrolled' => 'Om znamoitud kut patruliruidud',
 'markedaspatrolledtext' => 'Valitud [[:$1]]-n versii om znamoitud kut patruliruidud.',
 'rcpatroldisabled' => "Jäl'gmäižiden toižetusiden patruliruind ei ole kävutamas",
index 2e6346e..f067bcb 100644 (file)
@@ -782,7 +782,7 @@ Xin hãy đợi chốc lát rồi thử lại.',
 
 # Change password dialog
 'resetpass' => 'Đổi mật khẩu',
-'resetpass_announce' => 'Bạn Ä\91ã Ä\91Ä\83ng nhập bằng mật khẩu tạm gá»\9fi qua e-mail. Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới tại đây:',
+'resetpass_announce' => 'Bạn Ä\91ã Ä\91Ä\83ng nhập bằng mật khẩu tạm gá»­i qua thÆ° Ä\91iá»\87n tá»­. Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới tại đây:',
 'resetpass_text' => '<!-- Nhập văn bản vào đây -->',
 'resetpass_header' => 'Đổi mật khẩu cho tài khoản',
 'oldpassword' => 'Mật khẩu cũ:',
@@ -1429,7 +1429,7 @@ Thông tin này là công khai.',
 Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao của bạn.',
 'prefs-help-email' => 'Địa chỉ thư điện tử là tùy chọn, nhưng nó giúp chúng tôi gửi cho bạn mật khẩu mới qua thư điện tử nếu bạn quên mật khẩu của mình.',
 'prefs-help-email-others' => 'Bạn cũng có thể lựa chọn cho phép người khác liên lạc với bạn thông qua trang cá nhân hoặc trang thảo luận cá nhân mà không cần để lộ danh tính.',
-'prefs-help-email-required' => 'Bắt buộc phải có địa chỉ e-mail.',
+'prefs-help-email-required' => 'Bắt buộc phải có địa chỉ thư điện tử.',
 'prefs-info' => 'Thông tin cơ bản',
 'prefs-i18n' => 'Quốc tế hóa',
 'prefs-signature' => 'Chữ ký',
@@ -1528,7 +1528,7 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'right-suppressrevision' => 'Xem lại và phục hồi phiên bản mà Sysop không thấy',
 'right-suppressionlog' => 'Xem nhật trình riêng tư',
 'right-block' => 'Cấm thành viên khác sửa đổi',
-'right-blockemail' => 'Cấm thành viên gửi thư',
+'right-blockemail' => 'Cấm người dùng gửi thư điện tử',
 'right-hideuser' => 'Cấm thành viên, rồi ẩn nó đi',
 'right-ipblock-exempt' => 'Bỏ qua cấm IP, tự động cấm và cấm dải IP',
 'right-proxyunbannable' => 'Bỏ qua cấm proxy tự động',
@@ -2137,6 +2137,7 @@ Xin lưu ý là các trang Web bên ngoài có thể liên kết đến một t
 Bạn có thể thu hẹp kết quả bằng cách chọn loại nhật trình, tên thành viên (phân biệt chữ hoa-chữ thường), hoặc các trang bị ảnh hưởng (cũng phân biệt chữ hoa-chữ thường).',
 'logempty' => 'Không có mục nào khớp với từ khóa.',
 'log-title-wildcard' => 'Tìm các tựa trang bắt đầu bằng các chữ này',
+'showhideselectedlogentries' => 'Hiện/ẩn các mục nhật trình đã chọn',
 
 # Special:AllPages
 'allpages' => 'Mọi trang',
@@ -2586,7 +2587,7 @@ $1',
 ** Con rối của thành viên bị cấm',
 'ipb-hardblock' => 'Ngăn không cho thành viên đã đăng nhập sửa đổi từ địa chỉ IP này',
 'ipbcreateaccount' => 'Cấm mở tài khoản',
-'ipbemailban' => 'Không cho gửi email',
+'ipbemailban' => 'Không cho gửi thư điện tử',
 'ipbenableautoblock' => 'Tự động cấm các địa chỉ IP mà thành viên này sử dụng',
 'ipbsubmit' => 'Cấm',
 'ipbother' => 'Thời hạn khác:',
index 369b8f8..b81365a 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Walloon (Walon)
+/** Walloon (walon)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -55,6 +55,19 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Categoreye_copene',
 );
 
+$specialPageAliases = array(
+       'Allpages'                  => array( 'Totes_les_pådjes' ),
+       'Block'                     => array( 'Bloker', 'Blocaedje' ),
+       'Categories'                => array( 'Categoreyes' ),
+       'Preferences'               => array( 'Preferinces' ),
+       'Prefixindex'               => array( 'Indecse_pa_betchete' ),
+       'Search'                    => array( 'Cweri' ),
+       'Specialpages'              => array( 'Pådjes_sipeciåles' ),
+       'Statistics'                => array( 'Sitatistikes' ),
+       'Version'                   => array( 'Modêye' ),
+       'Watchlist'                 => array( 'Pådjes_shuvowes' ),
+);
+
 # definixha del cogne po les limeros
 # (number format definition)
 # en: 12,345.67 -> wa: 12 345,67
@@ -63,26 +76,22 @@ $separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
 # $linkTrail = '/^([a-zåâêîôûçéèA-ZÅÂÊÎÔÛÇÉÈ]+)(.*)$/sDu';
 $linkTrail = '/^([a-zåâêîôûçéè]+)(.*)$/sDu';
 
-#
-# NOTE:
-# sysop = manaedjeu
-# bureaucrat = mwaisse-manaedjeu
-#
-
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Sorlignî les loyéns',
+'tog-underline' => 'Sorlignî les loyéns:',
 'tog-justify' => 'Djustifyî les hagnons',
-'tog-hideminor' => 'Èn nén mostrer les <i>dierins candjmints</i> mineurs',
-'tog-extendwatchlist' => "Ragrandi l' djivêye po mostrer tos les candjmints",
-'tog-usenewrc' => 'Ramidrés <i>dierins candjmints</i> (JavaScript)',
+'tog-hideminor' => 'Èn nén mostrer les dierins candjmints mineurs',
+'tog-hidepatrolled' => 'Èn nén mostrer les candjmints ddja patrouyîs',
+'tog-newpageshidepatrolled' => 'Èn nén mostrer el djivêye des novelès pådjes les cenes dedja patrouyeyes',
+'tog-extendwatchlist' => "Ragrandi l' djivêye po mostrer tos les candjmints, nén seulmint les dierins",
+'tog-usenewrc' => 'Eployî les ramidrés dierins candjmints (i fåt JavaScript)',
 'tog-numberheadings' => 'Limerotaedje otomatike des tites',
 'tog-showtoolbar' => "Mostrer l' bår d' usteyes e môde candjmint (JavaScript)",
 'tog-editondblclick' => 'Candjî les pådjes avou on dobe-clitch (JavaScript)',
 'tog-editsection' => "Eployî les loyéns «[candjî]» po candjî rén k' ene seccion",
 'tog-editsectiononrightclick' => 'Candjî les seccions avou on dobe-clitch sol tite (JavaScript)',
 'tog-showtoc' => "Mostrer l' tåvlea d' ådvins<br />(po ls årtikes avou pus di 3 seccions)",
-'tog-rememberpassword' => 'Rimimbrer li scret inte les sessions (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => "Rimimbrer m' sicret inte les sessions (nén dpus ki po $1 {{PLURAL:$1|djoû|djoûs}})",
 'tog-watchcreations' => "Mete les pådjes ki dj' askepeye dins l' djivêye des pådjes shuvowes",
 'tog-watchdefault' => "Shuve les årtikes ki dj' fwai ou ki dj' candje",
 'tog-watchmoves' => "Radjouter a m' djivêye des shuvous les pådjes ki dji displaece",
@@ -96,16 +105,20 @@ $messages = array(
 'tog-enotifminoredits' => "M' emiler eto po les ptits candjmints",
 'tog-enotifrevealaddr' => 'Mostrer mi adresse emile dins les emiles di notifiaedje',
 'tog-shownumberswatching' => "Mostrer l' nombe d' uzeus ki shuvèt l' pådje",
-'tog-fancysig' => 'Sinateure brute (sins loyén otomatike)',
-'tog-externaleditor' => "Eployî on dfoûtrin aspougneu d' tecse come prémetowe dujhance",
-'tog-externaldiff' => 'Eployî on dfoûtrin programe di diferinces come prémetowe dujhance',
+'tog-oldsig' => 'Siné pol moumint:',
+'tog-fancysig' => 'Sinateure avou do tecse wiki (sins loyén otomatike)',
+'tog-externaleditor' => "Eployî on dfoûtrin aspougneu d' tecse come prémetowe dujhance (po les spepieus uzeus seulmint, ca i vs fåt fé des apontiaedjes sol sopiutrece da vosse, [//www.mediawiki.org/wiki/Manual:External_editors loukîz chal po pus di racsegnes]).",
+'tog-externaldiff' => 'Eployî on dfoûtrin programe di diferinces come prémetowe dujhance (po les spepieus uzeus seulmint, ca i vs fåt fé des apontiaedjes sol sopiutrece da vosse, [//www.mediawiki.org/wiki/Manual:External_editors loukîz chal po pus di racsegnes]).',
 'tog-showjumplinks' => 'Mete en alaedje les loyéns di naiviaedje «potchî a» å dzeu del pådje (pol pea «Myskin» et ds ôtes)',
 'tog-uselivepreview' => "Eployî l' prévoeyaedje abeye (JavaScript) (Esperimintå)",
 'tog-forceeditsummary' => "M' advierti cwand dji lai vude on rascourti",
 'tog-watchlisthideown' => 'Èn nén mostrer les candjmints da minne',
 'tog-watchlisthidebots' => 'Èn nén mostrer les candjmints des robots',
-'tog-watchlisthideminor' => "Catchî les candjmints mineurs dins l' djivêye des shuvous",
-'tog-ccmeonemails' => "m' evoyî ene copeye des emiles ki dj' evoye ås ôtes",
+'tog-watchlisthideminor' => 'Èn nén mostrer les candjmints mineurs',
+'tog-watchlisthideliu' => 'Èn nén mostrer les candjmints fwait pa des uzeus edjîstrés',
+'tog-watchlisthideanons' => 'Èn nén mostrer les candjmints fwait pa des uzeus anonimes',
+'tog-watchlisthidepatrolled' => 'Èn nén mostrer les candjmints ddja patrouyîs',
+'tog-ccmeonemails' => "M' evoyî ene copeye des emiles ki dj' evoye ås ôtes",
 'tog-diffonly' => "Èn nén håyner l' contnou del pådje pa dzo l' pådje des diferinces",
 'tog-showhiddencats' => 'Mostrer les categoreyes mucheyes',
 
@@ -113,6 +126,10 @@ $messages = array(
 'underline-never' => 'Måy',
 'underline-default' => 'Valixhance do betchteu',
 
+# Font style option in Special:Preferences
+'editfont-style' => 'Stîle del fonte pol boesse di tecse',
+'editfont-default' => 'Valixhance do betchteu',
+
 # Dates
 'sunday' => 'dimegne',
 'monday' => 'londi',
@@ -171,12 +188,15 @@ $messages = array(
 'subcategories' => 'Dizo-categoreyes',
 'category-media-header' => 'Media el categoreye «$1»',
 'category-empty' => "''Cisse categoreye ci n' a pol moumint nol årtike ni media.''",
+'hidden-categories' => '{{PLURAL:$1|Categoreye catcheye|Categoreyes catcheyes}}',
+'hidden-category-category' => 'Categoreyes catcheyes',
 'category-subcat-count' => 'Dins cisse categoreye, gn a {{PLURAL:$2|li dzo-categoreye|$2 dizo-categoreyes, inte di zeles {{PLURAL:$1|li cene|les $1}}}} cial pa-dzo.',
 'category-subcat-count-limited' => "Dins cisse categoreye, gn a {{PLURAL:$1|l' dizo-categoreye|les dzo-categoreyes}} shuvantes.",
-'category-article-count' => 'Dins cisse categoreye cial, gn a {{PLURAL:$2|li pådje ki shût|$2 pådje, inte di zeles {{PLURAL:$1|li cene|les $1}} cial padzo}}.',
+'category-article-count' => 'Dins cisse categoreye cial, gn a {{PLURAL:$2|li pådje ki shût|$2 pådjes, inte di zeles {{PLURAL:$1|li cene|les $1}} cial padzo}}.',
 'category-article-count-limited' => "{{PLURAL:$1|Gn a l' pådje ki shût|Les $1 pådjes ki shuvnut si trovèt ddja}} dins cisse categoreye ci.",
 'category-file-count' => "{{PLURAL:$2|Dins cisse categoreye ci, gn a k' ene pådje.|{{PLURAL:$1|Gn a cisse pådje ci|Gn a les $1 pådjes ki shuvèt}} dins cisse categoreye ci, po $2 pådjes å totå.}}",
 'category-file-count-limited' => "{{PLURAL:$1|Gn a k' cisse pådje cial|Gn a les $1 pådjes ciddé padzo}} dins cisse categoreye ci.",
+'listingcontinuesabbrev' => '(shûte)',
 
 'about' => 'Åd fwait',
 'article' => 'Årtike',
@@ -198,6 +218,23 @@ $messages = array(
 'qbmyoptions' => 'Mes pådjes',
 'qbspecialpages' => 'Pådjes sipeciåles',
 
+# Vector skin
+'vector-action-addsection' => 'Radjouter on sudjet',
+'vector-action-delete' => 'Disfacer',
+'vector-action-move' => 'Displaecî',
+'vector-action-protect' => 'Protedjî',
+'vector-action-undelete' => 'Rapexhî',
+'vector-action-unprotect' => "Candjî l' protedjaedje",
+'vector-simplesearch-preference' => 'Permete les amidreyès sudjestions di cweraedje (pea «Vector» seulmint)',
+'vector-view-create' => 'Ahiver',
+'vector-view-edit' => 'Candjî',
+'vector-view-history' => "Vey l' istwere",
+'vector-view-view' => 'Lére',
+'vector-view-viewsource' => 'Vey côde sourdant',
+'actions' => 'Accions',
+'namespaces' => 'Espåces di lomaedje',
+'variants' => 'Variantes',
+
 'errorpagetitle' => 'Aroke',
 'returnto' => 'Rivni al pådje «$1».',
 'tagline' => 'Èn årtike di {{SITENAME}}.',
@@ -219,29 +256,30 @@ $messages = array(
 'delete' => 'Disfacer',
 'deletethispage' => "Disfacer l' pådje",
 'undelete_short' => 'Rapexhî {{PLURAL:$1|on candjmint|$1 candjmints}}',
+'viewdeleted_short' => 'Vey {{PLURAL:$1|on candjmint disfacé|$1 candjmints disfacés}}',
 'protect' => 'Protedjî',
-'protect_change' => "candjî l' protedjaedje",
+'protect_change' => 'candjî',
 'protectthispage' => "Protedjî l' pådje",
-'unprotect' => 'Disprotedjî',
-'unprotectthispage' => "Disprotedjî l' pådje",
+'unprotect' => "Candjî l' protedjaedje",
+'unprotectthispage' => "Candjî l' protedjaedje del pådje",
 'newpage' => 'Novele pådje',
 'talkpage' => 'Copene sol pådje',
 'talkpagelinktext' => 'Copiner',
 'specialpage' => 'Pådje sipeciåle',
 'personaltools' => 'Usteyes da vosse',
-'postcomment' => 'Sicrire on comintaire',
+'postcomment' => 'Novele seccion',
 'articlepage' => "Vey l' årtike",
 'talk' => 'Copene',
 'views' => 'Vuwes',
 'toolbox' => 'Boesse ås usteyes',
 'userpage' => "Vey li pådje di l' uzeu",
 'projectpage' => 'Vey li pådje do pordjet',
-'imagepage' => "Vey li pådje di l' imådje",
+'imagepage' => 'Vey li pådje do fitchî',
 'viewtalkpage' => 'Vey li pådje di copene',
 'otherlanguages' => 'Ôtes lingaedjes',
 'redirectedfrom' => '(Redjiblé di $1)',
 'redirectpagesub' => 'Pådje di redjiblaedje',
-'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1.',
+'lastmodifiedat' => 'Cisse pådje a stî candjeye pol dierin côp li $2 a $1.',
 'viewcount' => 'Cisse pådje la a stî léjhowe {{PLURAL:$1|on côp|$1 côps}}.',
 'protectedpage' => 'Pådje protedjeye',
 'jumpto' => 'Potchî a:',
@@ -252,6 +290,7 @@ Gn a trop d' uzeus ki saynut di vey cisse pådje ci.
 Soeyoz vayant di ratinde ene miete divant di rsayî di vey cisse pådje ci.
 
 $1",
+'pool-errorunknown' => 'Aroke nén cnoxhowe',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'Åd fwait di {{SITENAME}}',
@@ -271,7 +310,7 @@ $1",
 'badaccess' => "Åk n' a nén stî avou les permissions",
 
 'versionrequired' => "I vs fåt l' modêye $1 di MediaWiki",
-'versionrequiredtext' => "I vs fåt l' modêye $1 di MediaWiki po-z eployî cisse pådje ci. Loukîz a [[Special:Version]]",
+'versionrequiredtext' => "I vs fåt l' modêye $1 di MediaWiki po-z eployî cisse pådje ci. Loukîz [[Special:Version|al pådje des modêyes]]",
 
 'ok' => "'l est bon",
 'retrievedfrom' => 'Prin del pådje «$1»',
@@ -281,26 +320,31 @@ $1",
 'youhavenewmessagesmulti' => 'Vos avoz des noveas messaedjes so $1',
 'editsection' => 'candjî',
 'editold' => 'candjî',
+'viewsourceold' => 'vey côde sourdant',
 'editlink' => 'candjî',
 'viewsourcelink' => 'Vey côde sourdant',
 'editsectionhint' => "Candjî l' seccion: $1",
 'toc' => 'Ådvins',
 'showtoc' => 'mostrer',
 'hidetoc' => 'catchî',
+'collapsible-collapse' => 'erôler',
+'collapsible-expand' => 'diswalper',
 'thisisdeleted' => 'Vey ou rapexhî $1?',
 'viewdeleted' => 'Vey $1?',
 'restorelink' => '{{PLURAL:$1|on candjmint disfacé|$1 candjmints disfacés}}',
 'feedlinks' => 'Sindicåcion:',
 'feed-invalid' => 'Sôre di sindicåcion nén valide.',
 'red-link-title' => '$1 (nén co ataké)',
+'sort-descending' => 'Discrexhant relijhaedje',
+'sort-ascending' => 'Acrexhant relijhaedje',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Årtike',
 'nstab-user' => "Pådje di l' uzeu",
 'nstab-media' => 'Media',
-'nstab-special' => 'Sipeciås',
+'nstab-special' => 'Pådje sipeciåle',
 'nstab-project' => 'Pådje',
-'nstab-image' => 'Imådje',
+'nstab-image' => 'Fitchî',
 'nstab-mediawiki' => 'Messaedje',
 'nstab-template' => 'Modele',
 'nstab-help' => 'Aidance',
@@ -308,7 +352,9 @@ $1",
 
 # Main script and global functions
 'nosuchaction' => 'Nole sifwaite accion',
-'nosuchactiontext' => "L' accion specifieye pal hårdêye n' est nén ricnoxhowe på wiki.",
+'nosuchactiontext' => "L' accion specifieye pal hårdêye n' est nén ricnoxhowe på wiki.
+Motoit ki vos avoz må scrît l' hårdêye ou shuvou on cron loyén.
+Ça pôreut eto esse on bug do programe eployî pa {{SITENAME}}.",
 'nosuchspecialpage' => 'Nole sifwaite pådje',
 'nospecialpagetext' => 'Vos avoz dmandé ene pådje sipeciåle nén valide, po ene djivêye des pådjes sipeciåles valides, loukîz a [[Special:SpecialPages]].',
 
@@ -320,14 +366,17 @@ $1",
 Li dierin cweraedje del båze di dnêyes di sayî esteut:
 <blockquote><tt>$1</tt></blockquote>
 a pårti del fonccion «<tt>$2</tt>».
-MySQL a rtourné l' aroke «<tt>$3: $4</tt>».",
+Li båze di dnêyes a rtourné l' aroke «<tt>$3: $4</tt>».",
 'dberrortextcl' => "Åk n' a nén stî avou l' sintacse do cweraedje del båze di dnêyes.
 Li dierin cweraedje del båze di dnêyes di sayî esteut:
 «$1»
 a pårti del fonccion «$2».
-MySQL a rtourné l' aroke «$3: $4».",
+Li båze di dnêyes a rtourné l' aroke «$3: $4».",
 'laggedslavemode' => "Asteme: I s' pout ki l' pådje n' åye nén co les dierins candjmints.",
+'readonly' => 'Li båze di dnêyes est aclawêye',
+'missingarticle-rev' => '(l° del modêye: $1)',
 'internalerror' => 'Divintrinne aroke',
+'internalerror_info' => 'Divintrinne aroke: $1',
 'filecopyerror' => "Dji n' a savou copyî l' fitchî «$1» viè «$2».",
 'filerenameerror' => "Dji n' a savou rlomer l' fitchî «$1» e «$2».",
 'filedeleteerror' => "Dji n' a savou disfacer l' fitchî «$1».",
@@ -335,31 +384,36 @@ MySQL a rtourné l' aroke «$3: $4».",
 'filenotfound' => "Dji n' a savou trover l' fitchî «$1».",
 'unexpected' => 'Valixhance nén ratindowe: «$1»=«$2».',
 'badarticleerror' => "Cisse accion la n' si pout nén fé so cisse pådje ci.",
-'cannotdelete' => "Dji n' sai disfacer l' pådje ou l' imådje dimandêye (ça s' pôreut k' ene ôte sakî l' a ddja disfacé).",
+'cannotdelete' => "Dji n' sai disfacer l' pådje ou l' fitchî «$1».
+Ça s' pôreut k' ene ôte sakî l' a ddja disfacé.",
+'cannotdelete-title' => "Dji n' sai disfacer l' pådje «$1»",
 'badtitle' => 'Måva tite',
 'badtitletext' => "Li tite del pådje dimandêye n' esteut nén valide, il estet vude, oudonbén c' esteut on cron loyén eterlingaedje ou eterwiki. Ça s' pout k' il åye onk ou sacwants caracteres ki n' polèt nén esse eployîs dins les tites.",
-'perfcached' => "Les dnêyes ki shuvèt c' est ene copeye e muchete, et ça s' pout ki ça n' soeye nén ttafwaitmint a djoû. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
-'perfcachedts' => "Les dnêyes ki shuvèt c' est ene copeye e muchete, ey elle ont stî metowes a djoû pol dierin côp li $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
+'perfcached' => "Les dnêyes ki shuvèt c' est ene copeye e muchete, et ça s' pout ki ça n' soeye nén ttafwaitmint a djoû. Li muchete a-st on macsimom {{PLURAL:$1|d' on rzultat|di $1 rizultats}}.",
+'perfcachedts' => "Les dnêyes ki shuvèt c' est ene copeye e muchete, ey elle ont stî metowes a djoû pol dierin côp li $1. Li muchete a-st on macsimom {{PLURAL:$4|d' on rzultat|di $4 rizultats}}.",
 'wrong_wfQuery_params' => 'Parametes incoreks po wfQuery()<br />
 Fonccion: $1<br />
 Cweraedje: $2',
 'viewsource' => 'Vey côde sourdant',
-'viewsourcetext' => 'Loukîz li contnou di l’ årtike, et s’ li rcopyî si vos vloz, por vos bouter dsu foû des fyis :',
+'viewsource-title' => 'Côde sourdant di «$1»',
+'viewsourcetext' => "Loukîz li contnou d' l’ årtike, et s’ li rcopyî si vos vloz, por vos bouter dsu foû des fyis:",
 'protectedinterface' => "Cisse pådje ci dene on tecse d' eterface pol programe, eyet elle a stî protedjeye po s' waeranti siconte des abus.",
-'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
-Changes to this page will affect the appearance of the user interface for other users.
-For translations, please consider using [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
+'editinginterface' => "'''Asteme:''' Vos estoz ki candje ene pådje eployeye po fé l' tecse po l' eterface do programe.
+Les candjmints ki vso frîz vont candjî l' rivnance di l' eterface po ds ôtes uzeus.
+Po des ratournaedjes, loukîz purade a [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], li pordjet di locålijhaedje da MediaWiki.",
+'cascadeprotected' => "Cisse pådje ci a stî protedjeye siconte des candjmints, pask' ele est eploye ådvins {{PLURAL:$1|del pådje shuvante k' est protedjeye|des pådjes shuvantes ki sont protedjeyes}} avou l' tchuze «e cascåde» en alaedje:
+$2",
 
 # Login and logout pages
 'logouttext' => "'''Vos vs avoz dislodjî.'''
 
-Vos ploz continouwer a naivyî so {{SITENAME}} anonimmint, oudonbén vos relodjî dizo l' minme uzeu ou dizo èn uzeu diferin.
+Vos ploz continouwer a naivyî so {{SITENAME}} anonimmint, oudonbén [[Special:UserLogin|vos relodjî]], dizo l' minme uzeu ou dizo èn uzeu diferin.
 Notez ki des pådjes k' i gn a si pôrént continowuer a vey come si vos estîz elodjî, disk' a tant ki vos vudrîz l' muchete di vosse betchteu waibe.",
 'welcomecreation' => '== Bénvnowe, $1! ==
 
 Vosse conte a stî ahivé.
-Èn rovyîz nén di candjî les preferinces di {{SITENAME}} a vosse môde.',
-'yourname' => "Vosse no d' elodjaedje",
+Èn rovyîz nén di candjî les [[Special:Preferences|preferinces di {{SITENAME}}]] a vosse môde.',
+'yourname' => "Vosse no d' elodjaedje:",
 'yourpassword' => 'Vosse sicret',
 'yourpasswordagain' => 'Ritapez vosse sicret',
 'remembermypassword' => "Rimimbrer m' sicret inte les sessions (nén dpus ki po $1 {{PLURAL:$1|djoû|djoûs}})",
@@ -368,10 +422,11 @@ Vosse conte a stî ahivé.
 'nav-login-createaccount' => "Ahiver on conte, udon-bén s' elodjî",
 'loginprompt' => 'Vos dvoz permete les coûkes po vs elodjî so {{SITENAME}}.',
 'userlogin' => "S' elodjî",
+'userloginnocreate' => "S' elodjî",
 'logout' => 'Si dislodjî',
 'userlogout' => 'Si dislodjî',
 'notloggedin' => 'Nén elodjî',
-'nologin' => "Vos n' avoz nén d' conte so ç' wiki ci? '''$1'''.",
+'nologin' => "Vos n' avoz nén d' conte so ç' wiki ci? $1.",
 'nologinlink' => 'Ahivez on conte da vosse',
 'createaccount' => 'Ahiver on novea conte',
 'gotaccount' => "Vos avoz ddja on conte so ç' wiki ci? '''$1'''.",
@@ -379,7 +434,8 @@ Vosse conte a stî ahivé.
 'createaccountmail' => 'pa emile',
 'createaccountreason' => 'Råjhon:',
 'badretype' => 'Vos avoz dné deus screts diferins.',
-'userexists' => "Li no d' uzeu ki vs avoz tchoezi est ddja eployî. Tchoezixhoz è èn ôte s' i vs plait.",
+'userexists' => "Li no d' uzeu ki vs avoz tchoezi est ddja eployî.
+Tchoezixhoz è èn ôte s' i vs plait.",
 'loginerror' => "Aroke d' elodjaedje",
 'nocookiesnew' => "Li conte a stî ahivé, mins vos n' estoz nén elodjî. {{SITENAME}} eploye des coûkes po l' elodjaedje des uzeus. Vos avoz dismetou l' sopoirt des coûkes dins vosse betchteu waibe; rimetoz l' en alaedje et relodjîz vs avou vosse novea no d' elodjaedje eyet scret, s' i vs plait.",
 'nocookieslogin' => "{{SITENAME}} eploye des coûkes po l' elodjaedje des uzeus. Vos avoz dismetou l' sopoirt des coûkes dins vosse betchteu waibe; rimetoz l' en alaedje et relodjîz vs s' i vs plait.",
@@ -387,41 +443,86 @@ Vosse conte a stî ahivé.
 'loginsuccesstitle' => 'Vos estoz elodjî',
 'loginsuccess' => "'''L' elodjaedje a stî comifåt, asteure vos estoz elodjî dins {{SITENAME}} dizo l' no d' uzeu «$1».'''",
 'nosuchuser' => "I g na nou uzeu dizo l' no «$1».
-Verifyîz çou k' vos avoz tapé, oudonbén rimplixhoz les ôtes tchamps
-et clitchîz sol boton po-z ahiver on novea conte.",
+Notez k' les nos d' uzeu fjhèt l' diferince etur pitites et grandès letes.
+Verifyîz çou k' vos avoz tapé, oudonbén [[Special:UserLogin/signup|ahivez on novea conte]].",
 'nosuchusershort' => "I g na nou uzeu dizo l' no «$1». Verifyîz çou k' vos avoz tapé.",
 'nouserspecified' => "Vos dvoz dner on no d' elodjaedje.",
 'wrongpassword' => "Li scret ki vs avoz dné est måva. Rissayîz s' i vs plait.",
 'wrongpasswordempty' => "Vos avoz dné on vude sicret. Rissayîz s' i vs plait.",
-'passwordtooshort' => 'Li scret est pår trop court. I doet esse di pol moens {{PLURAL:$1|1 caractere|$1 caracteres}}.',
+'passwordtooshort' => 'Li scret doet esse di pol moens {{PLURAL:$1|1 caractere|$1 caracteres}}.',
 'mailmypassword' => "M' emiler on novea scret",
-'passwordremindertitle' => 'Rimimbraedje do scret po {{SITENAME}}',
-'passwordremindertext' => "Ene sakî (probåblumint vos-minme, avou l' adresse IP $1) a dmandé k' on vs emile on novea scret po {{SITENAME}} ($4).
-Li scret po l' uzeu «$2» est asteure «$3».
-Po pus di såvrité, vos vos dvrîz elodjî eyet rcandjî vosse sicret å pus abeye.
-
-Si ene ôte sakî a fwait l' dimande, ou si vos vs avoz rtrové l' vî scret eyet nel pus vleur candjî, vos ploz djusse ignorer ci messaedje ci eyet continouwer avou l' vî scret.",
+'passwordremindertitle' => 'Novea scret timporaire po {{SITENAME}}',
+'passwordremindertext' => "Ene sakî (probåblumint vos-minme, avou l' adresse IP $1) a dmandé 
+on novea scret po {{SITENAME}} ($4).
+On scret timporare po l' uzeu «$2» a stî fwait, c' est «$3».
+Si c' est vos k' a fwait l' dimande, vos vs divoz elodjî eyet tchoezi on novea scret.
+Li scret timporaire ni srè pus valide après {{PLURAL:$5|on djoû|$5 djoûs}}.
+
+Si c' est ene ôte sakî k' a fwait l' dimande, ou si vos vs avoz rtrové l' vî scret eyet 
+nel pus vleur candjî, vos ploz djusse ignorer ci messaedje ci eyet continouwer avou l' vî scret.",
 'noemail' => "I n' a pont d' adresse emile di cnoxhowe po l' uzeu «$1».",
+'noemailcreate' => 'Vos dvoz dner ene adresse emile valide.',
 'passwordsent' => "On novea scret a stî emilé a l' adresse emile
 racsegneye po l' uzeu «$1».
 Relodjîz vs avou ç' noû scret on côp ki vos l' åroz rçuvou s' i vs plait.",
+'blocked-mailpassword' => "Voste adresse IP est blokêye pol sicrijhaedje, et do côp vos n' poloz nén eployî l' fonccion d' rapexhaedje do scret po-z eviter les abus.",
 'eauthentsent' => "Èn emile d' acertinaedje a stî evoyî a l' adresse emile tchoezeye.
 Divant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instruccions di l' emile ki vos alez rçure, po-z acertiner ki l' conte est bén da vosse.",
 'mailerror' => "Åk n' a nén stî tot-z evoyant l' emile: $1",
-'acct_creation_throttle_hit' => "Mande escuzes, mins vos avoz ddja ahivé {{PLURAL:$1|1 conte|$1 contes}}. Vos n' endè ploz nén fé des ôtes.",
-'emailauthenticated' => 'Voste adresse emile a stî acertinêye li $1.',
+'acct_creation_throttle_hit' => "Ene sakî a ddja ahivé {{PLURAL:$1|1 conte|$1 contes}} dins les dierinnes 24 eures a pårti dek minme adresse IP, çou k' est l' limite acceptêye po ene sifwaite termene.
+Ça fwait ki l' ahivaedje di contes a p·årti di ciste adresse IP la a stî dismetou pol moumint.",
+'emailauthenticated' => 'Voste adresse emile a stî acertinêye li $2 a $3.',
 'emailnotauthenticated' => "Voste adresse emile n' a nén co stî acertinêye. Nol emile ni serè-st evoyî po les fonccions shuvantes.",
 'noemailprefs' => 'Dinez ene adresse emile po ces fonccions si mete en alaedje.',
 'emailconfirmlink' => 'Acertinaedje di voste adresse emile',
-'invalidemailaddress' => "L' adresse emile ni pout nén esse acceptêye la k' i shonnreut k' ele soeye dins ene cogne nén valide. Tapez ene adresse emile sicrîte comifåt oudobén vudîz l' tchamp, s' i vs plait.",
+'invalidemailaddress' => "L' adresse emile ni pout nén esse acceptêye la k' i shonnreut k' ele soeye dins ene cogne nén valide.
+Tapez ene adresse emile sicrîte comifåt oudobén vudîz l' tchamp, s' i vs plait.",
 'accountcreated' => 'Conte ahivé',
 'accountcreatedtext' => "Li conte d' uzeu «$1» a stî ahivé.",
 'loginlanguagelabel' => 'Lingaedje: $1',
 
 # Change password dialog
-'oldpassword' => 'Vî scret',
-'newpassword' => 'Noû scret',
-'retypenew' => "Ritapez l' noû scret",
+'resetpass' => "Candjî l' sicret",
+'resetpass_announce' => "Vos vs avoz elodjî avou on scret timporaire ki vos a stî emilé.
+Por vos fini l' elodjaedje, vos dvoz defini on novea scret:",
+'resetpass_header' => "Candjî l' sicret do conte",
+'oldpassword' => 'Vî scret:',
+'newpassword' => 'Noû scret:',
+'retypenew' => "Ritapez l' noû scret:",
+'resetpass_submit' => "Defini on scret et s' elodjî",
+'resetpass_success' => "Vosse sicret a stî candjî comifåt!
+Asteure l' elodjaedje...",
+'resetpass_forbidden' => "Les screts n' polèt nén esse candjîs",
+'resetpass-no-info' => 'Vos dvoz esse elodjî po pleur aveur accès a cisse pådje ci.',
+'resetpass-submit-loggedin' => "Candjî l' sicret",
+'resetpass-submit-cancel' => 'Rinoncî',
+'resetpass-wrong-oldpass' => "Li scret timporaire ou do moumint n' est nén valide.
+Motoit ki vos l' avoz ddja candjî ou ridmandé on novea scret timporaire.",
+'resetpass-temp-password' => 'Sicret timporaire:',
+
+# Special:PasswordReset
+'passwordreset' => "Rifé l' sicret",
+'passwordreset-text' => 'Completez cisse formulrece ci po rçure èn emile ki dene les detays do conte da vosse.',
+'passwordreset-legend' => "Rifé l' sicret",
+'passwordreset-disabled' => "Li rfijhaedje di screts a stî dismetou so ç' wiki ci.",
+'passwordreset-pretext' => '{{PLURAL:$1||Dinez onk des elemints di dnêyes shuvants}}',
+'passwordreset-username' => "No d' elodjaedje:",
+'passwordreset-domain' => 'Dominne:',
+'passwordreset-capture' => "Vey li messaedje di l' emile?",
+'passwordreset-capture-help' => "Si vos clitchîz cisse boesse ci, l' emile (eyet li scret timporaire) vos srè håyné e minme tins k' il est emilé.",
+'passwordreset-email' => 'Adresse emile:',
+'passwordreset-emailtitle' => 'Detays do contre so {{SITENAME}}',
+
+# Special:ChangeEmail
+'changeemail' => "Candjî l' emile",
+'changeemail-header' => "Candjî l' adresse emile do conte",
+'changeemail-text' => "Rimplixhoz l' formulrece po candjî voste adresse emile. Vos dvroz dner vosse sicret po-z acertiner l' candjmint.",
+'changeemail-no-info' => 'Vos dvoz esse elodjî po pleur aveur accès a cisse pådje ci.',
+'changeemail-oldemail' => 'Adresse emile pol moumint:',
+'changeemail-newemail' => 'Novele adresse emile:',
+'changeemail-none' => '(nole)',
+'changeemail-submit' => "Candjî l' emile",
+'changeemail-cancel' => 'Rinoncî',
 
 # Edit page toolbar
 'bold_sample' => 'Cråssès letes',
@@ -431,7 +532,7 @@ Divant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instru
 'link_sample' => 'Tecse pol loyén',
 'link_tip' => 'Divintrin loyén',
 'extlink_sample' => 'http://www.example.com tecse pol hårdêye',
-'extlink_tip' => 'Difoûtrinne hårdêye (en rovyîz nén di mete «http://» pa dvant)',
+'extlink_tip' => 'Difoûtrinne hårdêye (èn rovyîz nén di mete «http://» pa dvant)',
 'headline_sample' => 'Tecse di tite',
 'headline_tip' => 'Tite di 2inme livea',
 'nowiki_sample' => "Tapez l' tecse nén wiki chal",
@@ -453,49 +554,99 @@ Divant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instru
 'showpreview' => 'Vey divant',
 'showlivepreview' => 'Vey divant',
 'showdiff' => 'Vey les candjmints',
-'anoneditwarning' => "'''Asteme:''' Vos n' estoz nén elodjî. Voste adresse IP serè rashiowe dins l' istwere di cisse pådje ci.",
+'anoneditwarning' => "'''Asteme:''' Vos n' estoz nén elodjî.
+Voste adresse IP serè rashiowe dins l' istwere di cisse pådje ci.",
+'anonpreviewwarning' => "''Vos n' estoz nén elodjî. Si vos schapez c' est voste adresse IP ki serè wårdêye dins l' istwere des candjmints.''",
 'missingsummary' => "'''Asteme:''' Vos n' avoz nén dné on tecse di rascourti po vosse candjmint. Si vos rclitchîz sol boton «Schaper», li candjmint da vosse serè schapé sins nou tecse di rascourti po l' istwere del pådje.",
 'missingcommenttext' => "Tapez on comintaire chal pa dzo s' i vs plait.",
 'blockedtitle' => "L' uzeu est bloké",
-'blockedtext' => "Vosse no d' uzeu ou voste adresse IP a stî blokêye pa $1.
-Li råjhon dnêye est:<br />''$2''<p>Vos ploz contacter $1 oudonbén onk des
+'blockedtext' => "'''Vosse no d' uzeu ou voste adresse IP a stî blokêye.'''
+
+Li blocaedje a stî fwait pa $1.
+Li råjhon dnêye est ''$2''.
+
+* Comince do blocaedje: $8
+* Fén do blocaedje: $6
+* Blocaedje di: $7
+
+Vos ploz contacter $1 oudonbén onk des
+[[{{MediaWiki:Grouppage-sysop}}|manaedjeus]] po discuter do blocaedje.
+Notez ki vos n' poloz nén eployî l' fonccion «emiler a l' uzeu» a moens ki vos åyîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]] et ki cisse possibilité n' a nén stî blokêye.
+Voste adresse IP est $3 eyet l' ID di blocaedje est $5.
+S' i vs plait racsegnoz totes les racsegnes chal å dzeur dins les dmandes ki vos frîz.",
+'autoblockedtext' => "Voste adresse IP a stî ablokêye otomaticmint, pask' elle a stî eployeye pa èn ôte uzeu, lu-minme dedja rbouté pa $1.
+Li råjhon k' on-z a dné, c' est:
+
+:''$2''.
+
+* Comince do blocaedje: $8
+* Fén do blocaedje: $6
+* Blocaedje di: $7
+
+Vos ploz contacter $1 oudonbén onk des
 [[{{MediaWiki:Grouppage-sysop}}|manaedjeus]] po discuter do blocaedje.
 
-Notez ki vos n' poloz nén eployî l' fonccion «emiler a l' uzeu» a moens ki vos åyîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]].
+Notez ki vos n' poloz nén eployî l' fonccion «emiler a l' uzeu» a moens ki vos åyîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]] et ki cisse possibilité n' a nén stî blokêye.
 
-Voste adresse IP est $3. S' i vs plait racsegnoz ciste adresse IP la dins les dmandes ki vos frîz.",
+Voste adresse IP est $3 eyet l' ID di blocaedje est $5.
+S' i vs plait racsegnoz totes les racsegnes chal å dzeur dins les dmandes ki vos frîz.",
+'blockednoreason' => 'sins dire pocwè',
 'whitelistedittext' => 'I vs fåt $1 po pleur candjî les årtikes.',
 'confirmedittext' => "I vs fåt acertiner vost emile po pleur candjî les årtikes. Dinez èn emile eyet l' acertiner dins vos [[Special:Preferences|preferinces d' uzeu]].",
 'loginreqtitle' => 'I vs fåt esse elodjî',
 'loginreqlink' => 'elodjî',
 'loginreqpagetext' => 'Vos vs divoz $1 po vey des ôtès pådjes.',
 'accmailtitle' => 'Li scret a stî evoyî.',
-'accmailtext' => 'Li scret po «$1» a stî evoyî a $2.',
+'accmailtext' => "On scret costrût a l' astcheyance po [[User talk:$1|$1]] a stî evoyî a $2.
+
+Li scret po ci novea conte ci pout esse candjî sol pådje di ''[[Special:ChangePassword|candjmint di scret]]'' après l' elodjaedje.",
 'newarticle' => '(Novea)',
 'newarticletext' => "Vos avoz clitchî so on loyén viè ene pådje ki n' egzistêye nén co.
 Mins '''vos''' l' poloz askepyî! Po çoula, vos n' avoz k' a cmincî a taper vosse tecse dins l' boesse di tecse chal pa dzo (alez vey li [[{{MediaWiki:Helppage}}|pådje d' aidance]] po pus d' infôrmåcion).
 Si vos n' voloz nén scrire cisse pådje chal, clitchîz simplumint sol boton '''En erî''' di vosse betchteu waibe po rivni al pådje di dvant.",
-'anontalkpagetext' => "---- ''Çouchal, c' est li pådje di copene po èn uzeu anonime ki n' a nén (co) fwait on conte por lu s' elodjî, ou ki n' l' eploye nén. Ça fwait k' on doet eployî si adresse IP limerike po l' idintifyî. Come ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos voeyoz chal des rmåkes et des messaedjes ki n' sont nén por vos. Loukîz s' i vs plait po [[Special:UserLogin|fé on novea conte ou s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.''",
-'noarticletext' => "I gn a pol moumint nou tecse e cisse pådje chal, vos ploz [[Special:Search/{{PAGENAME}}|cweri après l' tite di cisse pådje ci]] dins des ôtès pådjes, oudonbén [{{fullurl:{{FULLPAGENAME}}|action=edit}} ahiver l' pådje].",
-'clearyourcache' => "'''Note:''' après aveur schapé l' pådje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe: '''Mozilla / Firefox / Safari:''' tchôkîz so ''Shift'' to clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-Shift-R'' (''Cmd-Shift-R'' so on Mac); '''IE:''' tchôkîz so ''Ctrl'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5''; '''Konqueror:''' simplumint clitchîz so ''Rafrister'' ou l' tape ''F5''; les uzeus d' '''Opera''' dvront motoit netyî pår leu muchete, dins ''Usteyes→Preferinces''.",
-'usercssyoucanpreview' => "'''Racsegne:''' eployîz l' boton «Vey divant» po sayî vosse novea CSS divant del schaper.",
-'userjsyoucanpreview' => "'''Racsegne:''' eployîz l' boton «Vey divant» po sayî vosse novea JS divant del schaper.",
-'usercsspreview' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje di vosse stîle CSS d' uzeu, i n' a nén co stî schapé!'''",
+'anontalkpagetext' => "---- ''Çouchal, c' est li pådje di copene po èn uzeu anonime ki n' a nén (co) fwait on conte por lu s' elodjî, ou ki n' l' eploye nén.
+Ça fwait k' on doet eployî si adresse IP limerike po l' idintifyî.
+Come ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos voeyoz chal des rmarkes et des messaedjes ki n' sont nén por vos.
+Loukîz s' i vs plait po [[Special:UserLogin/signup|fé on novea conte]] ou [[Special:UserLogin|s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.''",
+'noarticletext' => 'I gn a pol moumint nou tecse e cisse pådje chal.
+Vos ploz [[Special:Search/{{PAGENAME}}|cweri après l\' tite di cisse pådje ci]] dins des ôtès pådjes,
+oudonbén <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås],
+ou co [{{fullurl:{{FULLPAGENAME}}|action=edit}} ahiver l\' pådje]</span>.',
+'noarticletext-nopermission' => 'I gn a pol moumint nou tecse e cisse pådje chal.
+Vos ploz [[Special:Search/{{PAGENAME}}|cweri après l\' tite di cisse pådje ci]] dins des ôtès pådjes,
+oudonbén <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås]</span>.',
+'blocked-notice-logextract' => '{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}} pol moumint.
+Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:',
+'clearyourcache' => "'''Note:''' après aveur schapé l' pådje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe.
+* '''Firefox / Safari:''' tchôkîz so ''Shift'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' so on Mac)
+* '''Google Chrome:''' tchôkîz so ''Ctrl-Shift-R'' (''⌘-Shift-R'' on a Mac)
+* '''Internet Explorer:''' tchôkîz so ''Ctrl'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5''
+* '''Konqueror:''' clitchîz so ''Rafrister'' ou tchôkîz so ''F5''
+* '''Opera:''' vudîz l' muchete dins ''Usteyes → Preferinces''.",
+'usercssyoucanpreview' => "'''Racsegne:''' eployîz l' boton «{{int:showpreview}}» po sayî vosse novea CSS divant del schaper.",
+'userjsyoucanpreview' => "'''Racsegne:''' eployîz l' boton «{{int:showpreview}}» po sayî vosse novea JavaScript divant del schaper.",
+'usercsspreview' => "Èn rovyîz nén ki c' est djusse on prévoeyaedje di vosse stîle CSS d' uzeu.'''
+'''I n' a nén co stî schapé!'''",
 'userjspreview' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje/saye di vosse JavaScript d' uzeu, i n' a nén co stî schapé!'''",
 'userinvalidcssjstitle' => "'''Asteme:''' I n' a pont d' pea lomêye «$1». Tuzez ki les pådjes .css eyet .js des uzeus eployèt des tite e ptitès letes, metans {{ns:user}}:Toto/vector.css et nén {{ns:user}}:Toto/Vector.css.",
 'updated' => '(Ramidré)',
-'previewnote' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje, li pådje n' est nén co schapêye!'''",
-'previewconflict' => 'Ci prévoeyaedje ci mostere kimint kel tecse del boesse di tecse do dzeu sereut håyné si vos decidez di clitchî so «schaper».',
+'note' => "'''Note :'''",
+'previewnote' => "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje.'''
+'''Les candmints n' ont nén co stî schapés!'''",
+'continue-editing' => 'Continouwer a candjî',
+'previewconflict' => 'Ci prévoeyaedje ci mostere kimint kel tecse del boesse di tecse do dzeu sereut håyné si vos decidez del schaper.',
 'session_fail_preview' => "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.
 Rissayîz s' i vs plait. Si çoula n' va todi nén, sayîz di vs dislodjî eyet di vs relodjî.'''",
 'session_fail_preview_html' => "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.'''
 
-''Come ci wiki chal a-st en alaedje li HTML brut, li prévoeyaedje est catchî, come proteccion siconte des atakes JavaScript.''
+''Come {{SITENAME}} a-st en alaedje li HTML brut, li prévoeyaedje est catchî, come proteccion siconte des atakes JavaScript.''
 
-'''Si c' est ene saye oniesse di candjî l' pådje, rissayîz s' i vs plait. Si çoula n' va todi nén, sayîz di vs dislodjî eyet di vs relodjî.'''",
+'''Si c' est ene saye oniesse di candjî l' pådje, rissayîz s' i vs plait.'''
+Si çoula n' va todi nén, sayîz di vs [[Special:UserLogout|dislodjî]] eyet di vs relodjî.",
 'editing' => 'Candjant $1',
+'creating' => 'Ahivant $1',
 'editingsection' => 'Candjant $1 (seccion)',
-'editingcomment' => 'Candjant $1 (comintaire)',
+'editingcomment' => 'Candjant $1 (novele seccion)',
 'editconflict' => 'Ecramiaedje inte deus candjmints: $1',
 'explainconflict' => "Ene sakî a candjî l' pådje do tins ki vos estîz a scrire.
 Li boesse di tecse do dzeur mostere li tecse del pådje come il est
@@ -518,18 +669,29 @@ Vos nos acertinez eto ki vos avoz scrît l' tecse vos-minme, oudonbén l' avoz c
 Si vos n' voloz nén scrire des årtikes ki polèt esse candjîs pa des ôtes, adon nels evoyîz nén chal.<br />
 Vos nos acertinez eto ki vos avoz scrît l' tecse vos-minme, oudonbén l' avoz copyî d' on sourdant libe (voeyoz $1 po pus di racsegnes).
 '''N' EVOYÎZ NÉN DES TECSES DIZO ABONDROETS SINS PERMISSION!'''",
-'longpageerror' => "'''AROKE: Li tecse ki vos avoz evoyî fwait di pus d' $1 kilo-octets, çou k' est pus ki l' macsimom di $2 kilo-octets. C' est nén possible del schaper sol sierveu.'''",
+'longpageerror' => "'''AROKE: Li tecse ki vos avoz evoyî fwait di pus d' $1 kilo-octet{{PLURAL:$1||s}}, çou k' est pus ki l' macsimom di $2 kilo-octet{{PLURAL:$2||s}}.'''
+C' est nén possible del schaper sol sierveu.",
 'readonlywarning' => "'''ASTEME: On-z overe sol båze di dnêyes pol moumint, ey elle a stî metowe e mode seulmint-lére.
-Do côp, vos n' såroz schaper vos candjmints asteure; motoit vos dvrîz copyî et aclaper l' tecse dins on fitchî da vosse pol poleur rimete pus tård.'''",
-'protectedpagewarning' => "'''ASTEME: Cisse pådje chal a stî protedjeye siconte des candjmints, seulmint les uzeus avou èn accès di manaedjeu el polèt candjî.'''",
-'semiprotectedpagewarning' => "'''Note:''' cisse pådje ci a stî protedjeye po k' seulmint les uzeus edjîstrés el polexhe candjî.",
-'templatesused' => 'Modeles eployîs e cisse pådje ci:',
+Do côp, vos n' såroz schaper vos candjmints asteure.'''
+Motoit vos dvrîz copyî et aclaper l' tecse dins on fitchî da vosse pol poleur rimete pus tård.
+
+Li manaedjeu k' a-st eclawé l' båze di dnêyes a dné cist esplicaedje ci: $1",
+'protectedpagewarning' => "'''ASTEME: Cisse pådje chal a stî protedjeye, seulmint les uzeus avou èn accès di manaedjeu el polèt candjî.'''
+Li dierinne intrêye ezès djournås est håynêye chal pa dzo po referince:",
+'semiprotectedpagewarning' => "'''Note:''' cisse pådje ci a stî protedjeye po k' seulmint les uzeus edjîstrés el polexhe candjî.
+Li dierinne intrêye do djournå est håynêye chal pa dzo po referince:",
+'cascadeprotectedwarning' => "'''ASTEME:''' cisse pådje ci a stî protedjeye ça fwait ki seulmint les uzeus avou l' livea d' manaedjeu el polnut candjî, paski l' pådje est eployeye å dvins {{PLURAL:$1|del pådje shuvante, k' est protedjeye|des pådjes shuvantes, ki sont protedjeyes}} avou l' tchuze «e cascåde» en alaedje:",
+'templatesused' => '{{PLURAL:$1|Modele eployî|Modeles eployîs}} e cisse pådje ci:',
+'templatesusedpreview' => "{{PLURAL:$1|Modele eployî|Modeles eployîs}} e ç' prévoeyaedje ci:",
+'templatesusedsection' => '{{PLURAL:$1|Modele eployî|Modeles eployîs}} e cisse seccion ci:',
 'template-protected' => '(protedjî)',
 'template-semiprotected' => '(dimey-protedjî)',
 'nocreatetitle' => 'Ahivaedje di pådjes limité',
-'nocreatetext' => "Cisse waibe ci a limité l' possibilité d' ahiver des novelès pådjes. Vos ploz rivni en erî eyet candjî ene pådje k' egzistêye dedja, oudonbén, [[Special:UserLogin|vos elodjî ou ahiver on conte d' uzeu]].",
+'nocreatetext' => "{{SITENAME}} a limité l' possibilité d' ahiver des novelès pådjes.
+Vos ploz rivni en erî eyet candjî ene pådje k' egzistêye dedja, oudonbén, [[Special:UserLogin|vos elodjî ou ahiver on conte d' uzeu]].",
 'nocreate-loggedin' => "Vos n' avoz nén l' droet d' ahiver des novelès pådjes.",
-'recreate-moveddeleted-warn' => "'''Asteme : vous estoz ki rahive ene pådje k' a stî dsfacêye davance.'''
+'permissionserrorstext-withaction' => "Vos n' avoz nén l' droet d' $2, cåze {{PLURAL:$1|del råjhon shuvante|des råjhons shuvantes}}:",
+'recreate-moveddeleted-warn' => "'''Asteme : vous estoz ki rahive ene pådje k' a stî disfacêye davance.'''
 
 Tuzez bén s' el fåt vormint rahiver, tot tapant èn ouy so l' istwere del pådje :",
 'edit-gone-missing' => "Li pàdje n' a sepou esse rapontieye.
@@ -545,54 +707,66 @@ Motoit k' elle a stî tapêye evoye.",
 'viewpagelogs' => 'Vey les djournås po cisse pådje ci',
 'nohistory' => "I n' a pont d' istwere des modêyes po cisse pådje chal.",
 'currentrev' => "Modêye d' asteure",
+'currentrev-asof' => 'Dierinne modêye å $1',
 'revisionasof' => 'Modêye do $1',
+'revision-info' => 'Modêye do $1 pa $2',
 'previousrevision' => '←Modêye di dvant',
 'nextrevision' => 'Modêye shuvante→',
 'currentrevisionlink' => "Modêye d' asteure",
 'cur' => 'ast.',
 'next' => 'shuv.',
-'last' => 'dif.',
+'last' => 'div.',
 'page_first' => 'prumî',
 'page_last' => 'dierin',
 'histlegend' => "Tchoezi les modêyes a comparer: clitchîz so les botons radio des deus modêyes
 ki vos vloz comparer et s' tchôkîz sol tape «enter» ou clitchîz sol
 boton do dzo.<br />
-Ledjinde: (ast.) = diferince avou l' modêye d' asteure,
-(dif.) = diferince avou l' modêye di dvant, M = pitit candjmint d' rén do tot.",
+Ledjinde: '''({{int:cur}})''' = diferince avou l' modêye d' asteure, '''({{int:last}})''' = diferince avou l' modêye di dvant, '''{{int:minoreditletter}}''' = pitit candjmint d' rén do tot.",
+'history-fieldset-title' => "Naivyî l' istwere des candjmints",
+'history-show-deleted' => 'Disfacés seulmint',
 'histfirst' => 'li pus vî',
 'histlast' => 'li dierin',
 'historysize' => '({{PLURAL:$1|1 octet|$1 octets}})',
 'historyempty' => '(vude)',
 
 # Revision feed
+'history-feed-title' => 'Istwere des modêyes',
+'history-feed-description' => 'Istwere des candjmints di cisse pådje ci sol wiki',
 'history-feed-item-nocomment' => '$1 li $2',
 
 # Revision deletion
-'rev-deleted-comment' => '(comintaire oisté)',
+'rev-deleted-comment' => '(rascourti di candjmint oisté)',
 'rev-deleted-user' => "(no d' elodjaedje oisté)",
-'rev-deleted-text-permission' => 'Cisse modêye ci del pådje a stî oistêye foû des årtchives publikes.
-I gn a motoit des racsegnes sol [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} djournå des disfaçaedjes].',
-'rev-deleted-text-view' => "Cisse modêye ci del pådje a stî oistêye foû des årtchives publikes.
-Come manaedjeu so ç' wiki ci, vos avoz l' droet del vey; i gn a motoit des detays sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
+'rev-deleted-text-permission' => "Cisse modêye ci del pådje a stî '''disfacêye'''.
+Vos ploz vey les ca et les ma sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
+'rev-deleted-text-view' => "Cisse modêye ci del pådje a stî '''disfacêye'''.
+Vos l' poloz co vey; i gn a des detays sol [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} djournå des disfaçaedjes].",
 'rev-delundel' => 'mostrer/catchî',
 'revisiondelete' => 'Disfacer/rapexhî des modêyes',
-'revdelete-selected' => "'''Tchoezeye modêye di [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$2|Evenmint tchoezi|Evenmints tchoezis}} ezès djournås po '''$1:''''''",
-'revdelete-text' => "'''Les disfacêyès modêyes vont continouwer d' aparexhe dins l' pådje di l' istwere, mins leu contnou n' serè nén veyåve do publik.'''
+'revdelete-selected' => "'''{{PLURAL:$2|Tchoezeye modêye|Tchoezeyès modêyes}} di [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Evenmint tchoezi|Evenmints tchoezis}} ezès djournås:'''",
+'revdelete-text' => "'''Les disfacés avenmints et modêyes vont continouwer d' aparexhe dins l' pådje di l' istwere, mins leu contnou n' serè nén veyåve do publik.'''
 
-Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l' rapexhî åd triviè di cisse minme eterface ci, a moens k' ene restriccion di pus ni soeye metowe en alaedje pås mwaisses-manaedjeus del waibe.",
-'revdelete-legend' => 'Defini des restriccions sol modêye',
+Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l' rapexhî åd triviè di cisse minme eterface ci, a moens k' ene restriccion di pus ni soeye metowe en alaedje pås mwaisses-manaedjeus del waibe.",
+'revdelete-legend' => 'Defini des restriccions sol voeyaedje',
 'revdelete-hide-text' => "Catchî l' tecse del modêye",
 'revdelete-hide-comment' => "Catchî l' comintaire di candjmint",
 'revdelete-hide-user' => "Catchî l' no d' uzeu/adresse IP do candjeu",
-'revdelete-hide-restricted' => 'Apliker ces restrictions ossu åzès manaedjeus',
+'revdelete-hide-restricted' => "Oister foû les dnêyes ossu bén po les manaedjeus k' po les ôtes",
+'revdelete-radio-set' => 'Oyi',
+'revdelete-radio-unset' => 'Neni',
 'revdelete-log' => 'Råjhon:',
-'revdelete-submit' => 'Apliker al modêye tchoezeye',
+'revdelete-submit' => 'Apliker {{PLURAL:$1|al modêye tchoezeye|åzès modêyes tchoezeyes}}',
+'deletedhist' => 'Istwere disfacêye',
 
 # History merging
+'mergehistory-success' => '$3 modêye{{PLURAL:$3||s}} di [[:$1]] {{PLURAL:$3|a stî metowe|ont stî metowes}} avou [[:$2]].',
+'mergehistory-fail' => "Nén possibe di mete eshonne les istweres. Verifyîz l' pådje et les parametes di date.",
+'mergehistory-no-source' => "Li pådje sourdant $1 n' egzistêye nén.",
 'mergehistory-reason' => 'Råjhon:',
 
 # Diffs
+'history-title' => 'Istwere des candjmints po «$1»',
 'lineno' => 'Roye $1:',
 'compareselectedversions' => 'Comparer les modêyes tchoezeyes',
 'editundo' => 'disfé',
@@ -601,28 +775,57 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
 'searchresults' => 'Rizultats do cweraedje',
 'searchresults-title' => 'Rizultats des rcwerances po « $1 »',
 'searchresulttext' => 'Po pus di racsegnes sol manire di fé des cweraedjes so {{SITENAME}}, loukîz [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Pol cweraedje «[[$1]]»',
+'searchsubtitle' => "Vos avoz cwerou après «'''[[:$1]]'''» ([[Special:Prefixindex/$1|totes les pådjes ki cmincèt avou «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pådjes ki loynut viè «$1»]])",
 'searchsubtitleinvalid' => 'Pol cweraedje «$1»',
 'titlematches' => 'Årtikes avou on tite ki corespond',
 'notitlematches' => 'Nol årtike avou on tite ki corespond',
 'textmatches' => 'Årtikes avou do tecse ki corespond',
 'notextmatches' => 'Nol årtike avou do tecse ki corespond',
-'prevn' => '$1 di dvant',
-'nextn' => '{{PLURAL:$1|$1}} shuvants',
+'prevn' => '{{PLURAL:$1|di dvant|$1 di dvant}}',
+'nextn' => '{{PLURAL:$1|shuvant|$1 shuvants}}',
+'prevn-title' => '$1 {{PLURAL:$1|rizultat|rizultats}} di dvant',
+'nextn-title' => '{{PLURAL:$1|rizultat shuvant|$1 rizultats shuvants}}',
+'shown-title' => 'Mostrer $1 rizultat{{PLURAL:$1||s}} par pådje',
 'viewprevnext' => 'Vey ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-legend' => 'Tchuzes di cweraedje',
 'searchmenu-exists' => "'''Gn a ddja ene pådje lomêye « [[:$1]] » so ç' wiki ci'''",
+'searchmenu-new' => "'''Ahiver l' pådje \"[[:\$1]]\" so ç' wiki ci!'''",
 'searchhelp-url' => 'Help:Aidance',
-'search-redirect' => '(ridjiblé di $1)',
-'search-interwiki-caption' => 'So les ôtes pordjets Wiki',
+'searchprofile-articles' => 'Pådjes di contnou',
+'searchprofile-project' => "Pådjes d' aidance et do pordjet",
+'searchprofile-images' => 'Multimedia',
+'searchprofile-everything' => 'Tote li waibe',
+'searchprofile-advanced' => 'Sipepieus',
+'searchprofile-articles-tooltip' => 'Cweri dins $1',
+'searchprofile-project-tooltip' => 'Cweri dins $1',
+'searchprofile-images-tooltip' => 'Cweri après des fitchîs multimedia',
+'searchprofile-everything-tooltip' => "Cweri tot avå l' waibe (dins tos les espåces di lomaedje eyet leu pådjes di copene)",
+'searchprofile-advanced-tooltip' => 'Tchoezixhoz les espåces di lomaedje ki vos vloz rwaitî pol cweraedje',
+'search-result-size' => '$1 ($2 mot{{PLURAL:$2||s}})',
+'search-result-category-size' => '$1 mimbe{{PLURAL:$1||s}} ($2 dizo-categoreye{{PLURAL:$2||s}}, $3 fitchî{{PLURAL:$3||s}})',
+'search-result-score' => 'Pertinance: $1%',
+'search-redirect' => '(redjiblé di $1)',
+'search-section' => '(seccion $1)',
+'search-suggest' => 'Sayîz motoit çoula: $1',
+'search-interwiki-caption' => 'So les ôtes pordjets frés',
 'search-interwiki-default' => 'Gn a des sfwaitès sacwès so $1 :',
 'search-interwiki-more' => '(dipus)',
+'searchall' => 'totafwait',
 'showingresults' => "Chal pa dzo {{PLURAL:$1|'''1''' rizultat|'''$1''' rizultats}} a pårti do limero '''$2'''.",
 'showingresultsnum' => "Chal pa dzo {{PLURAL:$3|'''1''' rizultat|'''$3''' rizultats}} a pårti do limero '''$2'''.",
-'nonefound' => "'''Note''': des cweraedjes ki n' dinèt nou rzultat c' est sovint li cweraedje di ptits mots trop corants (come «les», «des») ki n' sont nén indecsés, oudonbén des cweraedjes di pus d' on mot (seulmint les pådjes avou tos les mots dmandés sront håynêyes dins l' rizultat do cweraedje).",
+'showingresultsheader' => "{{PLURAL:$5|Rizultat '''$1'''|Rizultats '''$1 - $2'''}} foû di '''$3'' po '''$4'''",
+'nonefound' => "'''Note''': li prémetowe dujhance c' est d' cweri seulmint e sacwants espåces di lomaedje.
+Vos ploz sayî di mete «all:» pa dvant l' tecse a cweri po cweri dins tot l' contnou do wiki (dj' ô bén, ezès pådjes di copene, les modeles, evnd.), oudobén vos ploz mete li no d' l' espåce di lomaedje come betchete.",
 'search-nonefound' => "N' a rén di çou ki vs cweroz après",
 'powersearch' => 'Cweri',
 'powersearch-legend' => 'Pus spepieus rcweraedjes',
+'powersearch-ns' => 'Cweri ezès espåces di lomaedje:',
 'powersearch-redir' => 'Håyner les rdjiblaedjes',
+'powersearch-field' => 'Cweri',
+'powersearch-togglelabel' => 'Tchoezi:',
+'powersearch-toggleall' => 'Totafwait',
+'powersearch-togglenone' => 'Disclitchî tot',
+'search-external' => 'Difoûtrin cweraedje',
 'searchdisabled' => "Mande escuzes! Li cweraedje å dvins des årtikes a stî dismetou pol moumint, cåze ki l' sierveu est fortcherdjî. Tot ratindant, vos ploz eployî Google po fé les rcweraedjes so {{SITENAME}}, mins çoula pout esse ene miete vî.",
 
 # Quickbar
@@ -632,106 +835,243 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
 'qbsettings-fixedright' => 'Aclawêye a droete',
 'qbsettings-floatingleft' => 'Flotante a hintche',
 'qbsettings-floatingright' => 'Flotante a droete',
+'qbsettings-directionality' => "Aclawêye, sorlon l' sinse di scrijhaedje di vosse lingaedje",
 
 # Preferences page
 'preferences' => 'Preferinces',
 'mypreferences' => 'Mes preferinces',
 'prefs-edits' => 'Nombe di candjmints:',
 'prefsnologin' => "Vos n' estoz nén elodjî",
-'prefsnologintext' => 'I vs fåt esse [[Special:UserLogin|elodjî]] po pleur candjî vos preferinces.',
+'prefsnologintext' => 'I vs fåt esse <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} elodjî]</span> po pleur candjî vos preferinces.',
 'changepassword' => "Candjî l' sicret",
 'prefs-skin' => 'Pea',
 'skin-preview' => 'vey divant',
 'datedefault' => 'Nole preferince',
 'prefs-datetime' => 'Cogne del date',
+'prefs-user-pages' => 'Pådjes des uzeus',
 'prefs-personal' => 'Dinêyes da vosse',
 'prefs-rc' => 'Håynaedje des dierins candjmints',
 'prefs-watchlist' => 'Djivêye des shuvous',
 'prefs-watchlist-days' => "Nombe di djoûs a mostrer dins l' djivêye:",
+'prefs-watchlist-days-max' => 'Macsimom $1 djoû{{PLURAL:$1||s}}',
 'prefs-watchlist-edits' => "Nombe di candjmints a mostrer dins l' djivêye:",
 'prefs-misc' => 'Totes sôres',
+'prefs-resetpass' => "Candjî l' sicret",
+'prefs-changeemail' => "Candjî l' emile",
+'prefs-setemail' => 'Diner ene adresse emile',
+'prefs-email' => "Tchuzes d' emilaedje",
+'prefs-rendering' => 'Rivnance',
 'saveprefs' => 'Schaper les preferinces',
 'resetprefs' => 'Rimete les prémetowès valixhances',
-'prefs-editing' => 'Grandeu del boesse di tecse',
+'restoreprefs' => 'Rimete totes les prémetowès valixhances',
+'prefs-editing' => 'Boesse di tecse',
 'rows' => 'Royes',
 'columns' => 'Colones',
 'searchresultshead' => 'Håynaedje des rzultats di cweraedje',
 'resultsperpage' => 'Nombe di responses a håyner so ene pådje',
 'recentchangesdays' => 'Nombe di djoûs po les dierins candjmints:',
-'recentchangescount' => 'Nombe di tites dins les dierins candjmints',
+'recentchangesdays-max' => 'Macsimom $1 djoû{{PLURAL:$1||s}}',
+'recentchangescount' => 'Prémetou nombe di candjmintstites a håyner:',
 'savedprefs' => 'Vos preferinces ont stî schapêyes.',
-'timezonelegend' => "Coisse d' eureye",
-'localtime' => "Håyner l' eure locåle",
-'timezoneoffset' => "Diferince d' eures¹",
-'servertime' => "L' eure sol sierveu",
+'timezonelegend' => "Coisse d' eureye:",
+'localtime' => "L' eure locåle",
+'timezoneuseserverdefault' => "Epoyî l' prémetowe valixhance ($1)",
+'timezoneuseoffset' => "Ôte (dinez l' diferince d' eures)",
+'timezoneoffset' => "Diferince d' eures¹:",
+'servertime' => "L' eure sol sierveu:",
 'guesstimezone' => "Prinde d' après l' betchteu",
+'timezoneregion-africa' => 'Afrike',
+'timezoneregion-america' => 'Amerike',
+'timezoneregion-antarctica' => 'Antartike',
+'timezoneregion-arctic' => 'Arctike',
+'timezoneregion-asia' => 'Azeye',
+'timezoneregion-atlantic' => 'Oceyan Atlantike',
+'timezoneregion-australia' => 'Ostraleye',
+'timezoneregion-europe' => 'Urope',
+'timezoneregion-indian' => 'Oceyan Indyin',
+'timezoneregion-pacific' => 'Oceyan Pacifike',
 'allowemail' => "Permete di rçure des emiles d' ôtes uzeus",
-'defaultns' => 'Prémetous spåces di nos pol cweraedje:',
+'prefs-searchoptions' => 'Tchuzes di cweraedje',
+'prefs-namespaces' => 'Espåces di lomaedje',
+'defaultns' => 'Oudonbén dins les spåces di nos shuvants:',
 'default' => 'prémetou',
 'prefs-files' => 'Fitchîs',
-'youremail' => 'Vost emile*',
+'prefs-custom-css' => 'CSS a vosse môde',
+'prefs-custom-js' => 'JavaScript a vosse môde',
+'prefs-common-css-js' => 'CSS/JavaScript pårtaedjî po totes les peas:',
+'prefs-reset-intro' => "Vos ploz eployî ç' boton chal po rmete totes vos preferinces åzès prémetowès valixhances del waibe.
+Çoul n' pôrè nén esse disfwait.",
+'prefs-emailconfirm-label' => "Acertinaedje di l' emile:",
+'prefs-textboxsize' => 'Grandeu del boesse di tecse',
+'youremail' => 'Vost emile:',
 'username' => "No d' elodjaedje:",
 'uid' => "Limero d' l' uzeu:",
-'yourrealname' => 'Li vraiy no da vosse*',
+'prefs-memberingroups' => 'Mimbe {{PLURAL:$1|do groupe|des groupes}}:',
+'prefs-registration' => "Date d' edjîstraedje:",
+'yourrealname' => 'Li vraiy no da vosse:',
 'yourlanguage' => "Lingaedje po l' eterface",
-'yourvariant' => 'Variante do lingaedje',
-'yournick' => 'Vosse no metou (po les sinateures)',
-'badsig' => 'Sinateure brute nén valide; verifyîz les etiketes HTML.',
+'yourvariant' => 'Variante di lingaedje pol contnou:',
+'prefs-help-variant' => "Li variante ou ortografeye ki vos avoz ptchî po håyner li contnou des pådjes so ç' wiki ci.",
+'yournick' => 'Novele sinateure:',
+'prefs-help-signature' => "Les comintaires so les pådjes di copene divrént esse sinés avou «<nowiki>~~~~</nowiki>» (dj' ô bén, 4 wachletes), çou ki srè candjî otomaticmint a vosse sinateure eyet li date et l' eure.",
+'badsig' => 'Sinateure brute nén valide.
+Verifyîz les etiketes HTML.',
+'badsiglength' => "Vosse sinateure est pår trop longowe.
+Racourtixhoz l' a moens di $1 {{PLURAL:$1|caractere|caracteres}}.",
+'yourgender' => 'Seke:',
+'gender-unknown' => 'Nén dné',
+'gender-male' => 'Omrin',
+'gender-female' => 'Femrin',
+'prefs-help-gender' => "Seke (opcionel): eployî po-z acoirder l' djinre di sacwants messaedjes di l' eterface.
+Ciste infôrmacion serè publike po tertos.",
 'email' => 'Emile',
-'prefs-help-realname' => '* Li vraiy no da vosse (opcionel): si vos tchoezixhoz del diner i serè-st eployî po les contribouwaedjes da vosse.',
-'prefs-help-email' => "* Emile (opcionel): Permete di rçure des emiles ki ds ôtes uzeus vos polèt evoyî a pårti del pådje d' uzeu da vosse, sins ki voste adresse emile ni soeye håynêye.",
+'prefs-help-realname' => 'Li vraiy no da vosse (opcionel): si vos tchoezixhoz del diner i serè-st eployî po les contribouwaedjes da vosse.',
+'prefs-help-email' => "Emile (opcionel): permete di rçure des emiles ki ds ôtes uzeus vos polèt evoyî a pårti del pådje d' uzeu da vosse, sins ki voste adresse emile ni soeye håynêye.",
+'prefs-help-email-others' => "Vos ploz eto tchoezi k' les ôtes vos emilexhe a pårti d' on loyén sol pådje di copene da vosse. Voste adresse emile n' est nén veyowe cwand des ôtes uzeus vos scrijhèt.",
+'prefs-help-email-required' => 'I fåt dner ene adresse emile.',
+'prefs-info' => "Infôrmåcion d' båze",
+'prefs-i18n' => 'Eternåcionålijhaedje',
 'prefs-signature' => 'Sinateure',
 'prefs-dateformat' => 'Cogne del date',
+'prefs-timeoffset' => "Diferince d' eures",
+'prefs-advancedediting' => 'Sipepieuzès tchuzes',
+'prefs-advancedrc' => 'Sipepieuzès tchuzes',
+'prefs-advancedrendering' => 'Sipepieuzès tchuzes',
+'prefs-advancedsearchoptions' => 'Sipepieuzès tchuzes',
+'prefs-advancedwatchlist' => 'Sipepieuzès tchuzes',
+'prefs-displayrc' => 'Tchuzes di håynaedje',
+'prefs-displaysearchoptions' => 'Tchuzes di håynaedje',
+'prefs-displaywatchlist' => 'Tchuzes di håynaedje',
+'prefs-diffs' => 'Diferinces',
+
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid' => "L' adresse emile a l' air d' esse valide",
+'email-address-validity-invalid' => 'Dinez ene adresse emile valide',
 
 # User rights
 'userrights' => 'Manaedjî les liveas des uzeus',
-'userrights-lookup-user' => "Manaedjî les groupes d' èn uzeu",
+'userrights-lookup-user' => "Manaedjî les groupes d' uzeus",
 'userrights-user-editname' => "Tapez on no d' uzeu:",
-'editusergroup' => "Candjî les groupes di l' uzeu",
-'editinguser' => "Candjant '''[[User:$1|$1]]''' $2",
-'userrights-editusergroup' => "Candjî groupes d' uzeus",
-'saveusergroups' => "Schaper des groupes d' uzeus",
-'userrights-groupsmember' => 'Mimbes di:',
+'editusergroup' => "Candjî les groupes d' uzeus",
+'editinguser' => "Candjant les droets d' l' {{GENDER:$1|uzeu|uzeuse}} '''[[User:$1|$1]]''' $2",
+'userrights-editusergroup' => "Candjî les groupes d' uzeus",
+'saveusergroups' => "Schaper les groupes d' uzeus",
+'userrights-groupsmember' => 'Mimbe di:',
+'userrights-groupsmember-auto' => 'Mimbe implicite di:',
+'userrights-groups-help' => "Vos ploz candjî les groupes ki {{GENDER:\$1|cist uzeu|ciste uzeuse}} apårtént:
+* Ene boesse clitcheye c' est k' {{GENDER:\$|il|elle}} est mimbe do groupe.
+* Ene boesse disclitcheye c' est k' {{GENDER:\$|i|ele}} n' end est nén mimbe.
+* Ene sitoele (*) mostere k' on n' pout nén rsaetchî l' groupe on côp k' il a stî radjouté, ou årvierdimint.",
 'userrights-reason' => 'Råjhon:',
+'userrights-no-interwiki' => "Vos n' avoz nén les permissions po candjî les droets des uzeus so ds ôtes wikis.",
+'userrights-nodatabase' => "Li båze di dnêyes «$1» n' egzistêye nén ou n' est nén locåle.",
+'userrights-nologin' => 'Vos vs divoz [[Special:UserLogin|elodjî]] avou on conte manaedjeu por vos pleur candjî les droets des uzeus.',
+'userrights-notallowed' => "Li conte da vosse n' pout nén radjouter ou rsaetchî des droets des uzeus.",
+'userrights-changeable-col' => 'Groupes ki vos ploz candjî',
+'userrights-unchangeable-col' => "Groupes ki vos n' poloz nén candjî",
 
 # Groups
 'group' => 'Groupe:',
+'group-user' => 'Uzeus',
+'group-autoconfirmed' => 'Uzeus edjîstrés',
 'group-bot' => 'Robots',
 'group-sysop' => 'Manaedjeus',
 'group-bureaucrat' => 'Mwaisse-manaedjeus',
+'group-suppress' => 'Supervizeus',
 'group-all' => '(tertos)',
 
-'group-bot-member' => 'robot',
-'group-sysop-member' => 'manaedjeu',
-'group-bureaucrat-member' => 'mwaisse-manaedjeu',
+'group-user-member' => '{{GENDER:$1|uzeu|uzeuse}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|uzeu edjîstré|uzeuse edjîstrêye}}',
+'group-bot-member' => '{{GENDER:$1|robot|robote}}',
+'group-sysop-member' => '{{GENDER:$1|manaedjeu|manaedjresse}}',
+'group-bureaucrat-member' => '{{GENDER:$1|mwaisse-manaedjeu|mwaisse-manaedjresse}}',
+'group-suppress-member' => '{{GENDER:$1|supervizeu|supervizeuse}}',
 
+'grouppage-user' => '{{ns:project}}:Uzeus',
+'grouppage-autoconfirmed' => '{{ns:project}}:Uzeus edjîstrés',
 'grouppage-bot' => '{{ns:project}}:Robots',
 'grouppage-sysop' => '{{ns:project}}:Manaedjeus',
 'grouppage-bureaucrat' => '{{ns:project}}:Mwaisse-manaedjeus',
+'grouppage-suppress' => '{{ns:project}}:Supervizeus',
 
 # Rights
 'right-read' => 'Lére les pådjes',
+'right-edit' => 'Candjî les pådjes',
+'right-createpage' => "Ahiver des pådjes (ki n' sont nén des pådjes di copene)",
+'right-createtalk' => 'Ahiver des pådjes di copinaedje',
+'right-createaccount' => "Ahiver des noveas contes d' uzeu",
+'right-minoredit' => 'Marker les candjmints come mineurs',
+'right-move' => 'Displaecî des pådjes',
+'right-move-subpages' => 'Displaecî des pådjes avou leus dzo-pådjes',
+'right-move-rootuserpages' => 'Displaecî les pådjes raecene des uzeus',
+'right-movefile' => 'Displaecî des fitchîs',
+'right-suppressredirect' => 'Èn nén fé di pådje di redjiblaedje dispoy li vî no cwand on displaece ene pådje',
+'right-upload' => 'Eberweter des fitchîs',
+'right-reupload' => "Sipotchî des fitchîs k' egzitèt ddja",
+'right-reupload-own' => 'Sipotchî les itchîs eberwetés pa vos-minme',
+'right-reupload-shared' => "Sipotchî locålmint des fitchî ki s' trovèt sol depot pårtaedjî",
+'right-upload_by_url' => "Eberweter des fitchîs a pårti d' hårdêyes",
+'right-purge' => "Vudî l' muchete des pådjes sins acertinaedje",
+'right-autoconfirmed' => 'Candjî les pådjes dimey-protedjeyes',
+'right-bot' => 'Esse traitî come on programe otomatike',
+'right-nominornewtalk' => "Èn nén dire k' i gn a des noveas messaedjes cwand les candjmints del pådje di copene d' èn uzeu sont mineurs",
+'right-writeapi' => "Eployî l' API di scrijhaedje sol wiki",
+'right-delete' => 'Disfacer des pådjes',
+'right-bigdelete' => 'Disfacer des pådjes avou ene longowe istwere',
+'right-deleterevision' => "Disfacer et rapexhî des modêyes d' ene pådje",
+'right-deletedhistory' => "Vey les disfacêyès intrêyes di l' istwere, sins leu tecse",
+'right-deletedtext' => 'Vey les tecses disfacés eyet les candjmints etur disfacêyès modêyes',
+'right-browsearchive' => 'Loukî après les disfacêyès pådjes',
+'right-undelete' => "Rapexhî ene pådje k' a stî disfacêye",
+'right-suppressrevision' => 'Verifyî et rapexhî les modêyes catcheyes åzès manaedjeus',
+'right-suppressionlog' => 'Vey les djournås privés',
+'right-block' => "Espaitchî d' ôtes uzeus di scrire",
+'right-blockemail' => "Espaitchî èn uzeu d' evoyî des emiles",
+'right-hideuser' => "Bloker on no d' uzeu, tot catchant s' no ås ôtes",
+'right-ipblock-exempt' => "Passer houte des blocaedjes pa adresse IP, pa fortchete d' adresses ou des blocaedjes otomatikes",
+'right-proxyunbannable' => 'Passer houte des blocaedjes otomatikes des procsis',
+'right-unblockself' => 'Si disbloker lu-minme',
+'right-protect' => "Candjî les liveas d' protedjaedje eyet candjî les pådjes protedjeyes",
 
 # User rights log
 'rightslog' => 'Djournå des droets des uzeus',
 'rightslogtext' => "Çouchal, c' est on djournå des candjmints des droets des uzeus.",
-'rightslogentry' => "l' uzeu «$1» a stî candjî do groupe «$2» viè «$3»",
+'rightslogentry' => "a candjî l' uzeu «$1» do groupe «$2» viè «$3»",
+'rightslogentry-autopromote' => 'a stî otomaticmint candjî di «$2» a «$3»',
 'rightsnone' => '(nouk)',
 
 # Associated actions - in the sentence "You do not have permission to X"
+'action-read' => 'lére cisse pådje ci',
+'action-edit' => "candjî l' pådje",
 'action-createpage' => 'ahiver des pådjes',
 'action-createtalk' => 'ahiver des pådjes di copinaedje',
 'action-createaccount' => "ahiver ci conte d' uzeu ci",
-'action-delete' => 'Disfacer cisse pådje ci',
-'action-browsearchive' => 'Loukî après les disfacêyès pådjes',
-'action-block' => 'Espaitchî cist(e) uzeu(se) ci di scrire',
+'action-minoredit' => "marker ç' candjmint la come mineur",
+'action-move' => 'displaecî cisse pådje ci',
+'action-move-subpages' => "displaecî l' pådje et ses dzo-pådjes",
+'action-move-rootuserpages' => "displaecî l' pådje raecene d' èn uzeu",
+'action-movefile' => "displaecî ç' fitchî ci",
+'action-upload' => "eberweter ç' fitchî ci",
+'action-reupload' => 'sipotchî ci fitchî ci',
+'action-reupload-shared' => "sipotchî l' pårtaedjî fitchî avou ci-chal",
+'action-upload_by_url' => "eberweter l' fitchî a pårti d' ene hårdêye",
+'action-writeapi' => "eployî l' API di scrijhaedje",
+'action-delete' => 'disfacer cisse pådje ci',
+'action-deleterevision' => 'disfacer cisse modêye ci',
+'action-deletedhistory' => "vey les disfacêyès intrêyes di l' istwere",
+'action-browsearchive' => 'loukî après les disfacêyès pådjes',
+'action-undelete' => "rapexhî l' pådje",
+'action-suppressrevision' => "verifyî et rapexhî l' modêye catcheye",
+'action-suppressionlog' => 'vey ci djournå privé ci',
+'action-block' => 'espaitchî cist(e) uzeu(se) ci di scrire',
+'action-protect' => "candjî les liveas d' protedjaedje del pådje",
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|candjmint|candjmints}}',
 'recentchanges' => 'Dierins candjmints',
-'recentchangestext' => "Shuvoz chal les dierins candjmints k' i gn a yeu dsu {{SITENAME}}.",
-'rcnote' => 'Chal pa dzo les <strong>$1</strong> dierins candjmints des dierins <strong>$2</strong> djoûs, å $3.',
-'rcnotefrom' => "Chal pa dzo les candjmints dispoy li <b>$2</b> (disk' a <b>$1</b> di mostrés).",
+'recentchanges-summary' => "Shuvoz chal les dierins candjmints k' i gn a yeu dsu {{SITENAME}}.",
+'rcnote' => "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|do dierin djoû|des '''$2''' dierins djoûs}}, disk' å $4 a $5.",
+'rcnotefrom' => "Chal pa dzo les candjmints dispoy li '''$2''' (disk' a '''$1''' di mostrés).",
 'rclistfrom' => "Mostrer les candjmints k' i gn a yeu a pårti do $1",
 'rcshowhideminor' => '$1 candjmints mineurs',
 'rcshowhidebots' => '$1 robots',
@@ -742,11 +1082,13 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
 'rclinks' => 'Mostrer les $1 dierins candjmints des dierins $2 djoûs.<br />$3',
 'diff' => 'dif.',
 'hist' => 'ist.',
-'hide' => 'Muchyî',
-'show' => 'håyner',
+'hide' => 'catch.',
+'show' => 'håy.',
+'minoreditletter' => 'm',
 'number_of_watching_users_pageview' => '[shuvou pa $1 {{PLURAL:$1|uzeu|uzeus}}]',
 'rc_categories' => 'Limiter åzès categoreyes (separer avou des «|»)',
 'rc_categories_any' => 'Totes',
+'rc-change-size-new' => "$1 {{PLURAL:$1|octet|octets}} après l' candjmint",
 'newsectionsummary' => '/* $1 */ novele seccion',
 
 # Recent changes linked
@@ -762,18 +1104,18 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
 'uploadnologintext' => 'I vs fåt esse [[Special:UserLogin|elodjî]] por vos pleur eberweter des fitchîs.',
 'upload_directory_read_only' => "Li sierveu waibe èn pout nén scrire sol ridant d' eberwetaedje ($1).",
 'uploaderror' => "Aroke d' eberwetaedje",
-'uploadtext' => "Eployîz les boesses d' intrêye chal pa dzo po-z eberweter des noveas fitchîs d' imådjes po vos årtikes. Sol plupårt des betchteus, vos voeroz on boton «Foyter...» (ou «Browse...») ki vs permetrè di foyter dins les ridants del deure plake da vosse po tchoezi l' fitchî, çou ki rimplirè otomaticmint li tchamp do no do fitchî k' est a costé.
-
-Po håyner ou cweri des imådjes k' ont ddja stî rçuvowes, alez sol [[Special:FileList|djivêye des imådjes dedja eberwetêyes]]. Les eberwetaedjes et disfaçaedjes sont metous èn on [[Special:Log/upload|djournå des eberwetaedjes]].
-
-Po håyner l' imådje dins èn årtike, eployîz on loyén del foûme
-* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fitchî.jpg]]</nowiki>'''
-* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fitchî.png|thumb|tecse a mete padzo]]</nowiki>'''
-ou co po les sons
-* '''<nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fitchî.ogg]]</nowiki>'''",
+'uploadtext' => "Eployîz les boesses d' intrêye chal pa dzo po-z eberweter des noveas fitchîs.
+Po håyner ou cweri des fitchîs k' ont ddja stî rçuvous, alez sol [[Special:FileList|djivêye des fitchîs ddja eberweté]].
+Les (r)eberwetaedjes sont eto metos sol [[Special:Log/uplozf|djournå des eberwetaedjes]], les disfaçaedjes sol [[Special:Log/upload|ci des disfaçaedjes]].
+
+Po mete on fitchî dins ene pådje, eployîz on loyén del fôme:
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fitchî.jpg]]</nowiki></tt>''' po-z eployî l' modêye e grandeu oridjinnåle do fitchî
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fitchî.png|200px|thumb|left|tecse di rawete]]</nowiki></tt>''' po håyner so ene lårdjeur di 200 picsels dins ene boesse (''thumb'') sol hintche (''left''; metoz ''right'' pol mete sol droete) avou «tecse di rawete» come discrijhaedje
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fitchî.ogg]]</nowiki></tt>''' po fé on loyén viè l' fitchî, sins l' håyner",
 'uploadlog' => 'djournå des eberwetaedjes',
 'uploadlogpage' => 'Djournå des eberwetaedjes',
-'uploadlogpagetext' => 'Chal pa dzo li djivêye des dierins eberwetaedjes.',
+'uploadlogpagetext' => 'Chal pa dzo li djivêye des dierins eberwetaedjes.
+Loukîz al [[Special:NewFiles|galreye des noveas fitchîs]] po ene vuwe pus vizuwele.',
 'filename' => 'No do fitchî',
 'filedesc' => 'Discrijhaedje',
 'fileuploadsummary' => 'Discrijhaedje:',
@@ -788,13 +1130,17 @@ ou co po les sons
 'emptyfile' => "I shonnreut kel fitchî k' vos eberwetez soeye vude. Çoula pout esse cåze d' ene aroke di tapaedje dins l' no do fitchî. Acertinez si vos vloz evoyî po do bon ç' fitchî ci, s' i vs plait.",
 'fileexists' => "On fitchî avou ç' no la egzistêye dedja, loukîz s' i vs plait a '''<tt>[[:$1]]</tt>''' po vs acertiner ki vos vloz bén replaecî l' fitchî avou l' ci ki vos eberwetez asteure, oubén si vos l' voloz eberweter dizo èn ôte no.
 [[$1|thumb]]",
-'fileexists-forbidden' => "I gn a ddja on fitchî avou ç' no la; rivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no. [[File:$1|thumb|center|$1]]",
-'fileexists-shared-forbidden' => "I gn a ddja on fitchî avou ç' no la e ridant des fitchîs pårtaedjîs; rivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no. [[File:$1|thumb|center|$1]]",
+'fileexists-forbidden' => "I gn a ddja on fitchî avou ç' no la, et n' pout nén esse sipotchî.
+Si vos l' voloz tot l' minme eberweter, rivnoz en erî et s' reberwetez l' fitchî dizo èn ôte no.
+[[File:$1|thumb|center|$1]]",
+'fileexists-shared-forbidden' => "I gn a ddja on fitchî avou ç' no la e ridant des fitchîs pårtaedjîs.
+Rivnoz s' i vs plait en erî et s' reberwetez l' fitchî dizo èn ôte no si vos vloz.
+[[File:$1|thumb|center|$1]]",
 'uploadwarning' => "Adviertixhmint so l' eberwetaedje",
 'savefile' => "Schaper l' fitchî",
 'uploadedimage' => 'eberwetaedje di «[[$1]]»',
 'uploaddisabled' => 'Eberwetaedje di fitchîs dismetou',
-'uploaddisabledtext' => "Mande escuzes, mins l' eberwetaedje di fitchîs a stî dismetou pol moumint.",
+'uploaddisabledtext' => "L' eberwetaedje di fitchîs a stî dismetou.",
 'uploadscripted' => 'Ci fitchî ci a-st å dvins do côde HTML ou on scripe ki pôreut esse må comprin pa on betchteu waibe.',
 'uploadvirus' => 'Li fitchî a-st on virusse! Detays: $1',
 'sourcefilename' => "No d' fitchî so vosse copiutrece:",
@@ -804,7 +1150,7 @@ ou co po les sons
 
 'upload-file-error' => 'Divintrinne aroke',
 
-'license' => "Licince di l' imådje",
+'license' => 'Licince:',
 'nolicense' => 'Nole licince tchoezeye',
 'upload_source_file' => ' (on fitchî sol copiutrece da vosse)',
 
@@ -812,39 +1158,55 @@ ou co po les sons
 'listfiles_search_for' => "Cweri l' no d' imådje:",
 'imgfile' => 'fitchî',
 'listfiles' => 'Djivêye des imådjes',
+'listfiles_thumb' => 'Imådjete',
+'listfiles_date' => 'Date',
 'listfiles_name' => 'No',
 'listfiles_user' => 'Uzeu',
 'listfiles_size' => 'Grandeu',
 'listfiles_description' => 'Discrijhaedje',
+'listfiles_count' => 'Modêyes',
 
 # File description page
 'file-anchor-link' => 'Imådje',
 'filehist' => 'Istwere do fitchî',
 'filehist-help' => "Clitchîz so ene date ey ene eure po vey kimint ki l' fitchî esteut adon.",
 'filehist-deleteall' => 'disfacer ttafwait',
-'filehist-deleteone' => 'disfacer çouci',
+'filehist-deleteone' => 'disfacer',
+'filehist-revert' => 'disfé',
 'filehist-current' => 'asteure',
 'filehist-datetime' => 'Date/Eure',
+'filehist-thumb' => 'Imådjete',
+'filehist-thumbtext' => 'Imådjete pol modêye do $1',
+'filehist-nothumb' => 'Nole imådjete',
 'filehist-user' => 'Uzeu',
 'filehist-dimensions' => 'Grandeur',
 'filehist-filesize' => 'Grandeur do fitchî',
 'filehist-comment' => 'Comintaire',
-'imagelinks' => 'Loyéns viè ciste imådje cial',
-'linkstoimage' => '{{PLURAL:$1|Li pådje shuvante|Les pådjes shuvantes}} eployèt ciste imådje chal:',
+'filehist-missing' => 'Fitchî mancant',
+'imagelinks' => 'Eployaedjes do fitchî',
+'linkstoimage' => '{{PLURAL:$1|Li pådje shuvante eploye|Les $1 pådjes shuvantes eployèt}} ciste imådje chal:',
 'nolinkstoimage' => "I n' a nole pådje k' eploye ciste imådje chal.",
-'sharedupload' => "Ci fitchî ci est so on ridant pårtaedjî ey i s' pout k' i soeye eployî pa ds ôtes pordjets.",
-'sharedupload-desc-there' => 'Ci fitchî ci provént di $1; si pout i esse reployî dins des ôtes pordjets "Wiki". Loukîz [$2 si pådje di discrijhaedje] po-z esse mî racsegnî.',
-'sharedupload-desc-here' => 'Ci fitchî ci provént di $1; si pout i esse eployî divins des ôtes pordjets Wiki. Li discrijhaedje di [$2 si pådje di discrijhaedje] låvå est håynêye cial ådzo.',
+'sharedupload' => "Ci fitchî ci vént d' $1 ey i s' pout k' i soeye eployî pa ds ôtes pordjets.",
+'sharedupload-desc-there' => "Ci fitchî ci provént d' $1; si pout i esse reployî dins des ôtes pordjets. Loukîz [$2 si pådje di discrijhaedje] po-z esse mî racsegnî.",
+'sharedupload-desc-here' => "Ci fitchî ci provént d' $1; si pout i esse eployî divins des ôtes pordjets Wiki. Li discrijhaedje di [$2 si pådje di discrijhaedje] låvå est håynêye cial ådzo.",
 'uploadnewversion-linktext' => 'Eberweter ene nouve modêye di ci fitchî ci',
+'shared-repo-from' => "vént d' $1",
+'shared-repo' => 'on depot pårtaedjî',
 
 # File reversion
+'filerevert' => 'Rimete come divant $1',
 'filerevert-comment' => 'Råjhon:',
+'filerevert-submit' => 'Disfé',
 
 # File deletion
 'filedelete' => 'Disfacer $1',
 'filedelete-legend' => 'Disfacer fitchî',
 'filedelete-comment' => 'Råjhon:',
 'filedelete-submit' => 'Disfacer',
+'filedelete-otherreason' => 'Ene råjhon diferinne ou di pus:',
+'filedelete-reason-dropdown' => '*Råjhons po disfacer (å pus sovint)
+** Nén respet des abondroets
+** Fitchî e dobe',
 
 # MIME search
 'mimesearch' => 'Cweraedje MIME',
@@ -859,7 +1221,8 @@ ou co po les sons
 
 # Unused templates
 'unusedtemplates' => 'Modeles nén eployîs',
-'unusedtemplatestext' => "Cisse pådje ci mostere totes les pådjes di modele (espåce di lomaedje «{{ns:template}}») ki n' sont nén eployîs dins ene ôte pådje. Rimimbrez vs di verifyî s' i n' a nén des ôtes loyéns divant delzès disfacer.",
+'unusedtemplatestext' => "Cisse pådje ci mostere totes les pådjes di modele (espåce di lomaedje «{{ns:template}}») ki n' sont nén eployîs dins ene ôte pådje.
+Rimimbrez vs di verifyî s' i n' a nén des ôtes loyéns divant delzès disfacer.",
 'unusedtemplateswlh' => 'ôtes loyéns',
 
 # Random page
@@ -871,20 +1234,32 @@ ou co po les sons
 # Statistics
 'statistics' => 'Sitatistikes',
 'statistics-header-users' => 'Sitatistikes des uzeus',
+'statistics-articles' => 'Pådjes di contnou',
 'statistics-pages-desc' => 'Totes les pådjes do "Wiki", minme les copinaedjes, les rdjiblaedjes, evnd.',
 'statistics-mostpopular' => 'Pådjes les pus veyowes',
 
-'disambiguations' => "Pådjes d' omonimeye",
+'disambiguations' => "Pådjes avou des loyéns viè des pådjes d' omonimeye",
 'disambiguationspage' => 'Template:Omonimeye',
+'disambiguations-text' => "Ces pådjes ci loynut eviè ene '''pådje d' omonimeye'''.
+Ele divrént purade raloyî direk å mwaisse sudjet.<br />
+Ene pådje est waiteye come pådje d' omonimeye s' ele eploye on modele k' est loyî a [[MediaWiki:Disambiguationspage]].",
 
 'doubleredirects' => 'Dobes redjiblaedjes',
-'doubleredirectstext' => "Tchaeke roye a-st on loyén viè l' prumî eyet l' deujhinme redjiblaedje, avou on mostraedje del prumire roye do tecse do deujhinme redjiblaedje, çou ki å pus sovint dene li «vraiy» årtike såme, ki l' prumî redjiblaedje divreut evoyî viè lu.",
+'doubleredirectstext' => "Cisse pådje ci mostere les dobes redjiblaedjes (pådjes ki redjiblèt viè ene ôte pådje di redjiblaedje).
+Tchaeke roye a-st on loyén viè l' prumî eyet l' deujhinme redjiblaedje, avou on mostraedje del såme do deujhinme redjiblaedje, çou ki å pus sovint dene li «vraiy» årtike såme, ki l' prumî redjiblaedje divreut evoyî viè lu.
+Lis intrêyes <del>bårêyes</del> otn ddja stî coridjeyes.",
 
 'brokenredirects' => 'Pierdous redjiblaedjes',
-'brokenredirectstext' => "Les redjiblaedjes shuvants evoyèt so ene pådje ki n' egzistêye nén.",
+'brokenredirectstext' => "Les redjiblaedjes shuvants evoyèt so ene pådje ki n' egzistêye nén:",
 'brokenredirects-edit' => 'candjî',
 'brokenredirects-delete' => 'disfacer',
 
+'withoutinterwiki' => 'Pådjes sins loyéns eterwiki',
+'withoutinterwiki-summary' => "Les pådjes shuvantes n' ont nén des loyéns viè ds ôtes lingaedjes.",
+'withoutinterwiki-legend' => 'Betchete',
+
+'fewestrevisions' => "Årtikes k' on n' î a waire bodjî",
+
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|octet|octets}}',
 'ncategories' => '$1 {{PLURAL:$1|categoreye|categoreyes}}',
@@ -892,17 +1267,21 @@ ou co po les sons
 'nmembers' => '$1 {{PLURAL:$1|mimbe|mimbes}}',
 'nrevisions' => '$1 {{PLURAL:$1|modêye|modêyes}}',
 'nviews' => 'léjhowe $1 {{PLURAL:$1|côp|côps}}',
+'nimagelinks' => 'Eployî so $1 pådje{{PLURAL:$1||s}}',
+'ntransclusions' => 'eployî so $1 pådje{{PLURAL:$1||s}}',
 'specialpage-empty' => 'Cisse pådje cial est vude.',
 'lonelypages' => 'Pådjes ôrfulinnes',
 'uncategorizedpages' => 'Pådjes sins nole categoreye',
 'uncategorizedcategories' => 'Categoreyes nén categorijheyes',
-'uncategorizedimages' => 'Imådjes nén categorijheyes',
+'uncategorizedimages' => 'Fitchîs nén categorijhîs',
 'uncategorizedtemplates' => 'Modele nén categorijhî',
 'unusedcategories' => 'Categoreyes nén eployeyes',
 'unusedimages' => 'Imådjes nén eployeyes',
 'popularpages' => 'Pådjes les pus léjhowes',
 'wantedcategories' => 'Categoreyes les pus rcwerowes',
 'wantedpages' => 'Pådjes les pus rcwerowes',
+'wantedfiles' => 'Fitchîs les pus rcwerous',
+'wantedtemplates' => 'Modeles ricwerous',
 'mostlinked' => 'Pådjes les pus loyeyes',
 'mostlinkedcategories' => 'Categoreyes les pus loyeyes',
 'mostlinkedtemplates' => 'Modeles les pus eployîs',
@@ -913,33 +1292,48 @@ ou co po les sons
 'shortpages' => 'Coûtès pådjes',
 'longpages' => 'Longowès pådjes',
 'deadendpages' => 'Pådjes sins nou loyén wiki',
+'deadendpagestext' => "Les pådjes shuvantes n' ont nou loyén viè ds ôtès pådjes di {{SITENAME}}.",
 'protectedpages' => 'Pådjes protedjeyes',
+'protectedpages-indef' => "Seulmint les protedjaedje disk' a todi",
+'protectedpages-cascade' => 'Seulmint les protedjaedjes e cascåde',
+'protectedpagestext' => "Les pådjes shuvantes sont protedjeyes siconte li displaeçaedje ou l' candjmint do tecse",
+'protectedpagesempty' => 'I gn a pol moumint nole pådje sifwaitmint protedjeye.',
+'protectedtitles' => 'Tites protedjîs',
+'protectedtitlestext' => "Les tites shuvants sont protedjîs, ça fwait k' on n' pout nén ahiver ene pådje lomêye inla.",
+'protectedtitlesempty' => 'I gn a pol moumint nou tite sifwaitmint protedjî.',
 'listusers' => 'Djivêye des uzeus',
+'usereditcount' => '$1 candjmint{{PLURAL:$1||s}}',
+'usercreated' => '{{GENDER:$3|Edjîstré|Edjîstrêye}} li $1 a $2',
 'newpages' => 'Novelès pådjes',
+'newpages-username' => "No d' elodjaedje:",
 'ancientpages' => 'Viyès pådjes',
 'move' => 'Displaecî',
 'movethispage' => 'Displaecî cisse pådje',
-'unusedimagestext' => "Notez tot l' minme ki d' ôtès waibes polèt aveur des loyéns viè ces imådjes la gråcès a ene direke hårdêye. Do côp, ces imådjes aparexhèt chal, mågré k' ele soeyexhe eployeyes.",
+'unusedimagestext' => "Les fitchîs shuvants egzistèt mins n' sont håynés dins nole pādje.
+Notez tot l' minme ki d' ôtès waibes polèt aveur des loyéns viè ces imådjes la gråcès a ene direke hårdêye; do côp, ces imådjes aparexhèt chal, mågré k' ele soeyexhe eployeyes.",
 'unusedcategoriestext' => "Les pådjes di categoreye shuvantes egzistént, mins i n' a nol årtike ni categoreye å dvins.",
-'pager-newer-n' => '{{PLURAL:$1|pus novea 1|pus noveas $1}}',
-'pager-older-n' => '{{PLURAL:$1|pus vî 1|pus vîs $1}}',
+'pager-newer-n' => '{{PLURAL:$1|$1 pus novea|$1 pus noveas}}',
+'pager-older-n' => '{{PLURAL:$1|$1 pus vî|$1 pus vîs}}',
 
 # Book sources
 'booksources' => 'Sourdants po les lives',
 
 # Special:Log
-'specialloguserlabel' => 'Uzeu:',
-'speciallogtitlelabel' => 'Tite:',
+'specialloguserlabel' => 'Fwait pa:',
+'speciallogtitlelabel' => 'Såme (tite ou uzeu):',
 'log' => 'Djournås',
-'alllogstext' => "Håynaedje etercroejhlé des djournås d' eberwetaedje, disfaçaedje, protedjaedje, blocaedje eyet manaedjeus.
-Vos ploz limiter l' håynaedje tot tchoezixhant ene sôre di djournå, on no d' uzeu, ou l' tite d' ene pådje.",
+'all-logs-page' => 'Tos les djournås publiks',
+'alllogstext' => "Håynaedje etercroejhlé di tos les djournås disponibes so {{SITENAME}}.<br />
+Vos ploz defini l' håynaedje tot tchoezixhant ene sôre di djournå, on no d' uzeu, ou l' tite d' ene pådje (po ces deus dierins l' sitinme fwait l' diferince inte les grandes et les ptitès letes).",
 'logempty' => "Rén n' corespond dins l' djournå.",
+'log-title-wildcard' => "Cweri emey les tites ki cmincèt avou ç' tecse la",
 
 # Special:AllPages
 'allpages' => 'Totes les pådjes',
 'alphaindexline' => 'di $1 a $2',
 'nextpage' => 'Pådje shuvante ($1)',
 'allpagesfrom' => 'Håyner les pådjes a pårti di:',
+'allpagesto' => "Håyner les pådjes disk' a:",
 'allarticles' => 'Tos les årtikes',
 'allinnamespace' => 'Totes les pådjes (espåce di lomaedje $1)',
 'allnotinnamespace' => "Totes les pådjes (foû d' l' espåce di lomaedje $1)",
@@ -951,9 +1345,34 @@ Vos ploz limiter l' håynaedje tot tchoezixhant ene sôre di djournå, on no d'
 
 # Special:Categories
 'categories' => 'Categoreyes',
-'categoriespagetext' => 'I gn a les categoreyes shuvantes sol wiki.
-[[Special:UnusedCategories|Unused categories]] are not shown here.
-Also see [[Special:WantedCategories|wanted categories]].',
+'categoriespagetext' => '{{PLURAL:$1|Li categoreye shuvante est eployeye|Les categoreyes shuvantes sont-st eployeyes}} pa des pådjes ou des fitchîs.
+[[Special:UnusedCategories|Les categoreyes nén eployeyes]] èn sont nén håynêyes chal.
+Loukîz eto [[Special:WantedCategories|les categoreyes dimandêyes]].',
+'categoriesfrom' => 'Håyner les categoreyes a pårti di:',
+'special-categories-sort-count' => 'relére pa nombe di cayets',
+'special-categories-sort-abc' => 'relére alfabeticmint',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Contribouwaedjes disfacés',
+'deletedcontributions-title' => 'Contribouwaedjes disfacés',
+'sp-deletedcontributions-contribs' => 'contribouwaedjes',
+
+# Special:LinkSearch
+'linksearch' => 'Cweri des dfoûtrinnès hårdêyes',
+'linksearch-pat' => 'Patron pol cweraedje:',
+'linksearch-ns' => 'Espåce di lomaedje:',
+'linksearch-ok' => 'Cweri',
+'linksearch-text' => 'Des caracteres «djokers» polèt esse eployîs, metans «*.wikipedia.org».
+Mins i fåt pol moens on dominne di prumî livea, metans «*.org»<br />
+Protocoles ricnoxhous: <tt>$1</tt> (nelzès metoz nén dins vosse tchinne di cweraedje).',
+'linksearch-line' => "$1 est loyî a pårti d' $2",
+'linksearch-error' => "Les caracteres djokers èn polèt esse eployîs k' a l' atake d' on no d' dominne ou d' lodjoe.",
+
+# Special:ListUsers
+'listusersfrom' => 'Håyner les uzeus a pårti di:',
+'listusers-submit' => 'Vey',
+'listusers-noresult' => 'Nol uzeu di trové.',
+'listusers-blocked' => '({{GENDER:$1|bloké|blokêye}})',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Djournå des noveas uzeus',
@@ -964,22 +1383,21 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'mailnologintext' => "Po-z evoyî èn emile a èn ôte uzeu i vs fåt esse [[Special:UserLogin|elodjî]] eyet aveur ene adresse emile d' evoyeu ki soeye valide dins vos [[Special:Preferences|preferinces]].",
 'emailuser' => "Emiler a l' uzeu",
 'emailpage' => 'Emilaedje a èn uzeu',
-'emailpagetext' => "Si cist uzeu chal a dné ene adresse emile valide dins
-ses preferinces, vos lyi ploz evoyî èn emile a pårti di cisse pådje chal.
-L' adresse emile k' i gn a dins vos preferinces serè-st eployeye
+'emailpagetext' => "Vos ploz eployî l' formulrece chal pa dzo po-z evoyî èn emile a l' uzeu.
+L' adresse emile k' i gn a dins [[Special:Preferences|vos preferinces]] serè-st eployeye
 come adresse di l' evoyeu (adresse «From:» di l' emile),
 po ki l' riçuveu poye risponde.",
 'usermailererror' => "Åk n' a nén stî tot voyant l' emile:",
-'defemailsubject' => 'Emile da {{SITENAME}}',
+'defemailsubject' => "Emile da l' uzeu «$1» so {{SITENAME}}",
 'noemailtitle' => "Pont d' adresse emile",
-'noemailtext' => "Cist uzeu chal n' a nén dné d' adresse emile
-valide, ou n' vout nén rçure des emiles des ôtes uzeus.
-Do côp, c' est nén possibe di lyi evoyî èn emile.",
-'emailfrom' => 'Di',
+'noemailtext' => "Cist uzeu chal n' a nén dné d' adresse emile valide.",
+'emailfrom' => 'Di:',
 'emailto' => 'Po:',
-'emailsubject' => 'Sudjet',
-'emailmessage' => 'Messaedje',
+'emailsubject' => 'Sudjet:',
+'emailmessage' => 'Messaedje:',
 'emailsend' => 'Evoyî',
+'emailccme' => "M' emiler ene copeye do messaedje",
+'emailccsubject' => 'Copeyee di vosse messaedje a $1: $2',
 'emailsent' => 'Emile evoyî',
 'emailsenttext' => 'Vost emilaedje a stî evoyî comifåt.',
 
@@ -1003,15 +1421,15 @@ Si vos vloz bodjî l' pådje foû di vosse djivêye des shuvous, clitchîz so «
 'unwatchthispage' => 'Èn pus shuve li pådje',
 'notanarticle' => 'Nén èn årtike',
 'watchnochange' => "Nole des pådjes di vosse djivêye di pådjes a shuve n' a stî candjeye dins l' termene di tins dmandêye.",
-'watchlist-details' => '{{PLURAL:$1|$1 pådje shuvowe|$1 pådjes shuvowes}} (sins conter les pådjes di copene).',
+'watchlist-details' => 'Vos avoz {{PLURAL:$1|$1 pådje shuvowe|$1 pådjes shuvowes}} (sins conter les pådjes di copene).',
 'wlheader-enotif' => '* Li notifiaedje pa emile est en alaedje.',
 'wlheader-showupdated' => "* Les pådjes k' ont candjî dispoy vosse dierinne vizite sont metowes e '''cråssès letes'''",
 'watchmethod-recent' => "Cwerant après les pådjes k' ont stî candjeyes dierinnmint ki sont eto des pådjes shuvowes",
 'watchmethod-list' => "Cwerant après les pådjes shuvowes k' ont stî candjeyes dierinnmint",
 'watchlistcontains' => 'I gn a {{PLURAL:$1|$1 pådje|$1 pådjes}} e vosse djivêye des pådjes a shuve.',
 'iteminvalidname' => "Åk n' a nén stî avou «$1», li no n' est nén valide...",
-'wlnote' => 'Chal pa dzo les $1 dierins candjmints des <b>$2</b> dierinnès eures.',
-'wlshowlast' => 'Mostrer les dierin(nè)s $1 eures, $2 djoûs $3',
+'wlnote' => "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|del dierinne eure|des '''$2''' dierinnès eures}}, disk' å $3 a $4.",
+'wlshowlast' => 'Mostrer les dierin(nè)s $1 eures, $2 djoûs ou $3',
 
 'enotif_mailer' => 'Notifiaedje pa emile di {{SITENAME}}',
 'enotif_reset' => 'Mårker totes les pådjes come vizitêyes',
@@ -1022,7 +1440,8 @@ Si vos vloz bodjî l' pådje foû di vosse djivêye des shuvous, clitchîz so «
 'enotif_lastvisited' => 'Loukîz $1 po tos les candjmints dispoy vosse dierinne vizite.',
 'enotif_body' => 'Binamé $WATCHINGUSERNAME,
 
-Li pådje «$PAGETITLE» so {{SITENAME}} a stî $CHANGEDORCREATED li $PAGEEDITDATE pa $PAGEEDITOR, loukîz $PAGETITLE_URL pol modêye do moumint.
+Li pådje «$PAGETITLE» so {{SITENAME}} a stî $CHANGEDORCREATED li $PAGEEDITDATE pa $PAGEEDITOR,
+loukîz $PAGETITLE_URL pol modêye do moumint.
 
 $NEWPAGE
 
@@ -1032,17 +1451,24 @@ Contak do candjeu:
 emile: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-I n\' årè nén d\' ôtes notifiaedjes po ds ôtes candjmints di ç\' minme pådje ci tant k\' vos n\' l\' åroz nén vizitêye. Vos ploz eto rimete a noû les drapeas di notifiaedje po totes les pådjes di vosse djivêye des pådjes a shuve.
+I n\' årè nén d\' ôtes notifiaedjes po ds ôtes candjmints di ç\' minme pådje ci tant k\' vos n\' l\' åroz nén vizitêye.
+Vos ploz eto rimete a noû les drapeas di notifiaedje po totes les pådjes di vosse djivêye des pådjes a shuve.
 
 
-         Vosse binamé sistinme di notifiaedje so {{SITENAME}}
+Vosse binamé sistinme di notifiaedje so {{SITENAME}}
 
 --
+Po candjî l\' apontiaedje di vos notifiaedjes pa emile, loukîz
+{{canonicalurl:{{#special:Preferences}}}}
+
 Po candjî l\' apontiaedje di vosse djivêye a shuve, loukîz
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
+Po rsaetchî l\' pådje di vosse djivêye a shuve, alez so
+$UNWATCHURL
+
 Po pus d\' aidance:
-{{canonicalurl:{{ns:help}}:Aidance}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
 'deletepage' => "Disfacer l' pådje",
@@ -1051,13 +1477,15 @@ Po pus d\' aidance:
 'excontentauthor' => "li contnou esteut: «$1» (eyet l' seu contribouweu esteut «$2»)",
 'exbeforeblank' => "li contnou dvant l' disfaçaedje esteut: «$1»",
 'exblank' => 'li pådje esteut vude',
-'historywarning' => 'Asteme: Li pådje ki vos alez disfacer a-st ene istwere:',
-'confirmdeletetext' => "Vos alez disfacer po tofer del båze di dnêyes ene
-pådje ou ene imådje, avou tote si istwere.
+'delete-confirm' => 'Disfacer «$1»',
+'delete-legend' => 'Disfacer',
+'historywarning' => "'''Asteme:''' Li pådje ki vos alez disfacer a-st ene istwere avou a pô près $1 modêye{{PLURAL:$1||s}}:",
+'confirmdeletetext' => "Vos alez disfacer ene pådje avou tote si istwere.
 Acertinez s' i vs plait ki c' est bén çoula ki vos vloz fé,
 ki vos comprindoz les consecwinces, et ki vos fjhoz çoula
 tot [[{{MediaWiki:Policy-url}}|shuvant les rîles]].",
 'actioncomplete' => 'Fwait',
+'actionfailed' => "L' accion a fwait berwete",
 'deletedtext' => 'Li pådje «$1» a stî disfacêye. Loukîz li $2 po ene
 djivêye des dierins disfaçaedjes.',
 'dellogpage' => 'Djournå des disfaçaedjes',
@@ -1065,54 +1493,97 @@ djivêye des dierins disfaçaedjes.',
 'deletionlog' => 'djournå des disfaçaedjes',
 'reverted' => 'Rimetou ene modêye di dvant',
 'deletecomment' => 'Råjhon:',
+'deleteotherreason' => 'Ene råjhon diferinne ou di pus:',
+'deletereasonotherlist' => 'Ôte råjhon',
+'deletereason-dropdown' => "* Råjhons les pus corantes po disfacer
+** Dimande di l' oteur
+** Violåcion d' abondroets
+** Vandalisse",
+'delete-edit-reasonlist' => 'Candjî les råjhons do disfaçaedje',
+'delete-toobig' => "Cisse pådje ci a ene foû grande istwere, avou dpus di $1 modêye{{PLURAL:$1||s}}.
+Li disfaçaedje des sfwaitès pådjes a stî dismetou po-z espaitchî k' i gn åye des problinmes so {{SITENAME}}.",
+'delete-warning-toobig' => "Cisse pådje ci a ene foû grande istwere, avou dpus di $1 modêye{{PLURAL:$1||s}}.
+Si disfaçaedje pôreut fé des problinmes avou l' rotaedje del båze di dnêyes so {{SITENAME}}; 
+nel fijhoz k' avou asteme.",
 
 # Rollback
+'rollbacklink' => 'netyî',
 'cantrollback' => "Dji n' sai disfé les candjmints; li dierin contribouweu est li seu oteur po cist årtike ci.",
 'alreadyrolled' => "Dji n' sai disfé li dierin candjmint di [[$1]] fwait pa [[User:$2|$2]] ([[User talk:$2|Copene]]);
 ene sakî d' ôte a ddja candjî l' årtike ou ddja rmetou l' modêye di dvant.
 
 Li dierin candjmint a stî fwait pa [[User:$3|$3]] ([[User talk:$3|Copene]]).",
-'editcomment' => "Li comintaire do candjmint esteut: «''$1''».",
-'revertpage' => 'Disfwait li candjmint da [[Special:Contributions/$2|$2]] ([[User talk:$2|copene]]); li dierin candjmint est asteure da [[User:$1|$1]]',
+'editcomment' => "Li rascourti do candjmint esteut: «''$1''».",
+'revertpage' => 'Disfwait les candjmints da [[Special:Contributions/$2|$2]] ([[User talk:$2|copene]]); li dierin candjmint est asteure da [[User:$1|$1]]',
 
 # Protect
 'protectlogpage' => 'Djournå des protedjaedjes',
-'protectlogtext' => "Chal pa dzo c' est ene djivêye des protedjaedjes et disprotedjaedjes des pådjes.",
+'protectlogtext' => "Chal pa dzo c' est ene djivêye des protedjaedjes et disprotedjaedjes des pådjes.
+Loukîz al [[Special:ProtectedPages|djivêye des pådjes protedjeyes]] po vey les protedjaedjes ki sont en alaedje pol moumint.",
 'protectedarticle' => '«[[$1]]» protedjî',
-'unprotectedarticle' => '«[[$1]]» disprotedjî',
+'modifiedarticleprotection' => "a candjî l' livea d' protedjaedje di «[[$1]]»",
+'unprotectedarticle' => 'a disprotedjî «[[$1]]»',
+'movedarticleprotection' => 'a displaecî les parametes di protedjaedje di «[[$1]]» eviè «[[$2]]»',
 'protect-title' => 'Protedjant «$1»',
+'protect-title-notallowed' => "Livea d' protedjaedje di «$1»",
 'prot_1movedto2' => '[[$1]] displaecî viè [[$2]]',
+'protect-badnamespace-title' => 'Espåce di lomaedjé nén protedjåve',
+'protect-badnamespace-text' => "Les pådjes e cist espåce di lomaedje ci n' polèt nén esse protedjeyes.",
 'protect-legend' => "Acertinez l' protedjaedje",
 'protectcomment' => 'Råjhon:',
+'protectexpiry' => 'Termene:',
+'protect-unchain-permissions' => "Disclawer d' ôtès tchuzes di protedjaedje",
 'protect-text' => "Vos ploz droci vey eyet candjî l' livea d' protedjaedje pol pådje '''$1'''.",
-'protect-default' => '(prémetou)',
-'protect-level-autoconfirmed' => 'Bloker les uzeus nén eredjîstrés',
+'protect-default' => 'Permete a tos les uzeus',
+'protect-level-autoconfirmed' => 'Bloker les noveas uzeus et les cis nén edjîstrés',
 'protect-level-sysop' => 'Seulmint les manaedjeus',
-'protect-expiry-options' => '2 eures:2 hours,1 djoû:1 day,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite',
+'protect-summary-cascade' => 'e cascåde',
+'protect-expiring' => 'finixh li $1 (UTC)',
+'protect-expiring-local' => 'finixh li $1',
+'protect-expiry-indefinite' => 'po todi',
+'protect-cascade' => 'Protedjî eto les modeles eployîs so cisse pådje ci (protedjaedje e cascåde)',
+'protect-othertime' => 'Date di fén:',
+'protect-othertime-op' => 'ôte (a vos del diner)',
+'protect-existing-expiry' => 'Li protedjaedje finixh li $2 a $3',
+'protect-otherreason' => 'Ene råjhon diferinne ou di pus:',
+'protect-otherreason-op' => 'Ôte råjhon',
+'protect-expiry-options' => '1 eure:1 hour,1 djoû:1 day,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite',
+'restriction-type' => 'Permission po:',
+'restriction-level' => "Livea d' protedjaedje:",
+'minimum-size' => 'Grandeu minimom',
+'maximum-size' => 'Grandeu macsimom:',
 'pagesize' => '(octets)',
 
 # Restrictions (nouns)
-'restriction-edit' => 'Candjî',
-'restriction-move' => 'Displaecî',
+'restriction-edit' => 'candjî',
+'restriction-move' => 'displaecî',
+'restriction-create' => 'ahiver',
+'restriction-upload' => 'eberweter',
+
+# Restriction levels
+'restriction-level-sysop' => 'protedjaedje complet',
+'restriction-level-autoconfirmed' => 'dimey-protedjaedje',
+'restriction-level-all' => 'tos les liveas',
 
 # Undelete
 'undelete' => 'Rapexhî des disfacêyès pådjes',
 'undeletepage' => 'Vey et rapexhî des disfacêyès pådjes',
 'viewdeletedpage' => 'Vey les disfacêyès pådjes',
-'undeletepagetext' => 'Les pådjes shuvantes ont stî disfacêyes mins ele sont co ezès årtchives, do côp ele polèt esse rapexheyes.',
-'undeleteextrahelp' => "Po rapexhî l' pådje etire, leyîz vudes totes les boesses a clitchî eyet clitchîz sol boton «'''Rapexhî'''». Po rapexhî seulmint des modêyes k' i gn a, tchoezixhoz les cenes ki vos vloz avou les boesses a clitchî, eyet poy clitchîz sol boton «'''Rapexhî'''». Si vos clitchîz sol boton «'''Netyî'''», çoula neteyrè l' tchamp d' comintaire eyet totes les boesses a clitchî.",
-'undeleterevisions' => '$1 modêyes ezès årtchives',
-'undeletehistory' => "Si vos rapexhîz l' pådje, l' istwere del pådje
-serè rapexheye eto, avou totes les modêyes co ezès årtchives.
-Si ene novele pådje avou l' minme no a stî askepieye dispoy li disfaçaedje
-di cisse chal, les rapexheyès modêyes seront metowes e l' istwere mins
-c' est l' modêye do moumint, et nén l' cisse rapexheye, ki
-srè håynêye.",
+'undeletepagetext' => '{{PLURAL:$1|Li pådje shuvante a stî disfacêye mins elle est co ezès årtchives, do côp ele pout esse rapexheye|Les pådjes shuvantes ont stî disfacêyes mins ele sont co ezès årtchives, do côp ele polèt esse rapexheyes}}.
+Les årtchives polèt esse rnetieyes di tinzintins.',
+'undelete-fieldset-title' => 'Rapexhî les modêyes',
+'undeleteextrahelp' => "Po rapexhî l' istwere etire del pådje, leyîz vudes totes les boesses a clitchî eyet clitchîz sol boton «'''{{int:undeletebtn}}'''».
+Po rapexhî seulmint des modêyes k' i gn a, tchoezixhoz les cenes ki vos vloz avou les boesses a clitchî, eyet poy clitchîz sol boton «'''{{int:undeletebtn}}'''».",
+'undeleterevisions' => '$1 modêye{{PLURAL:$1||s}} ezès årtchives',
+'undeletehistory' => "Si vos rapexhîz l' pådje, tote l' istwere del pådje serè rapexheye eto.
+Si ene novele pådje avou l' minme no a stî askepieye dispoy li disfaçaedje di cisse-chal,
+les rapexheyès modêyes seront metowes e l' istwere del nouve pådje, come viyès modêyes di cisse-lale.",
 'undeletehistorynoadmin' => "Cist årtike a stî disfacé. Li råjhon do
 disfaçaedje est dnêye chal pa dzo, avou les detays des uzeus k' ont
 candjî l' pådje divant do disfaçaedje. Li tecse di ces modêyes disfacêyes
 ni pout esse veyou ki des manaedjeus.",
-'undeletebtn' => 'Rapexhî!',
+'undeletebtn' => 'Rapexhî',
+'undeletelink' => 'vey/rapexhî',
 'undeletereset' => 'Netyî',
 'undeletecomment' => 'Råjhon:',
 'undeletedrevisions' => '{{PLURAL:$1|1 modêye|$1 modêyes}} di rapexheyes',
@@ -1134,28 +1605,49 @@ Loukîz l' [[Special:Log/delete|djournå des disfaçaedjes]] po ene djivêye des
 
 # Contributions
 'contributions' => "Ovraedjes di l' uzeu",
+'contributions-title' => "Djivêye des ovraedjes di l' {{GENDER:$1|uzeu|uzeuse}} $1",
 'mycontris' => 'Mi ovraedje',
 'contribsub2' => "Po l' uzeu $1 ($2)",
 'nocontribs' => "Nou candjmint di trové ki corespondreut a ç' critere la.",
+'uctop' => '(dierinne)',
 'month' => "dispu l' moes (et pus timpe)",
-
-'sp-contributions-talk' => 'Copiner',
-'sp-contributions-userrights' => 'Manaedjî les liveas des uzeus',
+'year' => "Dispu l' anêye (et pus timpe):",
+
+'sp-contributions-newbies' => 'Mostrer seulmint les contribouwaedjes des noveas contes',
+'sp-contributions-newbies-sub' => 'Emey les noveas uzeus',
+'sp-contributions-newbies-title' => 'Contribouwaedjes des noveas uzeus',
+'sp-contributions-blocklog' => 'djournå des blocaedjes',
+'sp-contributions-deleted' => 'contribouwaedjes disfacés',
+'sp-contributions-uploads' => 'eberwetaedjes',
+'sp-contributions-logs' => 'djournås',
+'sp-contributions-talk' => 'copiner',
+'sp-contributions-userrights' => 'droets',
+'sp-contributions-blocked-notice' => '{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}} pol moumint.
+Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:',
+'sp-contributions-blocked-notice-anon' => 'Ciste adresse IP est blokêye pol moumint.
+Li dierinne intrêye e djournå des blocaedjes est dnêye chal pa dzo po infôrmåcion:',
+'sp-contributions-search' => 'Cweri les contribouwaedjes',
+'sp-contributions-username' => "Adresse IP ou no d' uzeu:",
 'sp-contributions-submit' => 'Cweri',
 
 # What links here
 'whatlinkshere' => 'Pådjes ki loynut chal',
-'whatlinkshere-title' => 'Pådjes ki loynut aviè « $1 »',
-'linkshere' => 'Les pådjes ki shuvèt ont des loyéns viè cisse ci:',
-'nolinkshere' => 'Nole pådje avou des loyéns viè cisse ci.',
+'whatlinkshere-title' => 'Pådjes ki loynut aviè «$1»',
+'whatlinkshere-page' => 'Pådje:',
+'linkshere' => "Les pådjes ki shuvèt ont des loyéns viè '''[[:$1]]''':",
+'nolinkshere' => "Nole pådje avou des loyéns viè '''[[:$1]]'''.",
 'isredirect' => 'pådje di redjiblaedje',
+'whatlinkshere-prev' => '{{PLURAL:$1|di dvant|$1 di dvant}}',
+'whatlinkshere-next' => '{{PLURAL:$1|shuvant|$1 shuvants}}',
 'whatlinkshere-links' => '← loyaedjes',
-'whatlinkshere-hideredirs' => '$1 ridjiblaedjes',
-'whatlinkshere-hidelinks' => '$1 loyaedjes',
+'whatlinkshere-hideredirs' => '$1 les rdjiblaedjes',
+'whatlinkshere-hidetrans' => '$1 les inclusions',
+'whatlinkshere-hidelinks' => '$1 les loyaedjes',
 'whatlinkshere-hideimages' => "$1 fitchîs k' eploynut cist imådje ci",
-'whatlinkshere-filters' => 'Passettes',
+'whatlinkshere-filters' => 'Passetes',
 
 # Block/unblock
+'autoblockid' => 'Blocaedje otomatike #$1',
 'blockip' => 'Bloker èn uzeu',
 'blockiptext' => "Rimplixhoz les tchamps chal pa dzo po bloker
 l' accès e scrijhaedje d' èn uzeu dné ou a pårt d' ene
@@ -1173,24 +1665,28 @@ stî vandalijheyes).",
 'ipbotheroption' => 'ôte',
 'badipaddress' => "Nol uzeu avou ç' no la, ou adresse IP nén valide",
 'blockipsuccesssub' => 'Li blocaedje a stî comifåt',
-'blockipsuccesstext' => '«[[Special:Contributions/$1|$1]]» a stî bloké.<br />Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po candjî on blocaedje.',
+'blockipsuccesstext' => '«[[Special:Contributions/$1|$1]]» a stî {{GENDER:$1|bloké|blokêye}}.<br />
+Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po verifyî les blocaedjes.',
 'unblockip' => 'Disbloker èn uzeu',
 'unblockiptext' => "Rimplixhoz les tchamps chal pa dzo po ridner accès e scrijhaedje a èn uzeu ou adresse IP k' estént blokés.",
-'ipusubmit' => 'Disbloker ciste adresse ci',
+'ipusubmit' => "Risaetchî l' blocaedje",
 'unblocked' => '«[[User:$1|$1]]» a stî disbloké',
-'ipblocklist' => "Djivêye d' adresses IP et di nos d' uzeus ki sont blokés",
+'unblocked-id' => 'Li blocaedje $1 a stî rsaetchî',
+'ipblocklist' => 'Uzeus blokés',
 'blocklist-reason' => 'Råjhon',
 'ipblocklist-submit' => 'Cweri',
 'infiniteblock' => 'po todi',
-'expiringblock' => "disk' å $1 $2",
+'expiringblock' => "disk' å $1 $2",
 'blocklink' => 'bloker',
 'unblocklink' => 'disbloker',
 'contribslink' => 'contribouwaedjes',
 'autoblocker' => "Bloké otomaticmint paski vos eployîz li minme adresse IP ki «[[User:$1|$1]]». Råjhon do blocaedje «'''$2'''».",
 'blocklogpage' => 'Djournå des blocaedjes',
-'blocklogentry' => '«[[$1]]» a stî bloké po ene termene di $2',
-'blocklogtext' => "Çouchal, c' est on djournå des blocaedjes eyet disblocaedjes d' uzeus. Les adresses IP blokêyes otomaticmint èn sont nén håynêyes. Loukîz li [[Special:BlockList|djivêye des adresses IP blokêyes]] po vey les blocaedjes d' adresses IP do moumint.",
-'unblocklogentry' => '«$1» a stî disbloké',
+'blocklogentry' => 'a bloké «[[$1]]» po ene termene di $2 $3',
+'blocklogtext' => "Çouchal, c' est on djournå des blocaedjes eyet disblocaedjes d' uzeus.
+Les adresses IP blokêyes otomaticmint èn sont nén håynêyes.
+Loukîz li [[Special:BlockList|djivêye des blocaedjes]] po vey les blocaedjes èn alaedje pol moumint.",
+'unblocklogentry' => 'a disbloké «$1»',
 'range_block_disabled' => "Li possibilité po les manaedjeus di bloker des fortchetes d' adresses IP a stî dismetowe.",
 'ipb_expiry_invalid' => 'Tins di blocaedje nén valide.',
 'ip_range_invalid' => "Fortchete d' adresses IP nén valide.",
@@ -1200,16 +1696,24 @@ stî vandalijheyes).",
 'sorbsreason' => "Voste adresse IP si trove dins l' djivêye des procsis å lådje di DNSBL.",
 'sorbs_create_account_reason' => "Voste adresse IP si trove dins l' djivêye des procsis å lådje di DNSBL. Vos n' poloz nén ahiver on conte d' uzeu.",
 
+# Developer tools
+'lockdb' => 'Aclawaedje del båze di dnêyes',
+'lockdbsuccesssub' => "L' aclawaedje del båze di dnêyes a stî comifåt",
+'lockdbsuccesstext' => 'Li båze di dnêyes a stî aclawêye.<br />
+Ni rovyîz nén del [[Special:UnlockDB|disserer]] cwand vos åroz tot fwait avou voste etertinaedje.',
+'lockedbyandtime' => '(pa $1 li $2 a $3)',
+
 # Move page
 'move-page' => 'Rilomer $1',
 'move-page-legend' => "Displaecî l' pådje",
-'movepagetext' => "Chal vos ploz candjî l' no d' ene pådje, dj' ô bén displaecî l' pådje, eyet si istwere, viè l' novea no.
+'movepagetext' => "Chal vos ploz candjî l' no d' ene pådje, dj' ô bén displaecî l' pådje, eyet si istwere, eviè l' novea no.
 Li vî tite divénrè-st ene pådje di redjiblaedje viè l' novele.
-Les loyéns viè l' viye pådje èn seront nén candjîs; acertinez vs di verifyî s' i n' a nén des dobes ou crons redjiblaedjes.
+Vos ploz mete otomaticmint a djoû les redjiblaedje k' evoyént sol vî tite.
+Si vos nel vloz nén fé, acertinez vs di verifyî s' i n' a nén des [[Special:DoubleRedirects|dobes]] ou [[Special:BrokenRedirects|crons redjiblaedjes]].
 Vos estoz responsåve di fé çou k' i fåt po k' les loyéns continouwexhe di moenner la k' i fåt.
 
 Notez k' el pådje èn serè '''nén''' displaeceye s' i gn a ddja ene pådje avou l' novea tite, a moens k' ele soeye vude, ou ene pådje di redjiblaedje, et k' ele n' åye nole istwere.
-Çoula vout dire ki vos ploz ri-displaecî ene pådje viè l' no k' ele aveut djusse divant, et insi disfé vosse prumî displaeçaedje, å cas ou vos vs rindrîz conte ki vos avoz fwait ene flotche;
+Çoula vout dire ki vos ploz ridisplaecî ene pådje viè l' no k' ele aveut djusse divant, et insi disfé vosse prumî displaeçaedje, å cas ou vos vs rindrîz conte ki vos avoz fwait ene flotche;
 ey eto ki vos n' poloz nén spotchî par accidint ene pådje k' egzistêye dedja.
 
 '''ASTEME!'''
@@ -1236,7 +1740,7 @@ Tchoezixhoz è èn ôte s' i vs plait.",
 'talkexists' => "'''Li pådje leye minme a stî displaeceye comifåt, mins nén li pådje di copene, ca i gn aveut ddja ene pådje di copene k' egzistéve al novele plaece. I vs fårè copyî l' tecse del pådje di copene al mwin.'''",
 'movedto' => 'displaecî viè',
 'movetalk' => 'Displaecî li pådje di copene avou, si ça astchait.',
-'movelogpage' => 'Djournå des displaçaedjes',
+'movelogpage' => 'Djournå des displaeçaedjes',
 'movelogpagetext' => "Chal pa dzo c' est ene djivêye des pådjes k' on stî displaceyes.",
 'movereason' => 'Råjhon:',
 'revertmove' => 'disfé',
@@ -1245,7 +1749,7 @@ Tchoezixhoz è èn ôte s' i vs plait.",
 
 L' årtike såme «[[:$1]]» egzistêye dedja. El voloz vs disfacer po vs permete di displaecî l' ôte?",
 'delete_and_move_confirm' => "Oyi, disfacer l' pådje",
-'delete_and_move_reason' => 'Disfacé po permete on displaeçaedje',
+'delete_and_move_reason' => 'Disfacé po permete li displaeçaedje di «[[$1]]»',
 'selfmove' => 'Les tites sourdant et såme sont les minmes; ene pådje ni pout nén esse displaeceye so leye minme.',
 'fix-double-redirects' => "Rapontyî les rdjiblaedjes ki loynut aviè l' mwaisse tite",
 
@@ -1267,8 +1771,18 @@ Dins ç' dierin cas, vos ploz eto eployî ene hårdêye, eg: [[{{#Special:Export
 'allmessagesname' => 'No del variåve',
 'allmessagesdefault' => 'Tecse prémetou',
 'allmessagescurrent' => 'Tecse pol moumint',
-'allmessagestext' => "Çouchal est ene djivêye di tos les messaedjes k' i gn a dins l' espåce di lomaedje ''MediaWiki:''",
+'allmessagestext' => "Çouchal est ene djivêye des messaedjes sistinme k' i gn a dins l' espåce di lomaedje ''MediaWiki:''.
+Loukîz les pådjes sol [//www.mediawiki.org/wiki/Localisation Locålijhaedje di MediaWiki] et 
+[//translatewiki.net/ translatewiki.net] si vos vloz pårticiper avou l' ratournaeje djenerike di MediaWiki.",
 'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' n' est nén sopoirté paski '''\$wgUseDatabaseMessages''' est dismetou.",
+'allmessages-filter-legend' => 'Passete',
+'allmessages-filter' => "Sorlon l' estat d' candjaedje:",
+'allmessages-filter-unmodified' => 'Nén candjîs',
+'allmessages-filter-all' => 'Totafwait',
+'allmessages-filter-modified' => 'Candjîs',
+'allmessages-prefix' => "Sorlon l' betchete:",
+'allmessages-language' => 'Lingaedje:',
+'allmessages-filter-submit' => 'Apliker',
 
 # Thumbnails
 'thumbnail-more' => 'Ragrandi',
@@ -1284,7 +1798,8 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'import-interwiki-history' => "Ristitchî avou l' istwere di totes les modêyes",
 'import-interwiki-submit' => 'Ristitchî',
 'import-comment' => 'Comintaire:',
-'importtext' => "S' vs plait ricopyîz l' fitchî foû do sourdant wiki avou l' usteye di rcopiaedje foû (Special:Export), el schaper so voste éndjole, et poy l' eberweter droci.",
+'importtext' => "S' i vs plait ricopyîz l' fitchî foû do sourdant wiki avou l' [[Special:Export|usteye di rcopiaedje foû]].
+Et s' el schaper so voste éndjole, et poy li ristitchî droci.",
 'importstart' => "Dj' enonde li ristitchaedje...",
 'import-revision-count' => '{{PLURAL:$1|1 modêye|$1 modêyes}}',
 'importnopages' => 'Nole pådje a ristitchî.',
@@ -1294,6 +1809,15 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'importbadinterwiki' => 'Cron loyén eterwiki',
 'importnotext' => "Vude ou pont d' tecse",
 'importsuccess' => 'Li ristitchaedje a stî comifåt!',
+'xml-error-string' => '$1 al roye $2, colone $3 (octet $4): $5',
+
+# Import log
+'importlogpage' => 'Djournå des ristitchaedjes',
+'importlogpagetext' => "Ristitchaedjes (import) administratifs di pådjes avou leus istorikes di candjmints, a pårti d' ôtes wikis.",
+'import-logentry-upload' => 'a ristitchî [[$1]] avou èn eberwetaedje di fitchî',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|modêye|modêyes}}',
+'import-logentry-interwiki' => "a ristitchî $1 foû d' èn ôte wiki",
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|modêye|modêyes}} foû di $2',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => "Pådje d' uzeu da minne",
@@ -1308,18 +1832,23 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'tooltip-pt-logout' => 'Vos dislodjî',
 'tooltip-ca-talk' => 'Copene åd fwait do contnou del pådje',
 'tooltip-ca-edit' => "Vos ploz candjî cisse pådje ci. S' i vs plait, eployîz l' boton «Vey divant» po vs acertiner k' tot est comifåt dvant d' schaper vos candjmints.",
-'tooltip-ca-addsection' => 'Radjouter on comintaire a cisse copene ci.',
-'tooltip-ca-viewsource' => "Cisse pådje ci est protedjeye. Vos ploz seulmint vey li côde sourdant, mins nén l' candjî.",
+'tooltip-ca-addsection' => 'Radjouter ene novele seccion',
+'tooltip-ca-viewsource' => "Cisse pådje ci est protedjeye.
+Vos ploz seulmint vey li côde sourdant, mins nén l' candjî.",
 'tooltip-ca-history' => 'Viyès modêyes del pådje.',
 'tooltip-ca-protect' => 'Protedjî cisse pådje ci',
+'tooltip-ca-unprotect' => "Candjî l' protedjaedje del pådje",
 'tooltip-ca-delete' => 'Disfacer ci pådje ci',
 'tooltip-ca-undelete' => "Rapexhî les candjmitns fwaits al pådje divant k' ele soeyexhe disfacêye",
 'tooltip-ca-move' => 'Displaecî cisse pådje ci',
 'tooltip-ca-watch' => 'Radjouter cisse pådje ci al djivêye di vos årtikes shuvous',
 'tooltip-ca-unwatch' => 'Bodjî cisse pådje ci di vosse djivêye des årtikes shuvous',
 'tooltip-search' => 'Cweri so ci wiki chal',
+'tooltip-search-go' => 'Potchî so ene pådje avou egzactumint ci no ci, si ele egzistêye.',
+'tooltip-search-fulltext' => "Cweri les pådjes avou ç' tecse ci",
 'tooltip-p-logo' => 'Mwaisse pådje',
 'tooltip-n-mainpage' => 'Vizitez li Mwaisse pådje',
+'tooltip-n-mainpage-description' => 'Vizitez li Mwaisse pådje',
 'tooltip-n-portal' => "Åd fwait do pordjet, çou k' vos ploz fé, wice trover des sacwès",
 'tooltip-n-currentevents' => "Des infôrmåcions so des evenmints d' actouwålité",
 'tooltip-n-recentchanges' => "Li djivêye des dierins candjmints k' i gn a-st avou sol wiki.",
@@ -1333,10 +1862,12 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'tooltip-t-emailuser' => 'Evoyî èn emile a cist uzeu ci',
 'tooltip-t-upload' => 'Eberweter sol sierveu des imådjes ou fitchîs media',
 'tooltip-t-specialpages' => 'Djivêye di totes les pådjes sipeciåles',
+'tooltip-t-print' => 'Modêye sicrirece-amiståve del pådje',
+'tooltip-t-permalink' => 'Permanante hårdêye viè cisse modêye chal del pådje',
 'tooltip-ca-nstab-main' => 'Vey li pådje di contnou',
 'tooltip-ca-nstab-user' => "Vey li pådje di l' uzeu",
 'tooltip-ca-nstab-media' => 'Vey li pådje di media',
-'tooltip-ca-nstab-special' => "Çouchal, c' est ene pådje sipeciåle, vos n' poloz nén candjî l' pådje leyminme.",
+'tooltip-ca-nstab-special' => "Çouchal, c' est ene pådje sipeciåle, vos n' poloz nén candjî l' pådje leye-minme.",
 'tooltip-ca-nstab-project' => 'Vey li pådje di pordjet',
 'tooltip-ca-nstab-image' => "Vey li pådje d' imådje",
 'tooltip-ca-nstab-mediawiki' => 'Vey li messaedje ratournåve do sistinme',
@@ -1350,6 +1881,9 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'tooltip-compareselectedversions' => 'Mostrer les diferinces etur les deus modêyes tchoezeyes di cisse pådje ci. [alt-v]',
 'tooltip-watch' => 'Radjouter cisse pådje ci a vosse djivêye des shuvous [alt-w]',
 'tooltip-recreate' => "Rifé cisse pådje ci mågré k' ele åye sitî disfacêye",
+'tooltip-rollback' => "Li loyén «{{int:rollbacklink}}» permete di disfé d' on seu clitch tos les candjmints(s) fwaits sol pådje på dierin uzeu.",
+'tooltip-undo' => "Li loyén «{{int:editundo}}» permete di disfé li candjmint et drouve li boesse di candjmint e môde prévoeyaedje.
+Dj' ô bén, ça permete di disfé l' candjmint et d' mete on messaedje dins l' boesse di rascourti.",
 
 # Stylesheets
 'common.css' => '/* li côde CSS metou chal serè eployî pa totes les peas et tos les uzeus */',
@@ -1360,27 +1894,53 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 
 # Attribution
 'anonymous' => '{{PLURAL:$1|Uzeu anonime|Uzeus anonimes}} di {{SITENAME}}',
-'siteuser' => "Uzeu d' {{SITENAME}} «$1»",
+'siteuser' => "$1, {{GENDER:$2|uzeu d'|uzeuse di}} {{SITENAME}}",
+'anonuser' => '$1, {{GENDER:$2|uzeu|uzeuse}} anonime di {{SITENAME}}',
 'lastmodifiedatby' => 'Cisse pådje a stî candjeye pol dierin côp li $2, $1 pa $3.',
 'othercontribs' => "Båzé so l' ovraedje da $1.",
-'others' => 'des ôtes',
-'siteusers' => "{{PLURAL:$2|uzeu|uzeus}} d' {{SITENAME}} «$1»",
+'others' => 'co ds ôtes',
+'siteusers' => "$1, {{PLURAL:$2|uzeu|uzeus}} d' {{SITENAME}}",
+'anonusers' => '$1, {{PLURAL:$2|uzeu anonime|uzeus anonimes}} di {{SITENAME}}',
 'creditspage' => 'Pådje di credits',
 'nocredits' => "I n' a pont d' infôrmåcion di credits po cisse pådje ci.",
 
+# Info page
+'pageinfo-title' => 'Infôrmåcion po «$1»',
+'pageinfo-header-watchlist' => 'Djivêye des shuvous',
+'pageinfo-header-views' => 'Vuwes',
+'pageinfo-subjectpage' => 'Pådje',
+'pageinfo-talkpage' => 'Pådje di copene',
+'pageinfo-watchers' => 'Nombe di shuveus',
+'pageinfo-edits' => 'Nombe di candjmints',
+'pageinfo-authors' => "Nombe d' oteurs diferins",
+'pageinfo-views' => 'Nombe di lijhaedjes',
+
+# Patrolling
+'markaspatrolleddiff' => 'Marké come patrouyî',
+'markaspatrolledtext' => 'Marker cisse pådje ci come dedja patrouyeye',
+
+# Patrol log
+'patrol-log-page' => 'Djournå des patrouyaedjes',
+'patrol-log-header' => "Çouchal c' est on djournå des modêyes k' ont stî patrouyeyes.",
+
 # Image deletion
 'deletedrevision' => 'Viye modêye $1 disfacêye',
+'filedelete-missing' => "Li fitchî «$1» n' pout nén esse disfacé, la k' i n' egzistêye nén.",
+'filedelete-old-unregistered' => "Li modêye do fitchî dnêye «$1» ni s' trove nén el båze di dnêyes.",
+'filedelete-current-unregistered' => "Li fitchî dné «$1» ni s' trove nén el båze di dnêyes.",
 
 # Browsing diffs
 'previousdiff' => '← Diferinces des candjmints di dvant',
 'nextdiff' => 'Diferinces des candjmints shuvants →',
 
 # Media information
-'mediawarning' => "'''Asteme''': Ci fitchî chal pôreut esse evirussé, si vos l' enondez vos pôrîz infecter l' sistinme da vosse.",
-'imagemaxsize' => "Limite pol håynaedje ezès pådjes d' imådje:",
+'mediawarning' => "'''Asteme''': Ci fitchî chal pôreut esse evirussé.
+Si vos l' enondez vos pôrîz infecter l' sistinme da vosse.",
+'imagemaxsize' => "Limite pol grandeu des imådjes:<br />''(ezès pådjes d'i discrijhaedje di fitchîs)''",
 'thumbsize' => 'Grandeu po les imådjetes (thumb):',
+'widthheightpage' => '$1 × $2, $3 pådje{{PLURAL:$3||s}}',
 'file-info-size' => '$1 × $2 picsels, groxheur do fitchî: $3, del sôre "MIME": $4',
-'show-big-image' => 'Pus grande imådje',
+'show-big-image' => "Imådje a si grandeur d' oridjinne",
 
 # Special:NewFiles
 'newimages' => 'Galreye des nouvès imådjes',
@@ -1391,12 +1951,20 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
 'bydate' => 'pazès dates',
 'sp-newimages-showfrom' => 'Mostrer les nouvès imådjes a pårti do $2, $1',
 
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds' => '$1 segonde{{PLURAL:$1||s}}',
+'minutes' => '$1 munute{{PLURAL:$1||s}}',
+'hours' => '$1 eures{{PLURAL:$1||s}}',
+'days' => '$1 djoû{{PLURAL:$1||s}}',
+'ago' => 'i gn a $1',
+
 # Metadata
 'metadata' => 'Meta-dnêyes',
-'metadata-help' => "Ci fitchî chal a des infôrmåcions di rawete, motoit bén radjoutêyes pa l' aparey foto limerike ou l' sicanrece eployeye po fé l' imådje. Si l' imådje a stî candjeye dispoy adon, i s' pout ki sacwants detays ni corespondexhe pus totafwait.",
+'metadata-help' => "Ci fitchî chal a des infôrmåcions di rawete, motoit bén radjoutêyes pa l' aparey foto limerike ou l' sicanrece eployeye po fé l' imådje.
+Si l' imådje a stî candjeye dispoy adon, i s' pout ki sacwants detays ni corespondexhe pus totafwait.",
 'metadata-expand' => 'Mostrer les stindous detays',
 'metadata-collapse' => 'Catchî les stindous detays',
-'metadata-fields' => "Les tchamps di meta-dnêyes EXIF metous chal vont esse
+'metadata-fields' => "Les tchamps di meta-dnêyes des imådjes metous chal vont esse
 håynés ezès pådjes d' imådje cwand l' tåvlea di meta-dnêyes
 est raptiti. Les ôtes seront catchîs.
 * make
@@ -1454,6 +2022,8 @@ est raptiti. Les ôtes seront catchîs.
 'exif-gpsareainformation' => 'No del redjon GPS',
 'exif-gpsdatestamp' => 'Date do GPS',
 'exif-gpsdifferential' => 'Coridjaedje diferenciel do GPS',
+'exif-iimcategory' => 'Categoreye',
+'exif-iimsupplementalcategory' => 'Categoreyes di rawete',
 
 'exif-orientation-1' => 'Normå',
 'exif-orientation-3' => 'Tourné di 180°',
@@ -1521,7 +2091,7 @@ est raptiti. Les ôtes seront catchîs.
 
 # External editor support
 'edit-externally' => "Candjî ç' fitchî ci avou on dfoûtrin programe",
-'edit-externally-help' => "Loukîz les [//www.mediawiki.org/wiki/Manual:External_editors instruccions d' apontiaedje] po pus di racsegnes.",
+'edit-externally-help' => "(Loukîz les [//www.mediawiki.org/wiki/Manual:External_editors instruccions d' apontiaedje] po pus di racsegnes)",
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totafwait',
@@ -1538,7 +2108,10 @@ tcherdjîz l' hårdêye dins l' betchteu waibe da vosse, eyet
 acertinez ki l' adresse emile est djusse tot dnant l' côde.",
 'confirmemail_send' => "Emiler on côde d' acertinaedje",
 'confirmemail_sent' => "L' emile d' acertinaedje a stî evoyî.",
-'confirmemail_sendfailed' => "Dji n' a savou evoyî l' emile d' acertinaedje. Verifyîz ki l' adresse est bén djusse.",
+'confirmemail_sendfailed' => "{{SITENAME}} n' a nén savou vs evoyî l' emile d' acertinaedje.
+Verifyîz ki l' adresse est bén djusse.
+
+Li programe d' emilaedje a rtourné: $1",
 'confirmemail_invalid' => "Côde d' acertinaedje nén valide. Motoit k' il esteut trop vî.",
 'confirmemail_needlogin' => 'I vs fåt $1 po pleur acertiner voste adresse emile.',
 'confirmemail_success' => 'Voste adresse emile a stî acertinêye. Vos vs poloz asteure elodjî eyet profiter do wiki.',
@@ -1554,15 +2127,18 @@ alez drovî avou vosse betchteu waibe li hårdêye ki shût:
 
 $3
 
-Si c' est *nén* vos k' a-st ahivé l' conte, adon èn shuvoz
-nén l' hårdêye. Ci côde d' acertinaedje ci va-st espirer
-po l' $4.",
+Si c' est *nén* vos k' a-st ahivé l' conte, adon shuvoz
+l' hårdêye shuvante po fé rnoncî l' acertinaedje d' emile:
+
+$5
+
+Ci côde d' acertinaedje ci va-st espirer po l' $4.",
 
 # Scary transclusion
 'scarytranscludetoolong' => '[Li hårdêye est pår trop longue]',
 
 # Delete conflict
-'deletedwhileediting' => 'Asteme: Cisse pådje ci a stî disfacêye sol tins ki vos scrijhîz!',
+'deletedwhileediting' => "'''Asteme''': Cisse pådje ci a stî disfacêye sol tins ki vos scrijhîz!",
 'confirmrecreate' => "L' uzeu [[User:$1|$1]] ([[User talk:$1|copene]]) a disfacé cisse pådje ci après ki vos avoz cmincî a scrire, li råjhon k' il a dné c' est:
 : ''$2''.
 Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
@@ -1577,15 +2153,22 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'imgmultipagenext' => 'pådje shuvante →',
 
 # Table pager
+'ascending_abbrev' => 'crexh.',
+'descending_abbrev' => 'discr.',
 'table_pager_next' => 'Pådje shuvante',
 'table_pager_prev' => 'Pådje di dvant',
 'table_pager_first' => 'Prumire pådje',
 'table_pager_last' => 'Dierinne pådje',
+'table_pager_limit' => 'Håyner $1 cayets el pådje',
+'table_pager_limit_label' => 'Cayets par pådje:',
+'table_pager_limit_submit' => 'I va',
+'table_pager_empty' => 'Nou rzultat',
 
 # Auto-summaries
-'autosumm-replace' => 'Li contnou a stî replaecé pa « $1 »',
+'autosumm-blank' => 'Pådje vudeye',
+'autosumm-replace' => 'Li contnou a stî replaecî pa « $1 »',
 'autoredircomment' => 'Redjiblaedje viè [[$1]]',
-'autosumm-new' => 'Novele pådje: $1',
+'autosumm-new' => 'Pådje ahivêye avou «$1»',
 
 # Size units
 'size-bytes' => '$1 o',
@@ -1593,11 +2176,31 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'size-megabytes' => '$1 Mo',
 'size-gigabytes' => '$1 Go',
 
+# Live preview
+'livepreview-loading' => 'Tcherdjant...',
+
 # Watchlist editor
 'watchlistedit-raw-titles' => 'Tites:',
 
 # Special:Version
 'version' => 'Modêye des programes',
+'version-extensions' => "Rawetes d' astalêyes",
+'version-specialpages' => 'Pådjes sipeciåles',
+'version-variables' => 'Variåves',
+'version-antispam' => 'Siconte do spam',
+'version-skins' => 'Peas',
+'version-other' => 'Ôtes',
+'version-license' => 'Licince',
+'version-software' => 'Programes astalés',
+'version-software-product' => 'Prodût',
+'version-software-version' => 'Modêye',
+
+# Special:FilePath
+'filepath-page' => 'Fitchî:',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Cweraedje après les dobes fitchîs',
+'fileduplicatesearch-submit' => 'Cweri',
 
 # Special:SpecialPages
 'specialpages' => 'Pådjes sipeciåles',
@@ -1605,9 +2208,32 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'specialpages-group-other' => 'Ôtès pådjes especiåles',
 'specialpages-group-login' => "S' elodjî / si rashire",
 'specialpages-group-changes' => 'Dierins candjmints et djournås',
+'specialpages-group-media' => 'Rapoirts et eberwetaedjes multimedia',
 'specialpages-group-users' => 'Uzeus et abondroets',
 'specialpages-group-highuse' => 'Eployaedje timpesse des pådjes',
+'specialpages-group-pages' => 'Djivêyes di pådjes',
+'specialpages-group-pagetools' => 'Usteyes po les pådjes',
+'specialpages-group-wiki' => 'Usteyes et dnêyes do wiki',
 'specialpages-group-redirects' => 'Ridjiblaedjes di pådjes sipeciåles',
+'specialpages-group-spam' => 'Usteyes siconte do spam',
+
+# Special:BlankPage
+'blankpage' => 'Vude pådje',
+
+# Special:Tags
+'tag-filter' => 'Passete po ls [[Special:Tags|etiketes]]:',
+'tag-filter-submit' => 'Passete',
+'tags-edit' => 'candjî',
+'tags-hitcount' => '$1 candjmint{{PLURAL:$1||s}}',
+
+# Special:ComparePages
+'comparepages' => 'Comparer des pådjes',
+'compare-selector' => 'Comparer des modêyes di pådjes',
+'compare-page1' => 'Pådje 1',
+'compare-page2' => 'Pådje 2',
+'compare-rev1' => 'Modêye 1',
+'compare-rev2' => 'Modêye 2',
+'compare-submit' => 'Comparer',
 
 # Feedback
 'feedback-subject' => 'Sudjet',
@@ -1647,7 +2273,20 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 'api-error-unclassified' => 'Aroke nén cnoxhowe',
 'api-error-unknown-code' => 'Aroke nén cnoxhowe : « $1 »',
 'api-error-unknown-error' => "Aroke divintrinne : gn a ene sacwè ki n' a nén stî tins d' l' eberwetaedje",
+'api-error-unknown-warning' => 'Adviertixhmint nén cnoxhou: «$1».',
+'api-error-unknownerror' => 'Aroke nén cnoxhowe: «$1».',
 'api-error-uploaddisabled' => "L' eberwetaedje ni va nén so ç' wiki cial",
 'api-error-verification-error' => "Ci fitchî la est cron, oudon-bén si cawete n' est nén boune",
 
+# Durations
+'duration-seconds' => '$1 segonde{{PLURAL:$1||s}}',
+'duration-minutes' => '$1 munute{{PLURAL:$1||s}}',
+'duration-hours' => '$1 eure{{PLURAL:$1||s}}',
+'duration-days' => '$1 djoû{{PLURAL:$1||s}}',
+'duration-weeks' => '$1 samwinne{{PLURAL:$1||s}}',
+'duration-years' => '$1 anêye{{PLURAL:$1||s}}',
+'duration-decades' => "$1 dijhinne{{PLURAL:$1||s}} d' anêyes",
+'duration-centuries' => '$1 sieke{{PLURAL:$1||s}}',
+'duration-millennia' => '$1 meynaire{{PLURAL:$1||s}}',
+
 );
index acd1dcb..8c6f606 100644 (file)
@@ -879,7 +879,7 @@ Mga detalye: $1',
 'nolicense' => 'Waray napili',
 
 # Special:ListFiles
-'imgfile' => 'fayl',
+'imgfile' => 'paypay',
 'listfiles' => 'Listahan han fayl',
 'listfiles_date' => 'Pitsa',
 'listfiles_name' => 'Ngaran',
@@ -888,8 +888,8 @@ Mga detalye: $1',
 'listfiles_count' => 'Mga bersyon',
 
 # File description page
-'file-anchor-link' => 'Fayl',
-'filehist' => 'Kaagi han fayl',
+'file-anchor-link' => 'Paypay',
+'filehist' => 'Kaagi han paypay',
 'filehist-help' => 'Pidlita an adlaw/oras para makit-an an fayl nga naggawas hito nga oras.',
 'filehist-deleteall' => 'Paraa ngatanan',
 'filehist-deleteone' => 'paraa',
@@ -944,7 +944,7 @@ An paglaladawan han iya [$2 fayl han paglaladawan nga pakli] didto in ginpapakit
 'statistics-articles' => 'Unod nga mga pakli',
 'statistics-pages' => 'Mga pakli',
 'statistics-pages-desc' => 'Ngatanan nga mga pakli ha sulod hini nga wiki, lakip an hiruhimangraw nga mga pakli, mga redirect, ngan iba pa',
-'statistics-files' => 'Ginkarga nga mga file',
+'statistics-files' => 'Ginkarga nga mga paypay',
 'statistics-edits' => 'Mga pagliwat hit pakli tikang gintukod hini nga {{SITENAME}}',
 'statistics-edits-average' => 'Average nga mga pagliwat kada pakli',
 'statistics-views-total' => 'Ngatanan nga mga panginano',
@@ -1288,7 +1288,7 @@ Makikit-an nimo an ginkuhaaan',
 'tooltip-feed-atom' => 'Atom nga pangarga para hini nga pakli',
 'tooltip-t-contributions' => 'Kitaa an talaan hin mga amot hini nga nágámit',
 'tooltip-t-emailuser' => 'Padad-i hin e-mail ini nga nágámit',
-'tooltip-t-upload' => 'Pagkarga hin mga fayl',
+'tooltip-t-upload' => 'Pagkarga hin mga paypay',
 'tooltip-t-specialpages' => 'Talaan hin mga pinaurog nga pakli',
 'tooltip-t-print' => 'Maipapatik nga bersyon hini nga pakli',
 'tooltip-t-permalink' => 'Sumpay nga unob ha hini nga pagliwat han pakli',
index 5c84de2..e53e580 100644 (file)
@@ -311,6 +311,7 @@ $messages = array(
 'index-category' => 'אינדעקסירטע בלעטער',
 'noindex-category' => 'אומאינדעקסירטע בלעטער',
 'broken-file-category' => 'בלעטער מיט צעבראכענע טעקע לינקען',
+'categoryviewer-pagedlinks' => '($1) ($2)',
 
 'about' => 'וועגן',
 'article' => 'אינהאלט בלאט',
@@ -1444,6 +1445,7 @@ $1",
 'right-userrights' => 'רעדאַקטירן אלע באַניצער רעכטן',
 'right-userrights-interwiki' => 'רעדאַקטירן באַניצער רעכטן פֿון באַניצער אויף אנדערע וויקיס',
 'right-siteadmin' => 'פארשליס און שליס-אויף די דאטעבאזע',
+'right-override-export-depth' => 'עקספארטירן בלעטער כולל געלינקטע בלעטער ביז א טיף פון 5',
 'right-sendemail' => 'שיקן ע-פאסט צו אנדערע באניצער',
 'right-passwordreset' => 'באַקוקן פאַסווארט צוריקשטעלן ע־בריוו',
 
@@ -1460,13 +1462,14 @@ $1",
 'action-createpage' => 'שאַפֿן בלעטער',
 'action-createtalk' => 'שאַפֿן שמועס בלעטער',
 'action-createaccount' => 'שאַפֿן די באַניצער קאנטע',
-'action-minoredit' => 'באַצייכנען די רעדאַקטירונג ווי מינערדיק',
+'action-minoredit' => '×\91×\90ַצ×\99×\99×\9b×¢× ×¢×\9f ×\93×\99 ×¨×¢×\93×\90ַק×\98×\99ר×\95× ×\92 ×\95×\95×\99 ×\9e×\99נער×\93×\99ק',
 'action-move' => 'באַוועגן דעם בלאַט',
 'action-move-subpages' => 'באַוועגן דעם בלאַט מיט זײַנע אונטערבלעטער',
 'action-move-rootuserpages' => 'באַוועגן באַניצער הויפטבלעטער',
 'action-movefile' => 'באַוועגן די טעקע',
 'action-upload' => 'אַרויפֿלאָדן די טעקע',
 'action-reupload' => 'איבערשרײַבן די עקזיסטירנדע טעקע',
+'action-reupload-shared' => 'אריבערשרייבן די טעקע אין א געמיינזאמער רעפאזיטאריע',
 'action-upload_by_url' => 'ארויפֿלאָדן די טעקע פֿון א URL',
 'action-writeapi' => 'ניצן דעם שרײַבן API',
 'action-delete' => 'אויסמעקן דעם בלאַט',
@@ -1478,6 +1481,7 @@ $1",
 'action-suppressionlog' => 'באקוקן דעם פריוואטן לאג',
 'action-block' => 'בלאקירן דעם באַניצער פֿון רעדאַקטירן',
 'action-protect' => 'ענדערן שיצונג ניוואען פֿאַר דעם בלאַט',
+'action-rollback' => 'גיך צוריקדרייען די רעדאַקטירונגען פונעם לעצטן באַניצער וואס האט רעדאַקטירט א געוויסן בלאַט',
 'action-import' => 'אימפארטירן דעם בלאַט פֿון אַן אַנדער וויקי',
 'action-importupload' => 'אימפארטירן דעם בלאַט דורך ארויפֿלאָדן אַ טעקע',
 'action-patrol' => "אנצייכענען אנדערס' רעדאקטירונגן אלס נאכגעקוקט",
@@ -1543,6 +1547,7 @@ $1",
 'upload-tryagain' => 'פֿאָרלייגן מאדיפֿיצירטע טעקע באַשרײַבונג',
 'uploadnologin' => 'נישט אַרײַנלאגירט',
 'uploadnologintext' => 'איר מוזט זײַן [[Special:UserLogin| אַרײַנלאָָגירט]] כדי ארויפֿצולאָדן טעקעס',
+'upload_directory_missing' => 'די ארויפלאד דירעקטאריע ($1) פעלט און דער וועבסערווירער קען זי נישט שאפן.',
 'upload_directory_read_only' => 'דער וועבסארווער קען נישט שרייבן צום ארויפלאדן ארכיוו "$1".',
 'uploaderror' => 'אַרויפֿלאָדן פֿעלער',
 'upload-recreate-warning' => "'''ווארענונג: א טעקע מיט דעם נאמען איז געווארן אויסגעמעקט אדער באוועגט.'''
@@ -1578,6 +1583,8 @@ $1",
 'badfilename' => 'טעקע נאמען איז געטוישט צו "$1".',
 'filetype-mime-mismatch' => 'טעקע סופֿיקס ".$1" שטימט נישט מיטן MIME טיפ פון דער טעקע($2).',
 'filetype-badmime' => 'טעקעס מיטן  MIME טיפ "$1" טאר מען נישט ארויפלאדן.',
+'filetype-unwanted-type' => "'''\".\$1\"''' איז אן אומרעקאמענדירטער טעקע־טיפ. {{PLURAL:\$3|רעקאמענדירטער טעקע־טיפ איז|רעקאמענדירטע טעקע־טיפן זענען}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|איז נישט קיין דערלויבטער טעקע־טיפ |זענען נישט קיין דערלויבטע טעקע־טיפן}}. {{PLURAL:$3|דערלויבטער טעקע־טיפ איז|דערלויבטע טעקע־טיפן זענען}} $2.',
 'filetype-missing' => 'די טעקע האט נישט קיין פארברייטערונג (למשל ".jpg").',
 'empty-file' => 'די טעקע וואָס איר האט אײַנגעגעבן איז ליידיג.',
 'file-too-large' => 'די טעקע וואָס איר האט אײַנגעגעבן איז צו גרויס.',
@@ -1613,6 +1620,7 @@ $1",
 'uploadedimage' => 'אַרױפֿגעלאָדן "[[$1]]"',
 'overwroteimage' => 'אַרויפֿגעלאָדן א נײַע ווערסיע פון "[[$1]]"',
 'uploaddisabled' => 'אַרויפֿלאָדן טעקעס מבוטל',
+'copyuploaddisabled' => 'ארויפלאדן דורך URL אומאקטיווירט',
 'uploadfromurl-queued' => 'אייער ארויפלאד איז אין דער רייע.',
 'uploaddisabledtext' => 'אַרויפֿלאָדן טעקעס נישט דערמעגלעכט אצינד.',
 'uploadscripted' => 'די טעקע האט א סקריפט אדער HTML קאד וואס קען ווערן פֿאלש אויסגעטייטשט דורך א בלעטערער',
@@ -1661,6 +1669,9 @@ $1",
 # Lock manager
 'lockmanager-notlocked' => 'מ\'קען נישט אויפֿשליסן "$1"; ער איז נישט פֿארשלאסן.',
 
+# ZipDirectoryReader
+'zip-wrong-format' => 'ספעציפירטע טעקע איז נישט קיין ZIP טעקע.',
+
 # Special:UploadStash
 'uploadstash' => 'אַרויפֿלאָד רעזערוו',
 'uploadstash-refresh' => 'דערפֿרישן די רשימה פון טעקעס',
@@ -2039,6 +2050,7 @@ $1",
 # User Messenger
 'usermessage-summary' => 'איבערלאזן סיסטעם אָנזאָג',
 'usermessage-editor' => 'סיסטעם שליח',
+'usermessage-template' => 'MediaWiki:באניצער־מעלדונג',
 
 # Watchlist
 'watchlist' => 'מיין אויפפַּאסונג ליסטע',
@@ -2079,12 +2091,12 @@ $1",
 'watcherrortext' => 'א גרײַז האט פאסירט ביים ענדערן אײַערע אויפֿפאסן ליסטע אײַנשטעלונגען פֿאר "$1".',
 
 'enotif_mailer' => 'נאטיפאקאציע שיקער {{SITENAME}}',
-'enotif_reset' => 'באַצייכן אלע בלעטער שוין געזען',
+'enotif_reset' => '×\91×\90ַצ×\99×\99×\9b×¢× ×¢×\9f ×\90×\9c×¢ ×\91×\9c×¢×\98ער ×©×\95×\99×\9f ×\92×¢×\96×¢×\9f',
 'enotif_newpagetext' => 'דאס איז א נייער בלאט.',
-'enotif_impersonal_salutation' => 'באנוצער {{SITENAME}}',
+'enotif_impersonal_salutation' => '{{SITENAME}} באַניצער',
 'changed' => 'געטוישט',
-'created' => '×\91×\90ש×\90פן',
-'enotif_subject' => 'דער בלאט $PAGETITLE אין {{grammar:תחילית|{{SITENAME}}}} $CHANGEDORCREATED דורך $PAGEEDITOR',
+'created' => '×\92עש×\90ַפֿן',
+'enotif_subject' => 'דער בלאט $PAGETITLE אין {{SITENAME}} $CHANGEDORCREATED דורך $PAGEEDITOR',
 'enotif_lastvisited' => 'זעט $1 פֿאַר אלע ענדערונגען זינט אײַער לעצטן וויזיט.',
 'enotif_lastdiff' => 'זעט $1 פאר דער ענדערונג.',
 'enotif_anon_editor' => 'אַנאנימער באַניצער $1',
@@ -2175,6 +2187,7 @@ $UNWATCHURL
 'unprotectedarticle' => 'אראפגענומען שוץ פון "[[$1]] "',
 'movedarticleprotection' => 'באוועגט די שיץ באשטימונגען פֿון "[[$2]]" אויף "[[$1]]"',
 'protect-title' => 'ענדערן שיץ ניווא פֿאַר "$1"',
+'protect-title-notallowed' => 'באקוקן שיץ־ניווא פון "$1"',
 'prot_1movedto2' => '[[$1]] אריבערגעפירט צו [[$2]]',
 'protect-badnamespace-title' => 'אומשיצבארער נאמענטייל',
 'protect-badnamespace-text' => 'בלעטער אין דעם נאמענטייל קען מען נישט שיצן.',
@@ -2275,6 +2288,7 @@ $UNWATCHURL
 $1',
 'undelete-show-file-confirm' => 'צי זענט איר זעכער איר ווילט באַקוקן די אויסגעמעקטע רעוויזיע פון דער טעקע "<nowiki>$1</nowiki>" פון $2 בשעה $3?',
 'undelete-show-file-submit' => 'יא',
+'undelete-revisionrow' => '$1 $2 $3 $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'נאמענטייל:',
@@ -2457,6 +2471,7 @@ $1',
 'proxyblocker-disabled' => 'די  פֿונקציע איז אומאַקטיווירט.',
 'proxyblockreason' => 'אייער איי.פי. אדרעס איז געווארן געבלאקט צוליב דעם ווייל דאס איז א אפענער פראקסי. ביטע פארבינדט זיך מיט אייער אינטערנעט סערוויס פראוויידער אדער טעקס סאפארט צו אינפארמירן זיי איבער דעם ערענסטן זיכערהייט פראבלעם.',
 'proxyblocksuccess' => 'געטאן.',
+'cant-block-while-blocked' => 'איר קען נישט בלאקירן קיין אנדערע באניצער ווען איר זענט אליין בלאקירט.',
 'ipbnounblockself' => 'איר זענט נישט ערלויבט זיך אליין אויסבלאקירן',
 
 # Developer tools
@@ -2729,8 +2744,8 @@ $1',
 'tooltip-ca-nstab-template' => 'זעט דעם מוסטער',
 'tooltip-ca-nstab-help' => 'זעט דעם הילף בלאַט',
 'tooltip-ca-nstab-category' => 'באקוקט דעם קאטעגאריע בלאט',
-'tooltip-minoredit' => 'באצייכן דאס אלס מינערדיגע ענדערונג',
-'tooltip-save' => '×\94×\99×\98 ×\90×\95×\99×£ אייערע ענדערונגען',
+'tooltip-minoredit' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\93×\90ס ×\90×\9cס ×\9e×\99נער×\93×\99×\92×¢ ×¢× ×\93ער×\95× ×\92',
+'tooltip-save' => '×\90×\95×\99פֿ×\94×\99×\98×\9f אייערע ענדערונגען',
 'tooltip-preview' => 'פֿארויסדיגע ווײַזונג, זײַט אזוי גוט באניצט די געלעגנהייט פֿארן אויפֿהיטן!',
 'tooltip-diff' => 'ווײַזן אייערע ענדערונגען צום טעקסט',
 'tooltip-compareselectedversions' => 'פארגלײַכם די צוויי ווערסיעס פון דעם בלאט',
@@ -2746,8 +2761,15 @@ $1',
 
 # Stylesheets
 'common.css' => '/* CSS געשריבן דא וועט אפילירן און באיינפלוסן אלע סקינס */',
-'monobook.css' => '/* סטייל דא געלייגט וועט באיינפלוסן די בעקגראונד Monobook בלויז */',
-'vector.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן Vector סקין */',
+'standard.css' => '/* CSS געשטעלט דא ווירקט אויפן סטאנדארט סקין */',
+'nostalgia.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן נאסטאלגיע סקין */',
+'cologneblue.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן קעלנישן־בלוי סקין */',
+'monobook.css' => '/* סטייל דא געלייגט וועט באאיינפלוסן דעם Monobook סקין */',
+'myskin.css' => '/* CSS געשטעלט דא ווירקט אויפן MySkin סקין */',
+'chick.css' => '/* CSS געשטעלט דא ווירקט אויפן טשיק סקין */',
+'simple.css' => '/* CSS געשטעלט דא ווירקט אויפן איינפאך סקין */',
+'modern.css' => '/* CSS געשטעלט דא ווירקט אויפן מאדערנעם סקין */',
+'vector.css' => '/* CSS געשטעלט דא ווירקט נאר אויפן וועקטאר סקין */',
 
 # Scripts
 'common.js' => '/* אלע סקריפטן פון JavaScript דא געשריבן וועט לויפן פאר אלע באנוצער ווען זיי וועלן לאדירן דעם בלאט */',
@@ -2785,11 +2807,22 @@ $1',
 'pageinfo-views' => 'צאַל קוקן',
 'pageinfo-viewsperedit' => 'צאל קוקן צו א רעדאַקטירונג',
 
+# Skin names
+'skinname-standard' => 'קלאסיש',
+'skinname-nostalgia' => 'נאסטאלגיע',
+'skinname-cologneblue' => 'קעלניש בלוי',
+'skinname-monobook' => 'מאנאבוק',
+'skinname-myskin' => 'מיין סקין',
+'skinname-chick' => 'טשיק',
+'skinname-simple' => 'איינפֿאַך',
+'skinname-modern' => 'מאדערן',
+'skinname-vector' => 'וועקטאר',
+
 # Patrolling
-'markaspatrolleddiff' => 'באצייכנען אלס פאטראלירט',
-'markaspatrolledtext' => 'באצייכנען בלאט אלס פאטראלירט',
+'markaspatrolleddiff' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\90×\9cס ×¤×\90×\98ר×\90×\9c×\99ר×\98',
+'markaspatrolledtext' => '×\91×\90צ×\99×\99×\9b×¢× ×¢×\9f ×\91×\9c×\90×\98 ×\90×\9cס ×¤×\90×\98ר×\90×\9c×\99ר×\98',
 'markedaspatrolled' => 'באצייכנט אלס פאטראלירט',
-'markedaspatrolledtext' => '×\93×\99 ×\90×\95×\99ס×\92עק×\9c×\99×\91×¢× ×¢ ×¢× ×\93ער×\95× ×\92 ×¤Ö¿×\95×\9f [[:$1]] ×\90×\99×\96 ×\92עצ×\99×\99×\9b× ×\98 ×\92×¢×\95×\95×\90ר×\9f ×\90לס פאַטארלירט.',
+'markedaspatrolledtext' => '×\93×\99 ×\90×\95×\99ס×\92עק×\9c×\99×\91×¢× ×¢ ×¢× ×\93ער×\95× ×\92 ×¤Ö¿×\95×\9f [[:$1]] ×\90×\99×\96 ×\91×\90ַצ×\99×\99×\9b× ×\98 ×\92×¢×\95×\95×\90ר×\9f ×\90Ö·לס פאַטארלירט.',
 'rcpatroldisabled' => 'פאַטראלירן ענדערונגען איז  מבוטל געווארן',
 'rcpatroldisabledtext' => 'די לעצטע ענדערונגען פאַטראלירן אייגנקייט איז אצינד בטל.',
 'markedaspatrollederror' => 'נישט מעגלעך צו צייכענען אלס פאַטראלירט',
@@ -2818,6 +2851,7 @@ $1',
 
 # Media information
 'thumbsize' => 'קליינבילד גרייס:',
+'widthheight' => '$1 × $2',
 'widthheightpage' => '$1 × $2, {{PLURAL:$3|איין בלאט|$3 בלעטער}}',
 'file-info' => 'טעקע גרייס: $1, MIME טיפ: $2',
 'file-info-size' => '$1 × $2 פיקסעל, טעקע גרייס: $3, טיפ MIME: $4',
@@ -2847,6 +2881,9 @@ $1',
 'sp-newimages-showfrom' => 'באַװײַזן נײַע טעקעס פון $2, $1',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'video-dims' => '$1, $2 × $3',
+'seconds-abbrev' => '$1ס',
+'minutes-abbrev' => '$1מ',
 'seconds' => '{{PLURAL:$1|$1 סעקונדע|$1 סעקונדעס}}',
 'minutes' => '{{PLURAL:$1|$1 מינוט|$1 מינוט}}',
 'hours' => '{{PLURAL:$1|$1 שעה|$1 שעה}}',
@@ -2932,24 +2969,34 @@ $1',
 'exif-focallength-format' => '$1 מ"מ',
 'exif-subjectarea' => 'סוביעקט געגנט',
 'exif-flashenergy' => 'פלעש ענערגיע',
-'exif-focalplanexresolution' => 'פאקאל פלעין עקס רעזאלוציע',
-'exif-focalplaneresolutionunit' => 'פאקאל פלעין רעזאלוציע מאס',
-'exif-exposureindex' => 'עקספאוזשער אינדעקס',
+'exif-focalplanexresolution' => 'פאקוס־שטח האריזאנטאל',
+'exif-focalplaneyresolution' => 'פאקוס־שטח ווערטיקאל',
+'exif-focalplaneresolutionunit' => 'פאקוס־שטח רעזאלוציע איינהייט',
+'exif-subjectlocation' => 'סוביעקט ארט',
+'exif-exposureindex' => 'באַלײַכטן אינדעקס',
+'exif-sensingmethod' => 'דערשפירן מעטאד',
 'exif-filesource' => 'מקור פֿון דער טעקע',
 'exif-scenetype' => 'סצענע טיפ',
 'exif-customrendered' => 'קאסטעם בילד פראצעסירונג',
 'exif-exposuremode' => 'באַלײַכטן מצב',
-'exif-digitalzoomratio' => 'דיזשיטאלער זום ראשיאו',
+'exif-whitebalance' => 'ווײַס באַלאַנס',
+'exif-digitalzoomratio' => 'דיגיטאלער זום פארהעלטעניש',
 'exif-focallengthin35mmfilm' => 'פאקאל לענג אין 35 מ"מ פילם',
+'exif-scenecapturetype' => 'סצענע אויפנעם טיפ',
 'exif-gaincontrol' => 'סצענע קאנטראל',
 'exif-contrast' => 'קאנטראסט',
 'exif-devicesettingdescription' => 'זאך סעטינגס אראפמאלונג',
-'exif-gpslatitude' => 'לאטיטוד',
+'exif-gpslatituderef' => 'צפון אדער דרום גארטל־ליניע',
+'exif-gpslatitude' => 'גארטל־ליניע',
 'exif-gpslongituderef' => 'מזרח אדער מערב לענג',
 'exif-gpslongitude' => 'געאגראַפֿישע לענג',
 'exif-gpsaltituderef' => 'אלטיטוט רעפערענץ',
-'exif-gpsaltitude' => 'אלטיטוט',
+'exif-gpsaltitude' => 'הייך',
+'exif-gpstimestamp' => 'GPS צייט (אטאם־זייגער)',
+'exif-gpssatellites' => 'סאטעליטן געניצט פאר מעסטן',
 'exif-gpsdop' => 'מאס פוקנטליכקייט',
+'exif-gpsspeedref' => 'גיך איינהייט',
+'exif-gpsspeed' => 'גיך פון GPS־אויפֿנעמער',
 'exif-gpsimgdirectionref' => 'רעפערענץ פאר ריכטונג פון בילד',
 'exif-gpsimgdirection' => 'ריכטונג פון בילד',
 'exif-gpsdestlatituderef' => 'רעפֿערענץ פֿאַר ברייט־ליניע פון ציל',
@@ -2960,14 +3007,21 @@ $1',
 'exif-gpsdestbearing' => 'ריכטונג פֿון ציל',
 'exif-gpsdestdistanceref' => 'רעפֿערענץ פֿאַר ווײַטקייט פֿון ציל',
 'exif-gpsdestdistance' => 'ווײַטקייט צום ציל',
+'exif-gpsprocessingmethod' => 'נאמען פון GPS פראצעסירן מעטאד',
 'exif-gpsareainformation' => 'נאמען פון GPS געגענט',
-'exif-gpsdatestamp' => 'דאטום GPS',
-'exif-gpsdifferential' => 'דיפראנציאלע קאקרעקציע GPS',
+'exif-gpsdatestamp' => 'GPS דאטע',
+'exif-gpsdifferential' => 'GPS דיפראנציאלע קאקרעקציע',
+'exif-jpegfilecomment' => 'JPEG טעקע הערה',
+'exif-keywords' => 'שליסלווערטער',
+'exif-worldregioncreated' => "וועלטראיאן וואו מ'האט גענומען דאס בילד",
+'exif-countrycreated' => "לאנד וואו מ'האט געמאכט דאס בילד",
 'exif-provinceorstatecreated' => "פראווינץ אדער שטאַט וואו מ'האט גענומען דאס בילד",
-'exif-citycreated' => "שטאַט וואו מ'האט געמאכט דאס בילד",
+'exif-citycreated' => "שטאָט וואו מ'האט געמאכט דאס בילד",
+'exif-worldregiondest' => 'וועלטראיאן געוויזן',
 'exif-countrydest' => 'לאנד געוויזן',
 'exif-countrycodedest' => 'קאד פאר לאנד געוויזן',
-'exif-citydest' => 'געוויזענע שטאט',
+'exif-provinceorstatedest' => 'פראווינץ אדער שטאַט געוויזן',
+'exif-citydest' => 'געוויזענע שטָאט',
 'exif-objectname' => 'קורצער טיטל',
 'exif-source' => 'מקור',
 'exif-editstatus' => 'רעדאקציאנעלער סטאטוס פון בילד',
@@ -2996,6 +3050,7 @@ $1',
 'exif-licenseurl' => 'URL פֿאר קאפירעכט ליצענץ',
 'exif-morepermissionsurl' => 'אלטערנאטיווע ליצענצירן אינפארמאציע',
 'exif-pngfilecomment' => 'PNG טעקע הערה',
+'exif-contentwarning' => 'אינהאלט ווארענונג',
 'exif-giffilecomment' => 'GIF טעקע הערה',
 'exif-intellectualgenre' => 'ארט  איינהייט',
 'exif-subjectnewscode' => 'טעמע קאד',
@@ -3302,8 +3357,27 @@ $5
 'iranian-calendar-m11' => 'באַהמאַן',
 'iranian-calendar-m12' => 'עספֿאַנד',
 
+# Hijri month names
+'hijri-calendar-m9' => 'ראמאדאן',
+'hijri-calendar-m10' => 'שאוואל',
+'hijri-calendar-m11' => 'דהו אל־קאדא',
+'hijri-calendar-m12' => 'דהו אל־הידזשא',
+
 # Hebrew month names
+'hebrew-calendar-m1' => 'תשרי',
+'hebrew-calendar-m2' => 'חשוון',
+'hebrew-calendar-m3' => 'כסלו',
+'hebrew-calendar-m4' => 'טבת',
+'hebrew-calendar-m5' => 'שבט',
+'hebrew-calendar-m6' => 'אדר',
+'hebrew-calendar-m6a' => "אדר א'",
+'hebrew-calendar-m6b' => "אדר ב'",
+'hebrew-calendar-m7' => 'ניסן',
+'hebrew-calendar-m8' => 'אייר',
 'hebrew-calendar-m9' => 'סיון',
+'hebrew-calendar-m10' => 'תמוז',
+'hebrew-calendar-m11' => 'אב',
+'hebrew-calendar-m12' => 'אלול',
 'hebrew-calendar-m1-gen' => 'תשרי',
 'hebrew-calendar-m2-gen' => 'חשוון',
 'hebrew-calendar-m3-gen' => 'כסלו',
@@ -3326,6 +3400,7 @@ $5
 'version' => 'ווערסיע',
 'version-specialpages' => 'ספעציעלע בלעטער',
 'version-variables' => 'וואַריאַבלען',
+'version-skins' => 'באניצער־אייבערפלאכן',
 'version-other' => 'אנדער',
 'version-version' => '(ווערסיע $1)',
 'version-license' => 'ליצענץ',
@@ -3521,5 +3596,6 @@ $5
 'duration-years' => '$1 {{PLURAL:$1|יאר|יאר}}',
 'duration-decades' => '$1 {{PLURAL:$1|צענדליקער|צענדליקערס}}',
 'duration-centuries' => '$1 {{PLURAL:$1|יארהונדערט|יארהונדערטער}}',
+'duration-millennia' => '$1 {{PLURAL:$1|יארטויזנט|יארטויזנטער}}',
 
 );
index 71d9673..9fe1f99 100644 (file)
@@ -271,7 +271,7 @@ $messages = array(
 'redirectpagesub' => 'Ojúewé àtúnjúwe',
 'lastmodifiedat' => 'Àtunṣe ojúewé yi gbẹ̀yìn wáyé ni ago $2, ọjọ́ọdún $1.',
 'viewcount' => 'A ti wo ojúewé yi ni {{PLURAL:$1|ẹ̀kan péré|iye ìgbà $1}}.',
-'protectedpage' => 'Ojúewé ajẹ́dídáàbòbò',
+'protectedpage' => 'Ojúewé oníàbò',
 'jumpto' => 'Lọ sí:',
 'jumptonavigation' => 'atọ́ka',
 'jumptosearch' => 'àwárí',
@@ -438,7 +438,7 @@ Fún ìyédèpadà, ẹ jọ̀wọ́ ẹ lo [//translatewiki.net/wiki/Main_Page?
 'customcssprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé CSS yìí nítorípé ó ní àwọn ìtòjọ oníṣe ẹlòmíràn.',
 'customjsprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé JavaScript yìí nítorípé ó ní àwọn ìtòjọ oníṣe ẹlòmíràn.',
 'ns-specialprotected' => 'Àtúnṣe kò ṣe é ṣe sí àwọn ojúewé pàtàkì.',
-'titleprotected' => "[[User:$1|$1]] ti dínà sí dídá Ã ká»\8dlé yìí. Ã\80làyé rẹÌ\80 ni pí ''$2''.",
+'titleprotected' => "[[User:$1|$1]] ti dínà sí dídá Ã ká»\8dlé yìí. Ã\8cdí rẹÌ\80 ni pé ''$2''.",
 
 # Virus scanner
 'virus-badscanner' => "Ìtorapọ̀ búburú: awáìpasẹ̀ èràn aláìmọ̀n : ''$1''",
@@ -737,6 +737,7 @@ Tó bá jẹ́ pé oníṣe aláìlórúkọ ni yín, tí ẹ sì ri pé wọ́n
 'note' => "'''Àkíyèsí:'''",
 'previewnote' => "'''Ẹ rántí pé àyẹ̀wò lásán nì yí.'''
 Àwọn àtúnṣe yín kò tíì jẹ́ kìkópamọ́!",
+'continue-editing' => 'Ìtẹ̀síwájú àtúnṣe',
 'previewconflict' => 'Àkọ́wò yìí jẹ́ bí ìkọ̀rọ̀ inú àlà ìtúnṣe ìkọ̀rọ̀ òkè yíò ṣe hàn tí ẹ bá yàn láti ṣàmúpamọ́.',
 'session_fail_preview' => "'''Àforíjìn! A kò le gbésẹ̀ àtúnṣe yín nítorí ìpòfo data ìsinsìyí.
 Ẹ jọ̀wọ́ ẹ gbìyànjú lẹ́ẹ̀kan si.
@@ -752,6 +753,7 @@ Tí kò bá ṣiṣẹ́ síbẹ̀, ẹ gbìyànjú láti [[Special:UserLogout|j
 Èyí únsábà ṣẹlẹ̀ nígbàtí ẹ bá únlo ẹ̀rọ-ìwọ̀fà ẹlòmíràn aláìlórúkọ torí Internet tí kò dára.",
 'edit_form_incomplete' => "'''Àwọn apá kan fọ́ọ̀mù àtúnṣe kò dé ọ̀dọ̀ ẹ̀rọ-ìwọ̀fà; ẹ wo àtúnṣe yín pẹ́ o wà bí ẹ ṣe ṣé kí ẹ tó tún gbìyànjú lẹ́ẹ̀kan síi.'''",
 'editing' => 'Àtúnṣe sí $1',
+'creating' => 'Ìdá $1',
 'editingsection' => 'Àtúnṣe sí $1 (abala)',
 'editingcomment' => 'Àtúnṣe sí $1 (abala tuntun)',
 'editconflict' => 'Ìtakora àtúnṣe: $1',
@@ -1009,6 +1011,8 @@ Kò ṣe é bòmọ́lẹ̀.',
 
 # Diffs
 'history-title' => 'Ìtàn àtúnyẹ̀wò fún "$1"',
+'difference-title' => 'Ìyàtọ̀ láàrin àwọn àtúnyẹ̀wò "$1"',
+'difference-title-multipage' => 'Ìyàtọ̀ láàrin àwọn ojúewé "$1" àti "$2"',
 'difference-multipage' => '(Ìyàtọ̀ láàrin àwọn ojúewé)',
 'lineno' => 'Ìlà $1:',
 'compareselectedversions' => 'Ìfiwéra àwọn àtúnṣe ìṣàyàn',
@@ -1105,6 +1109,7 @@ Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 'prefs-beta' => 'Àwọn ìní Beta',
 'prefs-datetime' => 'Ọjọ́ọdún àti àkókò',
 'prefs-labs' => 'Àwọn ìní ibiàdánwò',
+'prefs-user-pages' => 'Àwọn ojúewé oníṣe',
 'prefs-personal' => 'Ọ̀rọ̀ nípa oníṣe',
 'prefs-rc' => 'Àwọn àtúnṣe tuntun',
 'prefs-watchlist' => 'Ìmójútó',
@@ -1267,7 +1272,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'right-movefile' => 'Yípò fáìlì',
 'right-suppressredirect' => 'Mọ́ dàá àwọn àtúnjúwe lati ojúewé orísun nígbà tí ojúewé bá únyípòdà',
 'right-upload' => 'Ìrùsókè àwọn faili',
-'right-reupload' => 'Kọléṣórí fáìlì tó wà yìí',
+'right-reupload' => 'Ìkọṣórí àwọn fáìlì',
 'right-reupload-own' => 'Ìkọsórí àwọn fáìlì tó wà tí wọn jẹ́ rírùsókè lọ́wọ́ araẹni',
 'right-reupload-shared' => 'Ìrékọjá àwọn fáìlì nínú ibi-àkójọ amóhùnmáwòrán àjọpín lábẹ́lé',
 'right-upload_by_url' => 'Ìrùsókè àwọn faili láti URL kan',
@@ -1333,7 +1338,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'action-move-subpages' => 'yípò ojúewé yìí àti àwọn ọmọ ojúewé rẹ̀',
 'action-move-rootuserpages' => 'yípòdà gbọ̀ngàn àwọn ojúewé oníṣe',
 'action-movefile' => 'yípò fáìlì yìí',
-'action-upload' => 'rùsókè fáìlì yìí',
+'action-upload' => 'ìrùsókè fáìlì yìí',
 'action-reupload' => 'kọléṣórí fáìlì tó wà yìí',
 'action-reupload-shared' => 'ṣe ìrékọjá fáìlì yìí nínú ibi-àkójọ àjọpín',
 'action-upload_by_url' => 'rùsókè fáìlí yìí láti URL',
@@ -2530,6 +2535,9 @@ kò le yípò ojúewé padà sí ara rẹ̀.',
 'import-logentry-interwiki' => 'mú $1 wá láti inú wiki míràn',
 'import-logentry-interwiki-detail' => '{{PLURAL:$1|Àtúnyẹ̀wò|Àwọn àtúnyẹ̀wò}} $1 láti $2',
 
+# JavaScriptTest
+'javascripttest' => 'Ìdánwò JavaScript',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Ojúewé oníṣe yín',
 'tooltip-pt-mytalk' => 'Ojúewé ọ̀rọ̀ yín',
@@ -2609,6 +2617,7 @@ kò le yípò ojúewé padà sí ara rẹ̀.',
 'spamprotectiontitle' => 'Ajọ̀ àbò spam',
 
 # Info page
+'pageinfo-title' => 'Àròyé fún "$1"',
 'pageinfo-header-edits' => 'Àwọn àtúnṣe',
 'pageinfo-header-watchlist' => 'Ìmójútó',
 'pageinfo-header-views' => 'Àwọn ìwò',
@@ -2639,6 +2648,7 @@ kò le yípò ojúewé padà sí ara rẹ̀.',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|ojúewé|àwọn ojúewé}}',
 'file-info' => 'ìtóbi faili: $1, irú MIME: $2',
 'file-info-size' => '$1 × $2 pixel, ìtóbi faili: $3, irú MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixel, ìtóbi faili: $3, irú MIME: $4, {{PLURAL:$5|ojúewé|ojúewé}} $5',
 'file-nohires' => 'Kò sí ìgbéhàn gíga jù báun lọ.',
 'svg-long-desc' => 'faili SVG, pẹ̀lú $1 × $2 pixels, ìtòbi faili: $3',
 'show-big-image' => 'Pẹ̀lú ìgbéhàn gíga',
@@ -2878,6 +2888,7 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'version-poweredby-credits' => "Agbára ìṣiṣẹ́ wiki yìí wá látọwọ́ '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'àwọn mìíràn',
 'version-software-version' => 'Àtẹ̀jáde',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FilePath
 'filepath' => 'Ipaṣẹ̀ fáìlì',
@@ -2980,4 +2991,12 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'api-error-unknown-code' => 'Àsìṣe aláìlójúùtú: "$1".',
 'api-error-unknownerror' => 'Àsìṣe aláìlójúùtú: "$1".',
 
+# Durations
+'duration-seconds' => '{{PLURAL:$1|ìṣẹ́júkejì|ìṣẹ́júkejì}} $1',
+'duration-minutes' => '{{PLURAL:$1|ìṣẹ́jú|ìṣẹ́jú}} $1',
+'duration-hours' => '{{PLURAL:$1|wákàtí|wákàtí}} $1',
+'duration-days' => '{{PLURAL:$1|ọjọ́|ọjọ́}} $1',
+'duration-weeks' => '{{PLURAL:$1|ọ̀sẹ̀|ọ̀sẹ̀}} $1',
+'duration-years' => '{{PLURAL:$1|ọdún|ọdún}} $1',
+
 );
index c794002..c647a61 100644 (file)
@@ -53,6 +53,7 @@
  * @author Wrightbus
  * @author Xiaomingyan
  * @author Yfdyh000
+ * @author 燃玉
  * @author 阿pp
  */
 
@@ -924,7 +925,7 @@ $2
 你所做的修改显示在下面的文字框中。
 你应当将你所做的修改加入现有的内容中。
 '''只有'''在上面文字框中的内容会在你点击“{{int:savearticle}}”后被保存。",
-'yourtext' => '的文字',
+'yourtext' => '的文字',
 'storedversion' => '已保存的版本',
 'nonunicodebrowser' => "'''警告:您的浏览器不兼容Unicode编码。'''这里有一个工作区将使您能安全地编辑页面:非ASCII字符将以十六进制编码方式出现在编辑框中。",
 'editingold' => "'''警告:你正在编辑的是本页的旧版本。'''
@@ -1155,8 +1156,8 @@ $1",
 'mergelogpagetext' => '以下是一个最近由一个页面的修订历史合并到另一个页面的列表。',
 
 # Diffs
-'history-title' => '$1:版本历史',
-'difference-title' => '$1:修订版本之间的差异',
+'history-title' => '“$1”的版本历史',
+'difference-title' => '“$1”的版本间的差异',
 'difference-title-multipage' => '页面“$1”与“$2”之间的差异',
 'difference-multipage' => '(页面间的差异)',
 'lineno' => '第$1行:',
@@ -1781,8 +1782,7 @@ $1',
 'upload_source_file' => '(您计算机上的一个文件)',
 
 # Special:ListFiles
-'listfiles-summary' => '该特殊页面显示所有上传的文件。
-当用户过滤图片时,只有当该文件的最新版本由该用户上传时才会显示。',
+'listfiles-summary' => '本特殊页面显示所有上传的文件。当按用户过滤时,只显示输入的用户最后上传的文件版本。',
 'listfiles_search_for' => '按媒体名称搜索:',
 'imgfile' => '文件',
 'listfiles' => '文件列表',
@@ -1809,7 +1809,7 @@ $1',
 'filehist-user' => '用户',
 'filehist-dimensions' => '大小',
 'filehist-filesize' => '文件大小',
-'filehist-comment' => '注解',
+'filehist-comment' => '评论',
 'filehist-missing' => '文件遗失',
 'imagelinks' => '文件用途',
 'linkstoimage' => '以下的$1个页面链接到本文件:',
@@ -2019,6 +2019,7 @@ $1',
 您可以选择日志类型,用户名(区分大小写)或者相关页面(区分大小写)来缩小查询范围。',
 'logempty' => '在日志中不存在匹配项。',
 'log-title-wildcard' => '搜索以这个文字开始的标题',
+'showhideselectedlogentries' => '显示/隐藏所选日志项',
 
 # Special:AllPages
 'allpages' => '所有页面',
@@ -2386,8 +2387,8 @@ $1',
 'contribsub2' => '$1的贡献($2)',
 'nocontribs' => '没有找到符合特征的更改。',
 'uctop' => '(最后更改)',
-'month' => '自月份(及之前内容):',
-'year' => '自年份(及之前内容):',
+'month' => '截止月份:',
+'year' => '截止年份:',
 
 'sp-contributions-newbies' => '只显示新账户的贡献',
 'sp-contributions-newbies-sub' => '新手',
@@ -2861,6 +2862,11 @@ $1被封禁的理由是:“$2”',
 'vector.css' => '/* 此处的 CSS 将影响使用 Vector 皮肤的用户 */',
 'print.css' => '/* 此处的 CSS 将影响打印输出 */',
 'handheld.css' => '/* 此处的 CSS 将影响在 $wgHandheldStyle 设置手提装置面板 */',
+'noscript.css' => '/* 此处的 CSS 将影响没有启用 JavaScript 的用户 */',
+'group-autoconfirmed.css' => '/* 此处的 CSS 将只会影响自动确认用户 */',
+'group-bot.css' => '/* 此处的 CSS 将只会影响机器人 */',
+'group-sysop.css' => '/* 此处的 CSS 将只会影响管理员 */',
+'group-bureaucrat.css' => '/* 此处的 CSS 将只会影响行政员 */',
 
 # Scripts
 'common.js' => '/* 此处的JavaScript将加载于所有用户每一个页面。 */',
@@ -3006,11 +3012,14 @@ Variants for Chinese language
 'variantname-zh-cn' => '大陆简体',
 'variantname-zh-tw' => '台湾正体',
 'variantname-zh-hk' => '香港繁体',
+'variantname-zh-mo' => '澳门繁体',
 'variantname-zh-sg' => '新加坡简体',
+'variantname-zh-my' => '马来西亚简体',
 'variantname-zh' => '不转换',
 
 # Variants for Gan language
-'variantname-gan-hans' => '',
+'variantname-gan-hans' => '‪中文(简体)',
+'variantname-gan-hant' => '‪中文(繁体)',
 
 # Variants for Kazakh language
 'variantname-kk-cyrl' => '',
@@ -3226,7 +3235,7 @@ Variants for Chinese language
 'exif-copyrighted-true' => '版权',
 'exif-copyrighted-false' => '公共领域',
 
-'exif-unknowndate' => '未知日期',
+'exif-unknowndate' => '未知日期',
 
 'exif-orientation-1' => '标准',
 'exif-orientation-2' => '水平翻转',
@@ -3539,8 +3548,8 @@ $5
 'descending_abbrev' => '降',
 'table_pager_next' => '下一页',
 'table_pager_prev' => '上一页',
-'table_pager_first' => '第一页',
-'table_pager_last' => 'æ\9c\80å\90\8eä¸\80页',
+'table_pager_first' => '页',
+'table_pager_last' => 'æ\9c«页',
 'table_pager_limit' => '每页显示$1项',
 'table_pager_limit_label' => '每页项目数:',
 'table_pager_limit_submit' => '提交',
@@ -3585,7 +3594,7 @@ $5
 'watchlistedit-raw-removed' => '$1个标题被删除:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'æ\9f¥ç\9c\8bç\9b¸å\85³更改',
+'watchlisttools-view' => 'æ\9f¥ç\9c\8bç\9b\91è§\86更改',
 'watchlisttools-edit' => '查看并编辑监视列表',
 'watchlisttools-raw' => '编辑原始监视列表',
 
index b013296..8644ca7 100644 (file)
@@ -2003,6 +2003,7 @@ Template:消除歧義',
 'alllogstext' => '綜合顯示 {{SITENAME}} 的上傳、刪除、保護、查封以及站務日誌。',
 'logempty' => '在日誌中不存在匹配項。',
 'log-title-wildcard' => '搜尋以這個文字開始的標題',
+'showhideselectedlogentries' => '顯示/隱藏所選的日誌項目',
 
 # Special:AllPages
 'allpages' => '所有頁面',
@@ -2907,6 +2908,7 @@ $1被封禁的理由是“$2”',
 'spambot_username' => 'MediaWiki 廣告清除',
 'spam_reverting' => '恢復到不包含連結至$1的最近修訂版本',
 'spam_blanking' => '所有包含連結至$1的修訂,清空',
+'spam_deleting' => '所有包含連結至$1的修訂,刪除中',
 
 # Info page
 'pageinfo-title' => '" $1 "的信息',
index 8a760cd..f104899 100644 (file)
 require_once( dirname( __FILE__ ) . '/Maintenance.php' );
 
 class CleanupSpam extends Maintenance {
+
        public function __construct() {
                parent::__construct();
                $this->mDescription = "Cleanup all spam from a given hostname";
                $this->addOption( 'all', 'Check all wikis in $wgLocalDatabases' );
-               $this->addArg( 'hostname', 'Hostname that was spamming' );
+               $this->addOption( 'delete', 'Delete pages containing only spam instead of blanking them' );
+               $this->addArg( 'hostname', 'Hostname that was spamming, single * wildcard in the beginning allowed' );
        }
 
        public function execute() {
@@ -108,15 +110,19 @@ class CleanupSpam extends Maintenance {
                        $dbw = wfGetDB( DB_MASTER );
                        $dbw->begin( __METHOD__ );
                        $page = WikiPage::factory( $title );
-                       if ( !$rev ) {
-                               // Didn't find a non-spammy revision, blank the page
-                               $this->output( "blanking\n" );
-                               $page->doEdit( '', wfMsgForContent( 'spam_blanking', $domain ) );
-                       } else {
+                       if ( $rev ) {
                                // Revert to this revision
                                $this->output( "reverting\n" );
                                $page->doEdit( $rev->getText(), wfMsgForContent( 'spam_reverting', $domain ),
                                        EDIT_UPDATE, $rev->getId() );
+                       } elseif ( $this->hasOption( 'delete' ) ) {
+                               // Didn't find a non-spammy revision, blank the page
+                               $this->output( "deleting\n" );
+                               $page->doDeleteArticle( wfMsgForContent( 'spam_deleting', $domain ) );
+                       } else {
+                               // Didn't find a non-spammy revision, blank the page
+                               $this->output( "blanking\n" );
+                               $page->doEdit( '', wfMsgForContent( 'spam_blanking', $domain ) );
                        }
                        $dbw->commit( __METHOD__ );
                }
index b3bb50c..fa98813 100644 (file)
@@ -1,5 +1,21 @@
 <?php
 /**
+ * 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 Maintenance
  */
 
index 0dc200e..0ce9388 100644 (file)
@@ -2,6 +2,22 @@
 /**
  * Maintenance script to import all scripts in the MediaWiki namespace from a
  * local site.
+ *
+ * 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 Maintenance
  */
index 96a65fc..65d6a70 100644 (file)
@@ -81,7 +81,7 @@ class CommandLineInstaller extends Maintenance {
                }
 
                $installer =
-                       new CliInstaller( $siteName, $adminName, $this->mOptions );
+                       InstallerOverrides::getCliInstaller( $siteName, $adminName, $this->mOptions );
 
                $status = $installer->doEnvironmentChecks();
                if( $status->isGood() ) {
index 2e4f40f..4cb90ff 100644 (file)
@@ -1,5 +1,22 @@
 <?php
 /**
+ * Maintenance script to generate first letter data files for Collation.php.
+ *
+ * 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
+ *
  * @ingroup Maintenance
  * @file
  */
index bca4c34..9cdbf34 100644 (file)
@@ -473,6 +473,7 @@ $wgOptionalMessages = array(
        'version-entrypoints-scriptpath',
        'mergehistory-revisionrow',
        'categoryviewer-pagedlinks',
+       'undelete-revisionrow',
 );
 
 /** EXIF messages, which may be set as optional in several checks, but are generally mandatory */
index d5ec209..fbdef20 100644 (file)
@@ -1750,6 +1750,7 @@ $wgMessageStructure = array(
                'alllogstext',
                'logempty',
                'log-title-wildcard',
+               'showhideselectedlogentries',
        ),
        'allpages' => array(
                'allpages',
@@ -2067,6 +2068,7 @@ $wgMessageStructure = array(
                'undelete-error-long',
                'undelete-show-file-confirm',
                'undelete-show-file-submit',
+               'undelete-revisionrow',
        ),
        'nsform' => array(
                'namespace',
@@ -2632,6 +2634,7 @@ $wgMessageStructure = array(
                'spambot_username',
                'spam_reverting',
                'spam_blanking',
+               'spam_deleting',
        ),
        'info' => array(
                'pageinfo-title',
index 50b939c..ba778f4 100644 (file)
@@ -1,12 +1,28 @@
 <?php
 /**
+ * Simple lock server daemon that accepts lock/unlock requests.
+ *
+ * This code should not require MediaWiki setup or PHP files.
+ *
+ * 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 LockManager Maintenance
  */
 
-/**
- * This code should not require MediaWiki setup or PHP files.
- */
 if ( php_sapi_name() !== 'cli' ) {
        die( "This is not a valid entry point.\n" );
 }
index a353504..2edeaba 100644 (file)
@@ -77,9 +77,9 @@ $mwExcludePaths = array(
 
 /** Variable to get user input */
 $input = '';
-$exclude_patterns = '';
+$excludePatterns = '';
 /** Whether to generates man pages: */
-$wgDoxyGenerateMan = false;
+$doxyGenerateMan = false;
 
 #
 # Functions
@@ -128,13 +128,12 @@ function getSvnRevision( $dir ) {
  * @param $svnstat String: path to the svnstat file
  * @param $input String: Path to analyze.
  * @param $exclude String: Additionals path regex to exclude
- * @param $exclude_patterns String: Additionals path regex to exclude
+ * @param $excludePatterns String: Additionals path regex to exclude
  *                 (LocalSettings.php, AdminSettings.php, .svn and .git directories are always excluded)
+ * @param $doxyGenerateMan Boolean
  * @return string
  */
-function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude, $exclude_patterns ) {
-
-       global $wgDoxyGenerateMan;
+function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude, $excludePatterns, $doxyGenerateMan ) {
 
        $template = file_get_contents( $doxygenTemplate );
 
@@ -146,9 +145,9 @@ function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath,
                '{{SVNSTAT}}'          => $svnstat,
                '{{INPUT}}'            => $input,
                '{{EXCLUDE}}'          => $exclude,
-               '{{EXCLUDE_PATTERNS}}' => $exclude_patterns,
+               '{{EXCLUDE_PATTERNS}}' => $excludePatterns,
                '{{HAVE_DOT}}'         => `which dot` ? 'YES' : 'NO',
-               '{{GENERATE_MAN}}'     => $wgDoxyGenerateMan ? 'YES' : 'NO',
+               '{{GENERATE_MAN}}'     => $doxyGenerateMan ? 'YES' : 'NO',
        );
        $tmpCfg = str_replace( array_keys( $replacements ), array_values( $replacements ), $template );
        $tmpFileName = tempnam( wfTempDir(), 'mwdocgen-' );
@@ -186,7 +185,7 @@ if ( is_array( $argv ) ) {
                        }
                        break;
                case '--generate-man':
-                       $wgDoxyGenerateMan = true;
+                       $doxyGenerateMan = true;
                        break;
                case '--help':
                        print <<<END
@@ -252,7 +251,7 @@ case 5:
        break;
 case 6:
        $input = $mwPath;
-       $exclude_patterns = 'extensions';
+       $excludePatterns = 'extensions';
 }
 
 $versionNumber = getSvnRevision( $input );
@@ -268,7 +267,7 @@ if ( $versionNumber === false ) { # Not using subversion ?
 $excludedPaths = $mwPath . join( " $mwPath", $mwExcludePaths );
 print "EXCLUDE: $excludedPaths\n\n";
 
-$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $svnstat, $input, $excludedPaths, $exclude_patterns );
+$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $svnstat, $input, $excludedPaths, $excludePatterns, $doxyGenerateMan );
 $command = $doxygenBin . ' ' . $generatedConf;
 
 echo <<<TEXT
index 9c5f32b..10892c4 100644 (file)
@@ -1,6 +1,21 @@
 <?php
 /**
- * Command line script to check for an open proxy at a specified location
+ * Command line script to check for an open proxy at a specified location.
+ *
+ * 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 Maintenance
index 4d775f9..84a2b51 100644 (file)
@@ -1,7 +1,25 @@
 <?php
 /**
- * @ingroup Maintenance
+ * Maintenance script to remove old objects from the parser cache.
+ * This only works when the parser cache is in an SQL database.
+ *
+ * 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 Maintenance
  */
 
 require( dirname( __FILE__ ) . '/Maintenance.php' );
index fc9a6a8..ec7b081 100644 (file)
@@ -1,7 +1,22 @@
 <?php
 /**
- * @ingroup Maintenance Memcached
+ * 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 Maintenance Memcached
  */
 
 require_once( dirname( __FILE__ ) . '/commandLine.inc' );
index 26d7e29..b5aa85f 100644 (file)
@@ -287,6 +287,7 @@ class RefreshLinks extends Maintenance {
                                $dbw->delete( $table, array( $field => $list ), __METHOD__ );
                        }
                        $this->output( "\n" );
+                       wfWaitForSlaves();
                }
                $lb->closeAll();
        }
index 6068311..a75696a 100644 (file)
@@ -61,7 +61,9 @@ class RunJobs extends Maintenance {
                $dbw = wfGetDB( DB_MASTER );
                $n = 0;
                $conds = '';
-               if ( $type !== false ) {
+               if ( $type === false ) {
+                       $conds = Job::defaultQueueConditions( );
+               } else {
                        $conds = "job_cmd = " . $dbw->addQuotes( $type );
                }
 
index 5887a75..29904db 100644 (file)
@@ -388,7 +388,8 @@ class CheckStorage {
        }
 
        function restoreText( $revIds, $xml ) {
-               global $wgTmpDirectory, $wgDBname;
+               global $wgDBname;
+               $tmpDir = wfTempDir();
 
                if ( !count( $revIds ) ) {
                        return;
@@ -396,8 +397,8 @@ class CheckStorage {
 
                print "Restoring text from XML backup...\n";
 
-               $revFileName = "$wgTmpDirectory/broken-revlist-$wgDBname";
-               $filteredXmlFileName = "$wgTmpDirectory/filtered-$wgDBname.xml";
+               $revFileName = "$tmpDir/broken-revlist-$wgDBname";
+               $filteredXmlFileName = "$tmpDir/filtered-$wgDBname.xml";
 
                // Write revision list
                if ( !file_put_contents( $revFileName, implode( "\n", $revIds ) ) ) {
@@ -481,4 +482,3 @@ class CheckStorage {
                $this->errors['fixed'][$id] = true;
        }
 }
-
index 36fb8ee..ca0f95d 100644 (file)
@@ -1,14 +1,31 @@
 <?php
-
 /**
- * @ingroup Testing
- *
  * Set of classes to help with test output and such. Right now pretty specific
  * to the parser tests but could be more useful one day :)
  *
+ * 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 Testing
  * @todo Fixme: Make this more generic
  */
 
+/**
+ * Terminal that supports ANSI escape sequences.
+ */
 class AnsiTermColorer {
        function __construct() {
        }
@@ -37,7 +54,9 @@ class AnsiTermColorer {
        }
 }
 
-/* A colour-less terminal */
+/**
+ * A colour-less terminal
+ */
 class DummyTermColorer {
        public function color( $color ) {
                return '';
index edfae92..3f993f0 100644 (file)
@@ -20,7 +20,7 @@ wfInstallerMain();
 function wfInstallerMain() {
        global $wgRequest, $wgLang, $wgMetaNamespace, $wgCanonicalNamespaceNames;
 
-       $installer = new WebInstaller( $wgRequest );
+       $installer = InstallerOverrides::getWebInstaller( $wgRequest );
 
        if ( !$installer->startSession() ) {
                $installer->finish();
diff --git a/mw-config/overrides.php b/mw-config/overrides.php
new file mode 100644 (file)
index 0000000..ae98295
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+/**
+ * MediaWiki installer overrides.
+ * Modify this file if you are a packager who needs to modify the behavior of the MediaWiki installer.
+ * Altering it is preferred over changing anything in /includes.
+ *
+ * Note: this file doesn't gets included from a global scope, don't use globals directly.
+ */
+
+/*
+
+Example of modifications:
+
+       public static function getLocalSettingsGenerator( Installer $installer ) {
+               return new MyLocalSettingsGenerator( $installer );
+       }
+
+Then add the following to the bottom of this file:
+
+class MyLocalSettingsGenerator extends LocalSettingsGenerator {
+       function getText() {
+               // Modify an existing setting
+               $this->values['wgResourceLoaderMaxQueryLength'] = 512;
+               // add a new setting
+               $ls = parent::getText();
+               return $ls . "\n\$wgUseTex = true;\n";
+       }
+}
+*/
+
+/**
+ * @since 1.20
+ */
+class InstallerOverrides {
+       /**
+        * Instantiates and returns an instance of LocalSettingsGenerator or its descendant classes
+        * @param Installer $installer
+        * @return LocalSettingsGenerator
+        */
+       public static function getLocalSettingsGenerator( Installer $installer ) {
+               return new LocalSettingsGenerator( $installer );
+       }
+
+       /**
+        * Instantiates and returns an instance of WebInstaller or its descendant classes
+        * @param WebRequest $request
+        * @return WebInstaller
+        */
+       public static function getWebInstaller( WebRequest $request ) {
+               return new WebInstaller( $request );
+       }
+
+       /**
+        * Instantiates and returns an instance of CliInstaller or its descendant classes
+        * @param string $siteName
+        * @param string|null $admin
+        * @param array $options
+        * @return CliInstaller
+        */
+       public static function getCliInstaller( $siteName, $admin = null, array $options = array() ) {
+               return new CliInstaller( $siteName, $admin, $options );
+       }
+}
index 34b9be6..fb6f2ff 100644 (file)
@@ -364,6 +364,7 @@ return array(
                        'is' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-is.js',
                        'it' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-it.js',
                        'ja' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ja.js',
+                       'ka' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ka.js',
                        'kk' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-kk.js',
                        'km' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-km.js',
                        'ko' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-ko.js',
@@ -525,32 +526,32 @@ return array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.js',
                'dependencies' => 'mediawiki.util',
        ),
-       'mediawiki.api.category' => array( 
+       'mediawiki.api.category' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.category.js',
-               'dependencies' => array( 
+               'dependencies' => array(
                        'mediawiki.api',
-                       'mediawiki.Title' 
+                       'mediawiki.Title',
                ),
        ),
-       'mediawiki.api.edit' => array( 
+       'mediawiki.api.edit' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.edit.js',
-               'dependencies' => array( 
+               'dependencies' => array(
                        'mediawiki.api',
-                       'mediawiki.Title' 
+                       'mediawiki.Title',
                ),
        ),
-       'mediawiki.api.parse' => array( 
+       'mediawiki.api.parse' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.parse.js',
                'dependencies' => 'mediawiki.api',
        ),
-       'mediawiki.api.titleblacklist' => array( 
+       'mediawiki.api.titleblacklist' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.titleblacklist.js',
-               'dependencies' => array( 
+               'dependencies' => array(
                        'mediawiki.api',
-                       'mediawiki.Title' 
+                       'mediawiki.Title',
                ),
        ),
-       'mediawiki.api.watch' => array( 
+       'mediawiki.api.watch' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.watch.js',
                'dependencies' => array(
                        'mediawiki.api',
@@ -573,13 +574,13 @@ return array(
        'mediawiki.feedback' => array(
                'scripts' => 'resources/mediawiki/mediawiki.feedback.js',
                'styles' => 'resources/mediawiki/mediawiki.feedback.css',
-               'dependencies' => array( 
-                       'mediawiki.api.edit', 
+               'dependencies' => array(
+                       'mediawiki.api.edit',
                        'mediawiki.Title',
                        'mediawiki.jqueryMsg',
                        'jquery.ui.dialog',
                ),
-               'messages' => array( 
+               'messages' => array(
                        'feedback-bugornote',
                        'feedback-subject',
                        'feedback-message',
@@ -687,6 +688,7 @@ return array(
                        'cu' => 'resources/mediawiki.language/languages/cu.js',
                        'cy' => 'resources/mediawiki.language/languages/cy.js',
                        'dsb' => 'resources/mediawiki.language/languages/dsb.js',
+                       'fi' => 'resources/mediawiki.language/languages/fi.js',
                        'fr' => 'resources/mediawiki.language/languages/fr.js',
                        'ga' => 'resources/mediawiki.language/languages/ga.js',
                        'gd' => 'resources/mediawiki.language/languages/gd.js',
@@ -695,8 +697,10 @@ return array(
                        'hi' => 'resources/mediawiki.language/languages/hi.js',
                        'hr' => 'resources/mediawiki.language/languages/hr.js',
                        'hsb' => 'resources/mediawiki.language/languages/hsb.js',
+                       'hu' => 'resources/mediawiki.language/languages/hu.js',
                        'hy' => 'resources/mediawiki.language/languages/hy.js',
                        'ksh' => 'resources/mediawiki.language/languages/ksh.js',
+                       'la' => 'resources/mediawiki.language/languages/la.js',
                        'ln' => 'resources/mediawiki.language/languages/ln.js',
                        'lt' => 'resources/mediawiki.language/languages/lt.js',
                        'lv' => 'resources/mediawiki.language/languages/lv.js',
@@ -706,6 +710,7 @@ return array(
                        'mt' => 'resources/mediawiki.language/languages/mt.js',
                        'nl' => 'resources/mediawiki.language/languages/nl.js',
                        'nso' => 'resources/mediawiki.language/languages/nso.js',
+                       'os' => 'resources/mediawiki.language/languages/os.js',
                        'pl' => 'resources/mediawiki.language/languages/pl.js',
                        'pt' => 'resources/mediawiki.language/languages/pt.js',
                        'pt-br' => 'resources/mediawiki.language/languages/pt-br.js',
@@ -724,11 +729,19 @@ return array(
                        'uk' => 'resources/mediawiki.language/languages/uk.js',
                        'wa' => 'resources/mediawiki.language/languages/wa.js',
                ),
+               'dependencies' => array( 'mediawiki.language.data' ),
+       ),
+
+       'mediawiki.language.init' => array(
+               'scripts' => 'resources/mediawiki.language/mediawiki.language.init.js',
        ),
 
        'mediawiki.jqueryMsg' => array(
-               'dependencies' => array( 'mediawiki.language', 'mediawiki.util' ),
-               'scripts' => 'resources/mediawiki/mediawiki.jqueryMsg.js'
+               'scripts' => 'resources/mediawiki/mediawiki.jqueryMsg.js',
+               'dependencies' => array(
+                       'mediawiki.util',
+                       'mediawiki.language',
+               ),
        ),
 
        /* MediaWiki Libs */
@@ -802,6 +815,11 @@ return array(
        'mediawiki.special.search' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.search.js',
                'styles' => 'resources/mediawiki.special/mediawiki.special.search.css',
+               'messages' => array(
+                       'powersearch-togglelabel',
+                       'powersearch-toggleall',
+                       'powersearch-togglenone',
+               ),
        ),
        'mediawiki.special.undelete' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.undelete.js',
index c28503b..686cdb7 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Blind 1.8.20
+ * jQuery UI Effects Blind 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 5666312..e3fc3d8 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Bounce 1.8.20
+ * jQuery UI Effects Bounce 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 9244a15..2b43554 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Clip 1.8.20
+ * jQuery UI Effects Clip 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index c49bdaa..cc31827 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects 1.8.20
+ * jQuery UI Effects 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -306,7 +306,7 @@ $.fn.extend({
 /******************************************************************************/
 
 $.extend($.effects, {
-       version: "1.8.20",
+       version: "1.8.21",
 
        // Saves a set of properties in a data storage
        save: function(element, set) {
@@ -370,7 +370,16 @@ $.extend($.effects, {
                                }),
                        active = document.activeElement;
 
-               element.wrap(wrapper);
+               // support: Firefox
+               // Firefox incorrectly exposes anonymous content
+               // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
+               try {
+                       active.id;
+               } catch( e ) {
+                       active = document.body;
+               }
+
+               element.wrap( wrapper );
 
                // Fixes #7595 - Elements lose focus when wrapped.
                if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
index 4fdb521..1fa5660 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Drop 1.8.20
+ * jQuery UI Effects Drop 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 1a9d32e..f50e257 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Explode 1.8.20
+ * jQuery UI Effects Explode 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index c976ce4..c62037f 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Fade 1.8.20
+ * jQuery UI Effects Fade 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 017f70c..a660eed 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Fold 1.8.20
+ * jQuery UI Effects Fold 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 71462fb..e65bda3 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Highlight 1.8.20
+ * jQuery UI Effects Highlight 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 4d8e90e..a512184 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Pulsate 1.8.20
+ * jQuery UI Effects Pulsate 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index a4941f9..c312195 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Scale 1.8.20
+ * jQuery UI Effects Scale 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index b40c783..08ce5a8 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Shake 1.8.20
+ * jQuery UI Effects Shake 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 49059cf..3258a9a 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Slide 1.8.20
+ * jQuery UI Effects Slide 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 565ad28..97514f1 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Effects Transfer 1.8.20
+ * jQuery UI Effects Transfer 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 743a15d..8a9218d 100644 (file)
@@ -12,7 +12,7 @@ jQuery(function($){
                monthNamesShort: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
                dayNames: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
                dayNamesShort: ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
-               dayNamesMin: ['اÙ\84أحد', 'اÙ\84اثÙ\86Ù\8aÙ\86', 'اÙ\84Ø«Ù\84اثاء', 'اÙ\84أربعاء', 'اÙ\84Ø®Ù\85Ù\8aس', 'اÙ\84جÙ\85عة', 'اÙ\84سبت'],
+               dayNamesMin: ['Ø­', 'Ù\86', 'Ø«', 'ر', 'Ø®', 'ج', 'س'],
                weekHeader: 'أسبوع',
                dateFormat: 'dd/mm/yy',
                firstDay: 6,
index bee4bfb..ff66e49 100644 (file)
@@ -6,15 +6,15 @@ jQuery(function($){
                prevText: '&#x3c;Aur',
                nextText: 'Hur&#x3e;',
                currentText: 'Gaur',
-               monthNames: ['Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina',
-               'Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua'],
-               monthNamesShort: ['Urt','Ots','Mar','Api','Mai','Eka',
-               'Uzt','Abu','Ira','Urr','Aza','Abe'],
-               dayNames: ['Igandea','Astelehena','Asteartea','Asteazkena','Osteguna','Ostirala','Larunbata'],
-               dayNamesShort: ['Iga','Ast','Ast','Ast','Ost','Ost','Lar'],
-               dayNamesMin: ['Ig','As','As','As','Os','Os','La'],
-               weekHeader: 'Wk',
-               dateFormat: 'yy/mm/dd',
+               monthNames: ['urtarrila','otsaila','martxoa','apirila','maiatza','ekaina',
+                       'uztaila','abuztua','iraila','urria','azaroa','abendua'],
+               monthNamesShort: ['urt.','ots.','mar.','api.','mai.','eka.',
+                       'uzt.','abu.','ira.','urr.','aza.','abe.'],
+               dayNames: ['igandea','astelehena','asteartea','asteazkena','osteguna','ostirala','larunbata'],
+               dayNamesShort: ['ig.','al.','ar.','az.','og.','ol.','lr.'],
+               dayNamesMin: ['ig','al','ar','az','og','ol','lr'],
+               weekHeader: 'As',
+               dateFormat: 'yy-mm-dd',
                firstDay: 1,
                isRTL: false,
                showMonthAfterYear: false,
diff --git a/resources/jquery.ui/i18n/jquery.ui.datepicker-ka.js b/resources/jquery.ui/i18n/jquery.ui.datepicker-ka.js
new file mode 100644 (file)
index 0000000..c10658d
--- /dev/null
@@ -0,0 +1,21 @@
+/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */
+/* Written by Lado Lomidze (lado.lomidze@gmail.com). */
+jQuery(function($){
+       $.datepicker.regional['ka'] = {
+               closeText: 'დახურვა',
+               prevText: '&#x3c; წინა',
+               nextText: 'შემდეგი &#x3e;',
+               currentText: 'დღეს',
+               monthNames: ['იანვარი','თებერვალი','მარტი','აპრილი','მაისი','ივნისი', 'ივლისი','აგვისტო','სექტემბერი','ოქტომბერი','ნოემბერი','დეკემბერი'],
+               monthNamesShort: ['იან','თებ','მარ','აპრ','მაი','ივნ', 'ივლ','აგვ','სექ','ოქტ','ნოე','დეკ'],
+               dayNames: ['კვირა','ორშაბათი','სამშაბათი','ოთხშაბათი','ხუთშაბათი','პარასკევი','შაბათი'],
+               dayNamesShort: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],
+               dayNamesMin: ['კვ','ორშ','სამ','ოთხ','ხუთ','პარ','შაბ'],
+               weekHeader: 'კვირა',
+               dateFormat: 'dd-mm-yy',
+               firstDay: 1,
+               isRTL: false,
+               showMonthAfterYear: false,
+               yearSuffix: ''};
+       $.datepicker.setDefaults($.datepicker.regional['ka']);
+});
index f086f81..fe0a729 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Accordion 1.8.20
+ * jQuery UI Accordion 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -518,7 +518,7 @@ $.widget( "ui.accordion", {
 });
 
 $.extend( $.ui.accordion, {
-       version: "1.8.20",
+       version: "1.8.21",
        animations: {
                slide: function( options, additions ) {
                        options = $.extend({
index f95b78f..f8009c6 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Autocomplete 1.8.20
+ * jQuery UI Autocomplete 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index cbec505..47bd6aa 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Button 1.8.20
+ * jQuery UI Button 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 6e2b3be..2a8a2c1 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI 1.8.20
+ * jQuery UI 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -18,7 +18,7 @@ if ( $.ui.version ) {
 }
 
 $.extend( $.ui, {
-       version: "1.8.20",
+       version: "1.8.21",
 
        keyCode: {
                ALT: 18,
index 951c1a9..8ca1b15 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Datepicker 1.8.20
+ * jQuery UI Datepicker 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -12,7 +12,7 @@
  */
 (function( $, undefined ) {
 
-$.extend($.ui, { datepicker: { version: "1.8.20" } });
+$.extend($.ui, { datepicker: { version: "1.8.21" } });
 
 var PROP_NAME = 'datepicker';
 var dpuuid = new Date().getTime();
@@ -1815,7 +1815,7 @@ $.fn.datepicker = function(options){
 $.datepicker = new Datepicker(); // singleton instance
 $.datepicker.initialized = false;
 $.datepicker.uuid = new Date().getTime();
-$.datepicker.version = "1.8.20";
+$.datepicker.version = "1.8.21";
 
 // Workaround for #4055
 // Add another global to avoid noConflict issues with inline event handlers
index d28be0c..e7e05b1 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Dialog 1.8.20
+ * jQuery UI Dialog 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -702,7 +702,7 @@ $.widget("ui.dialog", {
 });
 
 $.extend($.ui.dialog, {
-       version: "1.8.20",
+       version: "1.8.21",
 
        uuid: 0,
        maxZ: 0,
index dee9777..40a0c52 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Draggable 1.8.20
+ * jQuery UI Draggable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -103,6 +103,8 @@ $.widget("ui.draggable", $.ui.mouse, {
                //Create and append the visible helper
                this.helper = this._createHelper(event);
 
+               this.helper.addClass("ui-draggable-dragging");
+
                //Cache the helper size
                this._cacheHelperProportions();
 
@@ -163,7 +165,7 @@ $.widget("ui.draggable", $.ui.mouse, {
                if ($.ui.ddmanager && !o.dropBehaviour)
                        $.ui.ddmanager.prepareOffsets(this, event);
 
-               this.helper.addClass("ui-draggable-dragging");
+               
                this._mouseDrag(event, true); //Execute the drag once - this causes the helper not to be visible before getting its correct position
                
                //If the ddmanager is used for droppables, inform the manager that dragging has started (see #5003)
@@ -511,7 +513,7 @@ $.widget("ui.draggable", $.ui.mouse, {
 });
 
 $.extend($.ui.draggable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 $.ui.plugin.add("draggable", "connectToSortable", {
index 8cb2bb7..a749161 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Droppable 1.8.20
+ * jQuery UI Droppable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -147,7 +147,7 @@ $.widget("ui.droppable", {
 });
 
 $.extend($.ui.droppable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 $.ui.intersect = function(draggable, droppable, toleranceMode) {
index 63f8570..a4392de 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Mouse 1.8.20
+ * jQuery UI Mouse 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 1989896..164804b 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Position 1.8.20
+ * jQuery UI Position 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -243,7 +243,12 @@ if ( !$.offset.setOffset ) {
        $.fn.offset = function( options ) {
                var elem = this[ 0 ];
                if ( !elem || !elem.ownerDocument ) { return null; }
-               if ( options ) { 
+               if ( options ) {
+                       if ( $.isFunction( options ) ) {
+                               return this.each(function( i ) {
+                                       $( this ).offset( options.call( this, i, $( this ).offset() ) );
+                               });
+                       }
                        return this.each(function() {
                                $.offset.setOffset( this, options );
                        });
index b1c05de..4139be6 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Progressbar 1.8.20
+ * jQuery UI Progressbar 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -103,7 +103,7 @@ $.widget( "ui.progressbar", {
 });
 
 $.extend( $.ui.progressbar, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 })( jQuery );
index a2a7ad5..904be47 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Resizable 1.8.20
+ * jQuery UI Resizable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -540,7 +540,7 @@ $.widget("ui.resizable", $.ui.mouse, {
 });
 
 $.extend($.ui.resizable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 /*
index b68ea95..403e62d 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Selectable 1.8.20
+ * jQuery UI Selectable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -261,7 +261,7 @@ $.widget("ui.selectable", $.ui.mouse, {
 });
 
 $.extend($.ui.selectable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 })(jQuery);
index 3e6178e..8629dc6 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Slider 1.8.20
+ * jQuery UI Slider 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -656,7 +656,7 @@ $.widget( "ui.slider", $.ui.mouse, {
 });
 
 $.extend( $.ui.slider, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 }(jQuery));
index 3438f59..45fbb1c 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Sortable 1.8.20
+ * jQuery UI Sortable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -155,11 +155,6 @@ $.widget("ui.sortable", $.ui.mouse, {
                        left: this.offset.left - this.margins.left
                };
 
-               // Only after we got the offset, we can change the helper's position to absolute
-               // TODO: Still need to figure out a way to make relative sorting possible
-               this.helper.css("position", "absolute");
-               this.cssPosition = this.helper.css("position");
-
                $.extend(this.offset, {
                        click: { //Where the click happened, relative to the element
                                left: event.pageX - this.offset.left,
@@ -169,6 +164,11 @@ $.widget("ui.sortable", $.ui.mouse, {
                        relative: this._getRelativeOffset() //This is a relative to absolute position minus the actual position calculation - only used for relative positioned helper
                });
 
+               // Only after we got the offset, we can change the helper's position to absolute
+               // TODO: Still need to figure out a way to make relative sorting possible
+               this.helper.css("position", "absolute");
+               this.cssPosition = this.helper.css("position");
+               
                //Generate the original position
                this.originalPosition = this._generatePosition(event);
                this.originalPageX = event.pageX;
@@ -730,30 +730,31 @@ $.widget("ui.sortable", $.ui.mouse, {
                if(this.containers.length === 1) {
                        this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
                        this.containers[innermostIndex].containerCache.over = 1;
-               } else if(this.currentContainer != this.containers[innermostIndex]) { 
-
-                       //When entering a new container, we will find the item with the least distance and append our item near it 
-                       var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top']; 
-                       for (var j = this.items.length - 1; j >= 0; j--) { 
-                               if(!$.ui.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue; 
-                               var cur = this.items[j][this.containers[innermostIndex].floating ? 'left' : 'top']; 
-                               if(Math.abs(cur - base) < dist) { 
-                                       dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j]; 
-                               } 
-                       } 
-
-                       if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled 
-                               return; 
-
-                       this.currentContainer = this.containers[innermostIndex]; 
-                       itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true); 
-                       this._trigger("change", event, this._uiHash()); 
-                       this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)); 
-
-                       //Update the placeholder 
-                       this.options.placeholder.update(this.currentContainer, this.placeholder); 
-               
-                       this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)); 
+               } else if(this.currentContainer != this.containers[innermostIndex]) {
+
+                       //When entering a new container, we will find the item with the least distance and append our item near it
+                       var dist = 10000; var itemWithLeastDistance = null; var base = this.positionAbs[this.containers[innermostIndex].floating ? 'left' : 'top'];
+                       for (var j = this.items.length - 1; j >= 0; j--) {
+                               if(!$.ui.contains(this.containers[innermostIndex].element[0], this.items[j].item[0])) continue;
+                               var cur = this.containers[innermostIndex].floating ? this.items[j].item.offset().left : this.items[j].item.offset().top;
+                               if(Math.abs(cur - base) < dist) {
+                                       dist = Math.abs(cur - base); itemWithLeastDistance = this.items[j];
+                                       this.direction = (cur - base > 0) ? 'down' : 'up';
+                               }
+                       }
+
+                       if(!itemWithLeastDistance && !this.options.dropOnEmpty) //Check if dropOnEmpty is enabled
+                               return;
+
+                       this.currentContainer = this.containers[innermostIndex];
+                       itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, true) : this._rearrange(event, null, this.containers[innermostIndex].element, true);
+                       this._trigger("change", event, this._uiHash());
+                       this.containers[innermostIndex]._trigger("change", event, this._uiHash(this));
+
+                       //Update the placeholder
+                       this.options.placeholder.update(this.currentContainer, this.placeholder);
+
+                       this.containers[innermostIndex]._trigger("over", event, this._uiHash(this));
                        this.containers[innermostIndex].containerCache.over = 1;
                } 
        
@@ -1075,7 +1076,7 @@ $.widget("ui.sortable", $.ui.mouse, {
 });
 
 $.extend($.ui.sortable, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 })(jQuery);
index 7cc19f0..d9e2fdf 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Tabs 1.8.20
+ * jQuery UI Tabs 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -698,7 +698,7 @@ $.widget( "ui.tabs", {
 });
 
 $.extend( $.ui.tabs, {
-       version: "1.8.20"
+       version: "1.8.21"
 });
 
 /*
index 5a71348..4f7aea7 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Widget 1.8.20
+ * jQuery UI Widget 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index cd207b9..4ad0cec 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Accordion 1.8.20
+ * jQuery UI Accordion 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 535f1e6..428e66a 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Autocomplete 1.8.20
+ * jQuery UI Autocomplete 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
@@ -13,7 +13,7 @@
 * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
 
 /*
- * jQuery UI Menu 1.8.20
+ * jQuery UI Menu 1.8.21
  *
  * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 1e2b1ff..f5fe74e 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Button 1.8.20
+ * jQuery UI Button 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index c42f9ba..f19df47 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI CSS Framework 1.8.20
+ * jQuery UI CSS Framework 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index fefb016..4c0ca36 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Datepicker 1.8.20
+ * jQuery UI Datepicker 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 2319611..77329fb 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Dialog 1.8.20
+ * jQuery UI Dialog 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 7c099ad..4c2a52d 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Progressbar 1.8.20
+ * jQuery UI Progressbar 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index b6b90de..0105c8a 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Resizable 1.8.20
+ * jQuery UI Resizable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
 .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
 .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
 .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
-/* @noflip */
 .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
-/* @noflip */
 .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
-/* @noflip */
 .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
-/* @noflip */
 .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
-/* @noflip */
 .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
-/* @noflip */
-.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}
\ No newline at end of file
index 279effc..1d89569 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Selectable 1.8.20
+ * jQuery UI Selectable 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 6acaeaa..9bd0fd9 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Slider 1.8.20
+ * jQuery UI Slider 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 42a3692..d4645f8 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI Tabs 1.8.20
+ * jQuery UI Tabs 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index b705ff6..aad5943 100644 (file)
@@ -1,5 +1,5 @@
 /*!
- * jQuery UI CSS Framework 1.8.20
+ * jQuery UI CSS Framework 1.8.21
  *
  * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
  * Dual licensed under the MIT or GPL Version 2 licenses.
index 5abb869..2db0629 100644 (file)
@@ -1,19 +1,85 @@
 /**
- * jQuery QUnit CompletenessTest 0.3
+ * jQuery QUnit CompletenessTest 0.4
  *
  * Tests the completeness of test suites for object oriented javascript
  * libraries. Written to be used in environments with jQuery and QUnit.
- * Requires jQuery 1.5.2 or higher.
- *
- * Globals: jQuery, QUnit, console.log
+ * Requires jQuery 1.7.2 or higher.
  *
  * Built for and tested with:
- * - Safari 5
+ * - Chrome 19
  * - Firefox 4
+ * - Safari 5
  *
- * @author Timo Tijhof, 2011
+ * @author Timo Tijhof, 2011-2012
  */
-( function( $ ) {
+/*global jQuery, QUnit */
+/*jshint eqeqeq:false, eqnull:false, forin:false */
+( function ( $ ) {
+       "use strict";
+
+       var util,
+               hasOwn = Object.prototype.hasOwnProperty,
+               log = (window.console && window.console.log)
+                       ? function () { return window.console.log.apply(window.console, arguments); }
+                       : function () {};
+
+       // Simplified version of a few jQuery methods, except that they don't
+       // call other jQuery methods. Required to be able to run the CompletenessTest
+       // on jQuery itself as well.
+       util = {
+               keys: Object.keys || function ( object ) {
+                       var key, keys = [];
+                       for ( key in object ) {
+                               if ( hasOwn.call( object, key ) ) {
+                                       keys.push( key );
+                               }
+                       }
+                       return keys;
+               },
+               extend: function () {
+                       var options, name, src, copy,
+                               target = arguments[0] || {},
+                               i = 1,
+                               length = arguments.length;
+
+                       for ( ; i < length; i++ ) {
+                               // Only deal with non-null/undefined values
+                               if ( (options = arguments[ i ]) != null ) {
+                                       // Extend the base object
+                                       for ( name in options ) {
+                                               src = target[ name ];
+                                               copy = options[ name ];
+
+                                               // Prevent never-ending loop
+                                               if ( target === copy ) {
+                                                       continue;
+                                               }
+
+                                               if ( copy !== undefined ) {
+                                                       target[ name ] = copy;
+                                               }
+                                       }
+                               }
+                       }
+
+                       // Return the modified object
+                       return target;
+               },
+               each: function ( object, callback ) {
+                       var name;
+                       for ( name in object ) {
+                               if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+                                       break;
+                               }
+                       }
+               },
+               // $.type and $.isEmptyObject are safe as is, they don't call
+               // other $.* methods. Still need to be derefenced into `util`
+               // since the CompletenessTest will overload them with spies.
+               type: $.type,
+               isEmptyObject: $.isEmptyObject
+       };
+
 
 /**
  * CompletenessTest
@@ -33,67 +99,103 @@ var CompletenessTest = function ( masterVariable, ignoreFn ) {
 
        // Keep track in these objects. Keyed by strings with the
        // method names (ie. 'my.foo', 'my.bar', etc.) values are boolean true.
+       this.injectionTracker = {};
        this.methodCallTracker = {};
        this.missingTests = {};
 
-       this.ignoreFn = undefined === ignoreFn ? function(){ return false; } : ignoreFn;
+       this.ignoreFn = undefined === ignoreFn ? function () { return false; } : ignoreFn;
 
        // Lazy limit in case something weird happends (like recurse (part of) ourself).
-       this.lazyLimit = 1000;
+       this.lazyLimit = 2000;
        this.lazyCounter = 0;
 
        var that = this;
 
        // Bind begin and end to QUnit.
-       QUnit.begin = function(){
-               that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
-       };
+       QUnit.begin( function () {
+               that.walkTheObject( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
+               log( 'CompletenessTest/walkTheObject/ACTION_INJECT', that );
+       });
+
+       QUnit.done( function () {
+               that.populateMissingTests();
+               log( 'CompletenessTest/populateMissingTests', that );
+
+               var toolbar, testResults, cntTotal, cntCalled, cntMissing;
+
+               cntTotal = util.keys( that.injectionTracker ).length;
+               cntCalled = util.keys( that.methodCallTracker ).length;
+               cntMissing = util.keys( that.missingTests ).length;
 
-       QUnit.done = function(){
-               that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_CHECK );
-               console.log( 'CompletenessTest.ACTION_CHECK', that );
+               function makeTestResults( blob, title, style ) {
+                       var elOutputWrapper, elTitle, elContainer, elList, elFoot;
 
-               // Build HTML representing the outcome from CompletenessTest
-               // And insert it into the header.
+                       elTitle = document.createElement( 'strong' );
+                       elTitle.textContent = title || 'Values';
 
-               var makeList = function( blob, title, style ) {
-                       title = title || 'Values';
-                       var html = '<strong>' + mw.html.escape(title) + '</strong>';
-                       $.each( blob, function( key ) {
-                               html += '<br />' + mw.html.escape(key);
+                       elList = document.createElement( 'ul' );
+                       util.each( blob, function ( key ) {
+                               var elItem = document.createElement( 'li' );
+                               elItem.textContent = key;
+                               elList.appendChild( elItem );
                        });
-                       html += '<br /><br /><em>&mdash; CompletenessTest</em>';
-                       var     $oldResult = $( '#qunit-completenesstest' ),
-                               $result = $oldResult.length ? $oldResult : $( '<div id="qunit-completenesstest"></div>' );
-                       return $result.css( style ).html( html );
-               };
 
-               if ( $.isEmptyObject( that.missingTests ) ) {
+                       elFoot = document.createElement( 'p' );
+                       elFoot.innerHTML = '<em>&mdash; CompletenessTest</em>';
+
+                       elContainer = document.createElement( 'div' );
+                       elContainer.appendChild( elTitle );
+                       elContainer.appendChild( elList );
+                       elContainer.appendChild( elFoot );
+
+                       elOutputWrapper = document.getElementById( 'qunit-completenesstest' );
+                       if ( !elOutputWrapper ) {
+                               elOutputWrapper = document.createElement( 'div' );
+                               elOutputWrapper.id = 'qunit-completenesstest';
+                       }
+                       elOutputWrapper.appendChild( elContainer );
+
+                       util.each( style, function ( key, value ) {
+                               elOutputWrapper.style[key] = value;
+                       });
+                       return elOutputWrapper;
+               }
+
+               if ( cntMissing === 0 ) {
                        // Good
-                       var $testResults = makeList(
-                               { 'No missing tests!': true },
-                               'missingTests',
+                       testResults = makeTestResults(
+                               {},
+                               'Detected calls to ' + cntCalled + '/' + cntTotal + ' methods. No missing tests!',
                                {
-                                       background: '#D2E0E6',
+                                       backgroundColor: '#D2E0E6',
                                        color: '#366097',
-                                       padding: '1em'
+                                       paddingTop: '1em',
+                                       paddingRight: '1em',
+                                       paddingBottom: '1em',
+                                       paddingLeft: '1em'
                                }
                        );
                } else {
                        // Bad
-                       var $testResults = makeList(
+                       testResults = makeTestResults(
                                that.missingTests,
-                               'missingTests',
+                               'Detected calls to ' + cntCalled + '/' + cntTotal + ' methods. ' + cntMissing + ' methods not covered:',
                                {
-                                       background: '#EE5757',
+                                       backgroundColor: '#EE5757',
                                        color: 'black',
-                                       padding: '1em'
+                                       paddingTop: '1em',
+                                       paddingRight: '1em',
+                                       paddingBottom: '1em',
+                                       paddingLeft: '1em'
                                }
                        );
                }
 
-               $( '#qunit-testrunner-toolbar' ).prepend( $testResults );
-       };
+               toolbar = document.getElementById( 'qunit-testrunner-toolbar' );
+               if ( toolbar ) {
+                       toolbar.insertBefore( testResults, toolbar.firstChild );
+               }
+       });
 
        return this;
 };
@@ -106,7 +208,7 @@ CompletenessTest.ACTION_CHECK = 501;
 CompletenessTest.fn = CompletenessTest.prototype = {
 
        /**
-        * CompletenessTest.fn.checkTests
+        * CompletenessTest.fn.walkTheObject
         *
         * This function recursively walks through the given object, calling itself as it goes.
         * Depending on the action it either injects our listener into the methods, or
@@ -121,92 +223,86 @@ CompletenessTest.fn = CompletenessTest.prototype = {
         *  masterVariable. Not including currName.
         * @param action {Number} What is this function supposed to do (ACTION_INJECT or ACTION_CHECK)
         */
-       checkTests: function( currName, currVar, masterVariable, parentPathArray, action ) {
-
-               // Handle the lazy limit
-               this.lazyCounter++;
-               if ( this.lazyCounter > this.lazyLimit ) {
-                       console.log( 'CompletenessTest.fn.checkTests> Limit reached: ' + this.lazyCounter );
-                       return null;
-               }
+       walkTheObject: function ( currName, currVar, masterVariable, parentPathArray, action ) {
 
-               var     type = $.type( currVar ),
+               var key, value, tmpPathArray,
+                       type = util.type( currVar ),
                        that = this;
 
                // Hard ignores
                if ( this.ignoreFn( currVar, that, parentPathArray ) ) {
                        return null;
+               }
 
-               // Functions
-               } else  if ( type === 'function' ) {
-
-                       /* CHECK MODE */
-
-                       if ( action === CompletenessTest.ACTION_CHECK ) {
-
-                               if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
-
-                                       that.hasTest( parentPathArray.join( '.' ) );
+               // Handle the lazy limit
+               this.lazyCounter++;
+               if ( this.lazyCounter > this.lazyLimit ) {
+                       log( 'CompletenessTest.fn.walkTheObject> Limit reached: ' + this.lazyCounter, parentPathArray );
+                       return null;
+               }
 
-                               // We don't support checking object constructors yet...
-                               } else {
+               // Functions
+               if ( type === 'function' ) {
 
-                                       // ...the prototypes are fine tho
-                                       $.each( currVar.prototype, function( key, value ) {
-                                               if ( key === 'constructor' ) return;
+                       if ( !currVar.prototype || util.isEmptyObject( currVar.prototype ) ) {
 
-                                               // Clone and break reference to parentPathArray
-                                               var tmpPathArray = $.extend( [], parentPathArray );
-                                               tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
+                               if ( action === CompletenessTest.ACTION_INJECT ) {
 
-                                               that.hasTest( tmpPathArray.join( '.' ) );
+                                       that.injectionTracker[ parentPathArray.join( '.' ) ] = true;
+                                       that.injectCheck( masterVariable, parentPathArray, function () {
+                                               that.methodCallTracker[ parentPathArray.join( '.' ) ] = true;
                                        } );
                                }
 
-                       /* INJECT MODE */
-
-                       } else if ( action === CompletenessTest.ACTION_INJECT ) {
+                       // We don't support checking object constructors yet...
+                       // ...we can check the prototypes fine, though.
+                       } else {
+                               if ( action === CompletenessTest.ACTION_INJECT ) {
 
-                               if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
+                                       for ( key in currVar.prototype ) {
+                                               if ( hasOwn.call( currVar.prototype, key ) ) {
+                                                       value = currVar.prototype[key];
+                                                       if ( key === 'constructor' ) {
+                                                               continue;
+                                                       }
 
-                                       // Inject check
-                                       that.injectCheck( masterVariable, parentPathArray, function() {
-                                               that.methodCallTracker[ parentPathArray.join( '.' ) ] = true;
-                                       } );
+                                                       // Clone and break reference to parentPathArray
+                                                       tmpPathArray = util.extend( [], parentPathArray );
+                                                       tmpPathArray.push( 'prototype' );
+                                                       tmpPathArray.push( key );
 
-                               // We don't support checking object constructors yet...
-                               } else {
+                                                       that.walkTheObject( key, value, masterVariable, tmpPathArray, action );
+                                               }
+                                       }
 
-                                       // ... the prototypes are fine tho
-                                       $.each( currVar.prototype, function( key, value ) {
-                                               if ( key === 'constructor' ) return;
-
-                                               // Clone and break reference to parentPathArray
-                                               var tmpPathArray = $.extend( [], parentPathArray );
-                                               tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
-
-                                               that.checkTests( key, value, masterVariable, tmpPathArray, action );
-                                       } );
                                }
-
                        }
 
-               // Recursively. After all, this *is* the completeness test
-               } else if ( type === 'object' ) {
-
-                       $.each( currVar, function( key, value ) {
-
-                               // Clone and break reference to parentPathArray
-                               var tmpPathArray = $.extend( [], parentPathArray );
-                               tmpPathArray.push( key );
+               }
 
-                               that.checkTests( key, value, masterVariable, tmpPathArray, action );
+               // Recursively. After all, this is the *completeness* test
+               if ( type === 'function' || type === 'object' ) {
+                       for ( key in currVar ) {
+                               if ( hasOwn.call( currVar, key ) ) {
+                                       value = currVar[key];
 
-                       } );
+                                       // Clone and break reference to parentPathArray
+                                       tmpPathArray = util.extend( [], parentPathArray );
+                                       tmpPathArray.push( key );
 
+                                       that.walkTheObject( key, value, masterVariable, tmpPathArray, action );
+                               }
+                       }
                }
        },
 
+       populateMissingTests: function () {
+               var ct = this;
+               util.each( ct.injectionTracker, function ( key ) {
+                       ct.hasTest( key );
+               });
+       },
+
        /**
         * CompletenessTest.fn.hasTest
         *
@@ -217,7 +313,7 @@ CompletenessTest.fn = CompletenessTest.prototype = {
         * @param fnName {String}
         * @return {Boolean}
         */
-       hasTest: function( fnName ) {
+       hasTest: function ( fnName ) {
                if ( !( fnName in this.methodCallTracker ) ) {
                        this.missingTests[fnName] = true;
                        return false;
@@ -235,19 +331,24 @@ CompletenessTest.fn = CompletenessTest.prototype = {
         * @param objectPathArray {Array}
         * @param injectFn {Function}
         */
-       injectCheck: function( masterVariable, objectPathArray, injectFn ) {
-               var     prev,
-                       curr = masterVariable,
-                       lastMember;
+       injectCheck: function ( masterVariable, objectPathArray, injectFn ) {
+               var i, len, prev, memberName, lastMember,
+                       curr = masterVariable;
+
+               // Get the object in question through the path from the master variable,
+               // We can't pass the value directly because we need to re-define the object
+               // member and keep references to the parent object, member name and member
+               // value at all times.
+               for ( i = 0, len = objectPathArray.length; i < len; i++ ) {
+                       memberName = objectPathArray[i];
 
-               $.each( objectPathArray, function( i, memberName ) {
                        prev = curr;
                        curr = prev[memberName];
                        lastMember = memberName;
-               });
+               }
 
                // Objects are by reference, members (unless objects) are not.
-               prev[lastMember] = function() {
+               prev[lastMember] = function () {
                        injectFn();
                        return curr.apply( this, arguments );
                };
index b948bae..5b1af33 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * QUnit v1.5.0 - A JavaScript Unit Testing Framework
+ * QUnit v1.7.0 - A JavaScript Unit Testing Framework
  *
  * http://docs.jquery.com/QUnit
  *
@@ -56,6 +56,7 @@
 
 #qunit-header label {
        display: inline-block;
+       padding-left: 0.5em;
 }
 
 #qunit-banner {
index 66dd721..7805abc 100644 (file)
@@ -1,5 +1,5 @@
 /**
- * QUnit v1.5.0 - A JavaScript Unit Testing Framework
+ * QUnit v1.7.0 - A JavaScript Unit Testing Framework
  *
  * http://docs.jquery.com/QUnit
  *
@@ -8,75 +8,88 @@
  * or GPL (GPL-LICENSE.txt) licenses.
  */
 
-(function(window) {
+(function( window ) {
 
-var defined = {
+var QUnit,
+       config,
+       testId = 0,
+       fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""),
+       toString = Object.prototype.toString,
+       hasOwn = Object.prototype.hasOwnProperty,
+       defined = {
        setTimeout: typeof window.setTimeout !== "undefined",
        sessionStorage: (function() {
                var x = "qunit-test-string";
                try {
-                       sessionStorage.setItem(x, x);
-                       sessionStorage.removeItem(x);
+                       sessionStorage.setItem( x, x );
+                       sessionStorage.removeItem( x );
                        return true;
-               } catch(e) {
+               } catch( e ) {
                        return false;
                }
        }())
 };
 
-var    testId = 0,
-       toString = Object.prototype.toString,
-       hasOwn = Object.prototype.hasOwnProperty;
-
-var Test = function(name, testName, expected, async, callback) {
-       this.name = name;
-       this.testName = testName;
-       this.expected = expected;
-       this.async = async;
-       this.callback = callback;
+function Test( settings ) {
+       extend( this, settings );
        this.assertions = [];
-};
+       this.testNumber = ++Test.count;
+}
+
+Test.count = 0;
+
 Test.prototype = {
        init: function() {
-               var tests = id("qunit-tests");
-               if (tests) {
-                       var b = document.createElement("strong");
-                               b.innerHTML = "Running " + this.name;
-                       var li = document.createElement("li");
-                               li.appendChild( b );
-                               li.className = "running";
-                               li.id = this.id = "test-output" + testId++;
+               var a, b, li,
+        tests = id( "qunit-tests" );
+
+               if ( tests ) {
+                       b = document.createElement( "strong" );
+                       b.innerHTML = this.name;
+
+                       // `a` initialized at top of scope
+                       a = document.createElement( "a" );
+                       a.innerHTML = "Rerun";
+                       a.href = QUnit.url({ testNumber: this.testNumber });
+
+                       li = document.createElement( "li" );
+                       li.appendChild( b );
+                       li.appendChild( a );
+                       li.className = "running";
+                       li.id = this.id = "qunit-test-output" + testId++;
+
                        tests.appendChild( li );
                }
        },
        setup: function() {
-               if (this.module != config.previousModule) {
+               if ( this.module !== config.previousModule ) {
                        if ( config.previousModule ) {
-                               runLoggingCallbacks('moduleDone', QUnit, {
+                               runLoggingCallbacks( "moduleDone", QUnit, {
                                        name: config.previousModule,
                                        failed: config.moduleStats.bad,
                                        passed: config.moduleStats.all - config.moduleStats.bad,
                                        total: config.moduleStats.all
-                               } );
+                               });
                        }
                        config.previousModule = this.module;
                        config.moduleStats = { all: 0, bad: 0 };
-                       runLoggingCallbacks( 'moduleStart', QUnit, {
+                       runLoggingCallbacks( "moduleStart", QUnit, {
                                name: this.module
-                       } );
-               } else if (config.autorun) {
-                       runLoggingCallbacks( 'moduleStart', QUnit, {
+                       });
+               } else if ( config.autorun ) {
+                       runLoggingCallbacks( "moduleStart", QUnit, {
                                name: this.module
-                       } );
+                       });
                }
 
                config.current = this;
+
                this.testEnvironment = extend({
                        setup: function() {},
                        teardown: function() {}
-               }, this.moduleTestEnvironment);
+               }, this.moduleTestEnvironment );
 
-               runLoggingCallbacks( 'testStart', QUnit, {
+               runLoggingCallbacks( "testStart", QUnit, {
                        name: this.testName,
                        module: this.module
                });
@@ -89,19 +102,19 @@ Test.prototype = {
                        saveGlobal();
                }
                if ( config.notrycatch ) {
-                       this.testEnvironment.setup.call(this.testEnvironment);
+                       this.testEnvironment.setup.call( this.testEnvironment );
                        return;
                }
                try {
-                       this.testEnvironment.setup.call(this.testEnvironment);
-               } catch(e) {
+                       this.testEnvironment.setup.call( this.testEnvironment );
+               } catch( e ) {
                        QUnit.pushFailure( "Setup failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
                }
        },
        run: function() {
                config.current = this;
 
-               var running = id("qunit-testresult");
+               var running = id( "qunit-testresult" );
 
                if ( running ) {
                        running.innerHTML = "Running: <br/>" + this.name;
@@ -112,13 +125,14 @@ Test.prototype = {
                }
 
                if ( config.notrycatch ) {
-                       this.callback.call(this.testEnvironment);
+                       this.callback.call( this.testEnvironment, QUnit.assert );
                        return;
                }
+
                try {
-                       this.callback.call(this.testEnvironment);
-               } catch(e) {
-                       QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + ": " + e.message, extractStacktrace( e, 1 ) );
+                       this.callback.call( this.testEnvironment, QUnit.assert );
+               } catch( e ) {
+                       QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + e.message, extractStacktrace( e, 0 ) );
                        // else next test will carry the responsibility
                        saveGlobal();
 
@@ -131,12 +145,12 @@ Test.prototype = {
        teardown: function() {
                config.current = this;
                if ( config.notrycatch ) {
-                       this.testEnvironment.teardown.call(this.testEnvironment);
+                       this.testEnvironment.teardown.call( this.testEnvironment );
                        return;
                } else {
                        try {
-                               this.testEnvironment.teardown.call(this.testEnvironment);
-                       } catch(e) {
+                               this.testEnvironment.teardown.call( this.testEnvironment );
+                       } catch( e ) {
                                QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + e.message, extractStacktrace( e, 1 ) );
                        }
                }
@@ -144,28 +158,32 @@ Test.prototype = {
        },
        finish: function() {
                config.current = this;
-               if ( this.expected != null && this.expected != this.assertions.length ) {
-                       QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" );
+               if ( config.requireExpects && this.expected == null ) {
+                       QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack );
+               } else if ( this.expected != null && this.expected != this.assertions.length ) {
+                       QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack );
                } else if ( this.expected == null && !this.assertions.length ) {
-                       QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions." );
+                       QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack );
                }
 
-               var good = 0, bad = 0,
-                       li, i,
-                       tests = id("qunit-tests");
+               var assertion, a, b, i, li, ol,
+                       test = this,
+                       good = 0,
+                       bad = 0,
+                       tests = id( "qunit-tests" );
 
                config.stats.all += this.assertions.length;
                config.moduleStats.all += this.assertions.length;
 
                if ( tests ) {
-                       var ol = document.createElement("ol");
+                       ol = document.createElement( "ol" );
 
                        for ( i = 0; i < this.assertions.length; i++ ) {
-                               var assertion = this.assertions[i];
+                               assertion = this.assertions[i];
 
-                               li = document.createElement("li");
+                               li = document.createElement( "li" );
                                li.className = assertion.result ? "pass" : "fail";
-                               li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed");
+                               li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" );
                                ol.appendChild( li );
 
                                if ( assertion.result ) {
@@ -179,45 +197,44 @@ Test.prototype = {
 
                        // store result when possible
                        if ( QUnit.config.reorder && defined.sessionStorage ) {
-                               if (bad) {
-                                       sessionStorage.setItem("qunit-test-" + this.module + "-" + this.testName, bad);
+                               if ( bad ) {
+                                       sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad );
                                } else {
-                                       sessionStorage.removeItem("qunit-test-" + this.module + "-" + this.testName);
+                                       sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName );
                                }
                        }
 
-                       if (bad === 0) {
+                       if ( bad === 0 ) {
                                ol.style.display = "none";
                        }
 
-                       var b = document.createElement("strong");
+                       // `b` initialized at top of scope
+                       b = document.createElement( "strong" );
                        b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
 
-                       var a = document.createElement("a");
-                       a.innerHTML = "Rerun";
-                       a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
-
                        addEvent(b, "click", function() {
                                var next = b.nextSibling.nextSibling,
                                        display = next.style.display;
                                next.style.display = display === "none" ? "block" : "none";
                        });
 
-                       addEvent(b, "dblclick", function(e) {
+                       addEvent(b, "dblclick", function( e ) {
                                var target = e && e.target ? e.target : window.event.srcElement;
                                if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
                                        target = target.parentNode;
                                }
                                if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
-                                       window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
+                                       window.location = QUnit.url({ testNumber: test.testNumber });
                                }
                        });
 
-                       li = id(this.id);
+                       // `li` initialized at top of scope
+                       li = id( this.id );
                        li.className = bad ? "fail" : "pass";
                        li.removeChild( li.firstChild );
+                       a = li.firstChild;
                        li.appendChild( b );
-                       li.appendChild( a );
+                       li.appendChild ( a );
                        li.appendChild( ol );
 
                } else {
@@ -230,19 +247,21 @@ Test.prototype = {
                        }
                }
 
-               QUnit.reset();
-
-               runLoggingCallbacks( 'testDone', QUnit, {
+               runLoggingCallbacks( "testDone", QUnit, {
                        name: this.testName,
                        module: this.module,
                        failed: bad,
                        passed: this.assertions.length - bad,
                        total: this.assertions.length
-               } );
+               });
+
+               QUnit.reset();
        },
 
        queue: function() {
-               var test = this;
+               var bad,
+                       test = this;
+
                synchronize(function() {
                        test.init();
                });
@@ -261,36 +280,42 @@ Test.prototype = {
                                test.finish();
                        });
                }
+
+               // `bad` initialized at top of scope
                // defer when previous test run passed, if storage is available
-               var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-test-" + this.module + "-" + this.testName);
-               if (bad) {
+               bad = QUnit.config.reorder && defined.sessionStorage &&
+                                               +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName );
+
+               if ( bad ) {
                        run();
                } else {
-                       synchronize(run, true);
+                       synchronize( run, true );
                }
        }
-
 };
 
-var QUnit = {
+// Root QUnit object.
+// `QUnit` initialized at top of scope
+QUnit = {
 
        // call on start of module test to prepend name to all tests
-       module: function(name, testEnvironment) {
+       module: function( name, testEnvironment ) {
                config.currentModule = name;
                config.currentModuleTestEnviroment = testEnvironment;
        },
 
-       asyncTest: function(testName, expected, callback) {
+       asyncTest: function( testName, expected, callback ) {
                if ( arguments.length === 2 ) {
                        callback = expected;
                        expected = null;
                }
 
-               QUnit.test(testName, expected, callback, true);
+               QUnit.test( testName, expected, callback, true );
        },
 
-       test: function(testName, expected, callback, async) {
-               var name = '<span class="test-name">' + escapeInnerText(testName) + '</span>';
+       test: function( testName, expected, callback, async ) {
+               var test,
+                       name = "<span class='test-name'>" + escapeInnerText( testName ) + "</span>";
 
                if ( arguments.length === 2 ) {
                        callback = expected;
@@ -298,173 +323,207 @@ var QUnit = {
                }
 
                if ( config.currentModule ) {
-                       name = '<span class="module-name">' + config.currentModule + "</span>: " + name;
-               }
+                       name = "<span class='module-name'>" + config.currentModule + "</span>: " + name;
+               }
+
+               test = new Test({
+                       name: name,
+                       testName: testName,
+                       expected: expected,
+                       async: async,
+                       callback: callback,
+                       module: config.currentModule,
+                       moduleTestEnvironment: config.currentModuleTestEnviroment,
+                       stack: sourceFromStacktrace( 2 )
+               });
 
-               if ( !validTest(config.currentModule + ": " + testName) ) {
+               if ( !validTest( test ) ) {
                        return;
                }
 
-               var test = new Test(name, testName, expected, async, callback);
-               test.module = config.currentModule;
-               test.moduleTestEnvironment = config.currentModuleTestEnviroment;
                test.queue();
        },
 
        // Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
-       expect: function(asserts) {
+       expect: function( asserts ) {
                config.current.expected = asserts;
        },
 
-       // Asserts true.
-       // @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
-       ok: function(result, msg) {
-               if (!config.current) {
-                       throw new Error("ok() assertion outside test context, was " + sourceFromStacktrace(2));
+       start: function( count ) {
+               config.semaphore -= count || 1;
+               // don't start until equal number of stop-calls
+               if ( config.semaphore > 0 ) {
+                       return;
+               }
+               // ignore if start is called more often then stop
+               if ( config.semaphore < 0 ) {
+                       config.semaphore = 0;
+               }
+               // A slight delay, to avoid any current callbacks
+               if ( defined.setTimeout ) {
+                       window.setTimeout(function() {
+                               if ( config.semaphore > 0 ) {
+                                       return;
+                               }
+                               if ( config.timeout ) {
+                                       clearTimeout( config.timeout );
+                               }
+
+                               config.blocking = false;
+                               process( true );
+                       }, 13);
+               } else {
+                       config.blocking = false;
+                       process( true );
+               }
+       },
+
+       stop: function( count ) {
+               config.semaphore += count || 1;
+               config.blocking = true;
+
+               if ( config.testTimeout && defined.setTimeout ) {
+                       clearTimeout( config.timeout );
+                       config.timeout = window.setTimeout(function() {
+                               QUnit.ok( false, "Test timed out" );
+                               config.semaphore = 1;
+                               QUnit.start();
+                       }, config.testTimeout );
+               }
+       }
+};
+
+// Asssert helpers
+// All of these must call either QUnit.push() or manually do:
+// - runLoggingCallbacks( "log", .. );
+// - config.current.assertions.push({ .. });
+QUnit.assert = {
+       /**
+        * Asserts rough true-ish result.
+        * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
+        */
+       ok: function( result, msg ) {
+               if ( !config.current ) {
+                       throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) );
                }
                result = !!result;
-               var details = {
-                       result: result,
-                       message: msg
-               };
-               msg = escapeInnerText(msg || (result ? "okay" : "failed"));
+
+               var source,
+                       details = {
+                               result: result,
+                               message: msg
+                       };
+
+               msg = escapeInnerText( msg || (result ? "okay" : "failed" ) );
+               msg = "<span class='test-message'>" + msg + "</span>";
+
                if ( !result ) {
-                       var source = sourceFromStacktrace(2);
-                       if (source) {
+                       source = sourceFromStacktrace( 2 );
+                       if ( source ) {
                                details.source = source;
-                               msg += '<table><tr class="test-source"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';
+                               msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
                        }
                }
-               runLoggingCallbacks( 'log', QUnit, details );
+               runLoggingCallbacks( "log", QUnit, details );
                config.current.assertions.push({
                        result: result,
                        message: msg
                });
        },
 
-       // Checks that the first two arguments are equal, with an optional message. Prints out both actual and expected values.
-       // @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
-       equal: function(actual, expected, message) {
-               QUnit.push(expected == actual, actual, expected, message);
+       /**
+        * Assert that the first two arguments are equal, with an optional message.
+        * Prints out both actual and expected values.
+        * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" );
+        */
+       equal: function( actual, expected, message ) {
+               QUnit.push( expected == actual, actual, expected, message );
        },
 
-       notEqual: function(actual, expected, message) {
-               QUnit.push(expected != actual, actual, expected, message);
+       notEqual: function( actual, expected, message ) {
+               QUnit.push( expected != actual, actual, expected, message );
        },
 
-       deepEqual: function(actual, expected, message) {
-               QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
+       deepEqual: function( actual, expected, message ) {
+               QUnit.push( QUnit.equiv(actual, expected), actual, expected, message );
        },
 
-       notDeepEqual: function(actual, expected, message) {
-               QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);
+       notDeepEqual: function( actual, expected, message ) {
+               QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message );
        },
 
-       strictEqual: function(actual, expected, message) {
-               QUnit.push(expected === actual, actual, expected, message);
+       strictEqual: function( actual, expected, message ) {
+               QUnit.push( expected === actual, actual, expected, message );
        },
 
-       notStrictEqual: function(actual, expected, message) {
-               QUnit.push(expected !== actual, actual, expected, message);
+       notStrictEqual: function( actual, expected, message ) {
+               QUnit.push( expected !== actual, actual, expected, message );
        },
 
-       raises: function(block, expected, message) {
-               var actual, ok = false;
+       raises: function( block, expected, message ) {
+               var actual,
+                       ok = false;
 
-               if (typeof expected === 'string') {
+               if ( typeof expected === "string" ) {
                        message = expected;
                        expected = null;
                }
 
                try {
-                       block.call(config.current.testEnvironment);
+                       block.call( config.current.testEnvironment );
                } catch (e) {
                        actual = e;
                }
 
-               if (actual) {
+               if ( actual ) {
                        // we don't want to validate thrown error
-                       if (!expected) {
+                       if ( !expected ) {
                                ok = true;
                        // expected is a regexp
-                       } else if (QUnit.objectType(expected) === "regexp") {
-                               ok = expected.test(actual);
+                       } else if ( QUnit.objectType( expected ) === "regexp" ) {
+                               ok = expected.test( actual );
                        // expected is a constructor
-                       } else if (actual instanceof expected) {
+                       } else if ( actual instanceof expected ) {
                                ok = true;
                        // expected is a validation function which returns true is validation passed
-                       } else if (expected.call({}, actual) === true) {
+                       } else if ( expected.call( {}, actual ) === true ) {
                                ok = true;
                        }
                }
 
-               QUnit.ok(ok, message);
-       },
-
-       start: function(count) {
-               config.semaphore -= count || 1;
-               if (config.semaphore > 0) {
-                       // don't start until equal number of stop-calls
-                       return;
-               }
-               if (config.semaphore < 0) {
-                       // ignore if start is called more often then stop
-                       config.semaphore = 0;
-               }
-               // A slight delay, to avoid any current callbacks
-               if ( defined.setTimeout ) {
-                       window.setTimeout(function() {
-                               if (config.semaphore > 0) {
-                                       return;
-                               }
-                               if ( config.timeout ) {
-                                       clearTimeout(config.timeout);
-                               }
-
-                               config.blocking = false;
-                               process(true);
-                       }, 13);
-               } else {
-                       config.blocking = false;
-                       process(true);
-               }
-       },
+               QUnit.push( ok, actual, null, message );
+       }
+};
 
-       stop: function(count) {
-               config.semaphore += count || 1;
-               config.blocking = true;
+// @deprecated: Kept assertion helpers in root for backwards compatibility
+extend( QUnit, QUnit.assert );
 
-               if ( config.testTimeout && defined.setTimeout ) {
-                       clearTimeout(config.timeout);
-                       config.timeout = window.setTimeout(function() {
-                               QUnit.ok( false, "Test timed out" );
-                               config.semaphore = 1;
-                               QUnit.start();
-                       }, config.testTimeout);
-               }
-       }
+/**
+ * @deprecated: Kept for backwards compatibility
+ * next step: remove entirely
+ */
+QUnit.equals = function() {
+       QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" );
+};
+QUnit.same = function() {
+       QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" );
 };
 
-//We want access to the constructor's prototype
+// We want access to the constructor's prototype
 (function() {
-       function F(){}
+       function F() {}
        F.prototype = QUnit;
        QUnit = new F();
-       //Make F QUnit's constructor so that we can add to the prototype later
+       // Make F QUnit's constructor so that we can add to the prototype later
        QUnit.constructor = F;
 }());
 
-// deprecated; still export them to window to provide clear error messages
-// next step: remove entirely
-QUnit.equals = function() {
-       QUnit.push(false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead");
-};
-QUnit.same = function() {
-       QUnit.push(false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead");
-};
-
-// Maintain internal state
-var config = {
+/**
+ * Config object: Maintain internal state
+ * Later exposed as QUnit.config
+ * `config` initialized at top of scope
+ */
+config = {
        // The queue of tests to run
        queue: [],
 
@@ -482,9 +541,12 @@ var config = {
        // by default, modify document.title when suite is done
        altertitle: true,
 
-       urlConfig: ['noglobals', 'notrycatch'],
+       // when enabled, all tests must call expect()
+       requireExpects: false,
+
+       urlConfig: [ "noglobals", "notrycatch" ],
 
-       //logging callback queues
+       // logging callback queues
        begin: [],
        done: [],
        log: [],
@@ -494,16 +556,17 @@ var config = {
        moduleDone: []
 };
 
-// Load paramaters
+// Initialize more QUnit.config and QUnit.urlParams
 (function() {
-       var location = window.location || { search: "", protocol: "file:" },
+       var i,
+               location = window.location || { search: "", protocol: "file:" },
                params = location.search.slice( 1 ).split( "&" ),
                length = params.length,
                urlParams = {},
                current;
 
        if ( params[ 0 ] ) {
-               for ( var i = 0; i < length; i++ ) {
+               for ( i = 0; i < length; i++ ) {
                        current = params[ i ].split( "=" );
                        current[ 0 ] = decodeURIComponent( current[ 0 ] );
                        // allow just a key to turn on a flag, e.g., test.html?noglobals
@@ -514,25 +577,29 @@ var config = {
 
        QUnit.urlParams = urlParams;
        config.filter = urlParams.filter;
+       config.testNumber = parseInt( urlParams.testNumber, 10 ) || null;
 
        // Figure out if we're running the tests from a server or not
-       QUnit.isLocal = location.protocol === 'file:';
+       QUnit.isLocal = location.protocol === "file:";
 }());
 
-// Expose the API as global variables, unless an 'exports'
-// object exists, in that case we assume we're in CommonJS - export everything at the end
-if ( typeof exports === "undefined" || typeof require === "undefined" ) {
-       extend(window, QUnit);
+// Export global variables, unless an 'exports' object exists,
+// in that case we assume we're in CommonJS (dealt with on the bottom of the script)
+if ( typeof exports === "undefined" ) {
+       extend( window, QUnit );
+
+       // Expose QUnit object
        window.QUnit = QUnit;
 }
 
-// define these after exposing globals to keep them in these QUnit namespace only
-extend(QUnit, {
+// Extend QUnit object,
+// these after set here because they should not be exposed as global functions
+extend( QUnit, {
        config: config,
 
        // Initialize the configuration options
        init: function() {
-               extend(config, {
+               extend( config, {
                        stats: { all: 0, bad: 0 },
                        moduleStats: { all: 0, bad: 0 },
                        started: +new Date(),
@@ -545,19 +612,21 @@ extend(QUnit, {
                        semaphore: 0
                });
 
-               var qunit = id( "qunit" );
+               var tests, banner, result,
+                       qunit = id( "qunit" );
+
                if ( qunit ) {
                        qunit.innerHTML =
-                               '<h1 id="qunit-header">' + escapeInnerText( document.title ) + '</h1>' +
-                               '<h2 id="qunit-banner"></h2>' +
-                               '<div id="qunit-testrunner-toolbar"></div>' +
-                               '<h2 id="qunit-userAgent"></h2>' +
-                               '<ol id="qunit-tests"></ol>';
+                               "<h1 id='qunit-header'>" + escapeInnerText( document.title ) + "</h1>" +
+                               "<h2 id='qunit-banner'></h2>" +
+                               "<div id='qunit-testrunner-toolbar'></div>" +
+                               "<h2 id='qunit-userAgent'></h2>" +
+                               "<ol id='qunit-tests'></ol>";
                }
 
-               var tests = id( "qunit-tests" ),
-                       banner = id( "qunit-banner" ),
-                       result = id( "qunit-testresult" );
+               tests = id( "qunit-tests" );
+               banner = id( "qunit-banner" );
+               result = id( "qunit-testresult" );
 
                if ( tests ) {
                        tests.innerHTML = "";
@@ -576,19 +645,21 @@ extend(QUnit, {
                        result.id = "qunit-testresult";
                        result.className = "result";
                        tests.parentNode.insertBefore( result, tests );
-                       result.innerHTML = 'Running...<br/>&nbsp;';
+                       result.innerHTML = "Running...<br/>&nbsp;";
                }
        },
 
        // Resets the test setup. Useful for tests that modify the DOM.
        // If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
        reset: function() {
+               var fixture;
+
                if ( window.jQuery ) {
                        jQuery( "#qunit-fixture" ).html( config.fixture );
                } else {
-                       var main = id( 'qunit-fixture' );
-                       if ( main ) {
-                               main.innerHTML = config.fixture;
+                       fixture = id( "qunit-fixture" );
+                       if ( fixture ) {
+                               fixture.innerHTML = config.fixture;
                        }
                }
        },
@@ -597,13 +668,13 @@ extend(QUnit, {
        // @example triggerEvent( document.body, "click" );
        triggerEvent: function( elem, type, event ) {
                if ( document.createEvent ) {
-                       event = document.createEvent("MouseEvents");
+                       event = document.createEvent( "MouseEvents" );
                        event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
                                0, 0, 0, 0, 0, false, false, false, false, 0, null);
-                       elem.dispatchEvent( event );
 
+                       elem.dispatchEvent( event );
                } else if ( elem.fireEvent ) {
-                       elem.fireEvent("on"+type);
+                       elem.fireEvent( "on" + type );
                }
        },
 
@@ -613,68 +684,74 @@ extend(QUnit, {
        },
 
        objectType: function( obj ) {
-               if (typeof obj === "undefined") {
+               if ( typeof obj === "undefined" ) {
                                return "undefined";
-
                // consider: typeof null === object
                }
-               if (obj === null) {
+               if ( obj === null ) {
                                return "null";
                }
 
-               var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || '';
+               var type = toString.call( obj ).match(/^\[object\s(.*)\]$/)[1] || "";
 
-               switch (type) {
-                       case 'Number':
-                               if (isNaN(obj)) {
+               switch ( type ) {
+                       case "Number":
+                               if ( isNaN(obj) ) {
                                        return "nan";
                                }
                                return "number";
-                       case 'String':
-                       case 'Boolean':
-                       case 'Array':
-                       case 'Date':
-                       case 'RegExp':
-                       case 'Function':
-                                       return type.toLowerCase();
+                       case "String":
+                       case "Boolean":
+                       case "Array":
+                       case "Date":
+                       case "RegExp":
+                       case "Function":
+                               return type.toLowerCase();
                }
-               if (typeof obj === "object") {
-                               return "object";
+               if ( typeof obj === "object" ) {
+                       return "object";
                }
                return undefined;
        },
 
-       push: function(result, actual, expected, message) {
-               if (!config.current) {
-                       throw new Error("assertion outside test context, was " + sourceFromStacktrace());
+       push: function( result, actual, expected, message ) {
+               if ( !config.current ) {
+                       throw new Error( "assertion outside test context, was " + sourceFromStacktrace() );
                }
-               var details = {
-                       result: result,
-                       message: message,
-                       actual: actual,
-                       expected: expected
-               };
 
-               message = escapeInnerText(message) || (result ? "okay" : "failed");
-               message = '<span class="test-message">' + message + "</span>";
-               var output = message;
-               if (!result) {
-                       expected = escapeInnerText(QUnit.jsDump.parse(expected));
-                       actual = escapeInnerText(QUnit.jsDump.parse(actual));
-                       output += '<table><tr class="test-expected"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';
-                       if (actual != expected) {
-                               output += '<tr class="test-actual"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';
-                               output += '<tr class="test-diff"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';
+               var output, source,
+                       details = {
+                               result: result,
+                               message: message,
+                               actual: actual,
+                               expected: expected
+                       };
+
+               message = escapeInnerText( message ) || ( result ? "okay" : "failed" );
+               message = "<span class='test-message'>" + message + "</span>";
+               output = message;
+
+               if ( !result ) {
+                       expected = escapeInnerText( QUnit.jsDump.parse(expected) );
+                       actual = escapeInnerText( QUnit.jsDump.parse(actual) );
+                       output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>";
+
+                       if ( actual != expected ) {
+                               output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>";
+                               output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>";
                        }
-                       var source = sourceFromStacktrace();
-                       if (source) {
+
+                       source = sourceFromStacktrace();
+
+                       if ( source ) {
                                details.source = source;
-                               output += '<tr class="test-source"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr>';
+                               output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>";
                        }
+
                        output += "</table>";
                }
 
-               runLoggingCallbacks( 'log', QUnit, details );
+               runLoggingCallbacks( "log", QUnit, details );
 
                config.current.assertions.push({
                        result: !!result,
@@ -682,17 +759,24 @@ extend(QUnit, {
                });
        },
 
-       pushFailure: function(message, source) {
-               var details = {
-                       result: false,
-                       message: message
-               };
-               var output = escapeInnerText(message);
-               if (source) {
+       pushFailure: function( message, source ) {
+               var output,
+                       details = {
+                               result: false,
+                               message: message
+                       };
+
+               message = escapeInnerText(message ) || "error";
+               message = "<span class='test-message'>" + message + "</span>";
+               output = message;
+
+               if ( source ) {
                        details.source = source;
-                       output += '<table><tr class="test-source"><th>Source: </th><td><pre>' + escapeInnerText(source) + '</pre></td></tr></table>';
+                       output += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>";
                }
-               runLoggingCallbacks( 'log', QUnit, details );
+
+               runLoggingCallbacks( "log", QUnit, details );
+
                config.current.assertions.push({
                        result: false,
                        message: output
@@ -701,8 +785,9 @@ extend(QUnit, {
 
        url: function( params ) {
                params = extend( extend( {}, QUnit.urlParams ), params );
-               var querystring = "?",
-                       key;
+               var key,
+                       querystring = "?";
+
                for ( key in params ) {
                        if ( !hasOwn.call( params, key ) ) {
                                continue;
@@ -716,27 +801,39 @@ extend(QUnit, {
        extend: extend,
        id: id,
        addEvent: addEvent
+       // load, equiv, jsDump, diff: Attached later
 });
 
-//QUnit.constructor is set to the empty F() above so that we can add to it's prototype later
-//Doing this allows us to tell if the following methods have been overwritten on the actual
-//QUnit object, which is a deprecated way of using the callbacks.
-extend(QUnit.constructor.prototype, {
+/**
+ * @deprecated: Created for backwards compatibility with test runner that set the hook function
+ * into QUnit.{hook}, instead of invoking it and passing the hook function.
+ * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here.
+ * Doing this allows us to tell if the following methods have been overwritten on the actual
+ * QUnit object.
+ */
+extend( QUnit.constructor.prototype, {
+
        // Logging callbacks; all receive a single argument with the listed properties
        // run test/logs.html for any related changes
-       begin: registerLoggingCallback('begin'),
+       begin: registerLoggingCallback( "begin" ),
+
        // done: { failed, passed, total, runtime }
-       done: registerLoggingCallback('done'),
+       done: registerLoggingCallback( "done" ),
+
        // log: { result, actual, expected, message }
-       log: registerLoggingCallback('log'),
+       log: registerLoggingCallback( "log" ),
+
        // testStart: { name }
-       testStart: registerLoggingCallback('testStart'),
+       testStart: registerLoggingCallback( "testStart" ),
+
        // testDone: { name, failed, passed, total }
-       testDone: registerLoggingCallback('testDone'),
+       testDone: registerLoggingCallback( "testDone" ),
+
        // moduleStart: { name }
-       moduleStart: registerLoggingCallback('moduleStart'),
+       moduleStart: registerLoggingCallback( "moduleStart" ),
+
        // moduleDone: { name, failed, passed, total }
-       moduleDone: registerLoggingCallback('moduleDone')
+       moduleDone: registerLoggingCallback( "moduleDone" )
 });
 
 if ( typeof document === "undefined" || document.readyState === "complete" ) {
@@ -744,29 +841,36 @@ if ( typeof document === "undefined" || document.readyState === "complete" ) {
 }
 
 QUnit.load = function() {
-       runLoggingCallbacks( 'begin', QUnit, {} );
+       runLoggingCallbacks( "begin", QUnit, {} );
 
        // Initialize the config, saving the execution queue
-       var oldconfig = extend({}, config);
+       var banner, filter, i, label, len, main, ol, toolbar, userAgent, val,
+               urlConfigHtml = "",
+               oldconfig = extend( {}, config );
+
        QUnit.init();
        extend(config, oldconfig);
 
        config.blocking = false;
 
-       var urlConfigHtml = '', len = config.urlConfig.length;
-       for ( var i = 0, val; i < len; i++ ) {
+       len = config.urlConfig.length;
+
+       for ( i = 0; i < len; i++ ) {
                val = config.urlConfig[i];
                config[val] = QUnit.urlParams[val];
-               urlConfigHtml += '<label><input name="' + val + '" type="checkbox"' + ( config[val] ? ' checked="checked"' : '' ) + '>' + val + '</label>';
+               urlConfigHtml += "<label><input name='" + val + "' type='checkbox'" + ( config[val] ? " checked='checked'" : "" ) + ">" + val + "</label>";
        }
 
-       var userAgent = id("qunit-userAgent");
+       // `userAgent` initialized at top of scope
+       userAgent = id( "qunit-userAgent" );
        if ( userAgent ) {
                userAgent.innerHTML = navigator.userAgent;
        }
-       var banner = id("qunit-header");
+
+       // `banner` initialized at top of scope
+       banner = id( "qunit-header" );
        if ( banner ) {
-               banner.innerHTML = '<a href="' + QUnit.url({ filter: undefined }) + '"> ' + banner.innerHTML + '</a> ' + urlConfigHtml;
+               banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined }) + "'>" + banner.innerHTML + "</a> " + urlConfigHtml;
                addEvent( banner, "change", function( event ) {
                        var params = {};
                        params[ event.target.name ] = event.target.checked ? true : undefined;
@@ -774,53 +878,62 @@ QUnit.load = function() {
                });
        }
 
-       var toolbar = id("qunit-testrunner-toolbar");
+       // `toolbar` initialized at top of scope
+       toolbar = id( "qunit-testrunner-toolbar" );
        if ( toolbar ) {
-               var filter = document.createElement("input");
+               // `filter` initialized at top of scope
+               filter = document.createElement( "input" );
                filter.type = "checkbox";
                filter.id = "qunit-filter-pass";
+
                addEvent( filter, "click", function() {
-                       var ol = document.getElementById("qunit-tests");
+                       var tmp,
+                               ol = document.getElementById( "qunit-tests" );
+
                        if ( filter.checked ) {
                                ol.className = ol.className + " hidepass";
                        } else {
-                               var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
-                               ol.className = tmp.replace(/ hidepass /, " ");
+                               tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
+                               ol.className = tmp.replace( / hidepass /, " " );
                        }
                        if ( defined.sessionStorage ) {
                                if (filter.checked) {
-                                       sessionStorage.setItem("qunit-filter-passed-tests", "true");
+                                       sessionStorage.setItem( "qunit-filter-passed-tests", "true" );
                                } else {
-                                       sessionStorage.removeItem("qunit-filter-passed-tests");
+                                       sessionStorage.removeItem( "qunit-filter-passed-tests" );
                                }
                        }
                });
-               if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) {
+
+               if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) {
                        filter.checked = true;
-                       var ol = document.getElementById("qunit-tests");
+                       // `ol` initialized at top of scope
+                       ol = document.getElementById( "qunit-tests" );
                        ol.className = ol.className + " hidepass";
                }
                toolbar.appendChild( filter );
 
-               var label = document.createElement("label");
-               label.setAttribute("for", "qunit-filter-pass");
+               // `label` initialized at top of scope
+               label = document.createElement( "label" );
+               label.setAttribute( "for", "qunit-filter-pass" );
                label.innerHTML = "Hide passed tests";
                toolbar.appendChild( label );
        }
 
-       var main = id('qunit-fixture');
+       // `main` initialized at top of scope
+       main = id( "qunit-fixture" );
        if ( main ) {
                config.fixture = main.innerHTML;
        }
 
-       if (config.autostart) {
+       if ( config.autostart ) {
                QUnit.start();
        }
 };
 
-addEvent(window, "load", QUnit.load);
+addEvent( window, "load", QUnit.load );
 
-// addEvent(window, "error") gives us a useless event object
+// addEvent(window, "error" ) gives us a useless event object
 window.onerror = function( message, file, line ) {
        if ( QUnit.config.current ) {
                QUnit.pushFailure( message, file + ":" + line );
@@ -836,33 +949,34 @@ function done() {
 
        // Log the last module results
        if ( config.currentModule ) {
-               runLoggingCallbacks( 'moduleDone', QUnit, {
+               runLoggingCallbacks( "moduleDone", QUnit, {
                        name: config.currentModule,
                        failed: config.moduleStats.bad,
                        passed: config.moduleStats.all - config.moduleStats.bad,
                        total: config.moduleStats.all
-               } );
+               });
        }
 
-       var banner = id("qunit-banner"),
-               tests = id("qunit-tests"),
+       var i, key,
+               banner = id( "qunit-banner" ),
+               tests = id( "qunit-tests" ),
                runtime = +new Date() - config.started,
                passed = config.stats.all - config.stats.bad,
                html = [
-                       'Tests completed in ',
+                       "Tests completed in ",
                        runtime,
-                       ' milliseconds.<br/>',
-                       '<span class="passed">',
+                       " milliseconds.<br/>",
+                       "<span class='passed'>",
                        passed,
-                       '</span> tests of <span class="total">',
+                       "</span> tests of <span class='total'>",
                        config.stats.all,
-                       '</span> passed, <span class="failed">',
+                       "</span> passed, <span class='failed'>",
                        config.stats.bad,
-                       '</span> failed.'
-               ].join('');
+                       "</span> failed."
+               ].join( "" );
 
        if ( banner ) {
-               banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
+               banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" );
        }
 
        if ( tests ) {
@@ -873,70 +987,88 @@ function done() {
                // show ✖ for good, ✔ for bad suite result in title
                // use escape sequences in case file gets loaded with non-utf-8-charset
                document.title = [
-                       (config.stats.bad ? "\u2716" : "\u2714"),
-                       document.title.replace(/^[\u2714\u2716] /i, "")
-               ].join(" ");
+                       ( config.stats.bad ? "\u2716" : "\u2714" ),
+                       document.title.replace( /^[\u2714\u2716] /i, "" )
+               ].join( " " );
        }
 
        // clear own sessionStorage items if all tests passed
        if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) {
-               var key;
-               for ( var i = 0; i < sessionStorage.length; i++ ) {
+               // `key` & `i` initialized at top of scope
+               for ( i = 0; i < sessionStorage.length; i++ ) {
                        key = sessionStorage.key( i++ );
-                       if ( key.indexOf("qunit-test-") === 0 ) {
+                       if ( key.indexOf( "qunit-test-" ) === 0 ) {
                                sessionStorage.removeItem( key );
                        }
                }
        }
 
-       runLoggingCallbacks( 'done', QUnit, {
+       runLoggingCallbacks( "done", QUnit, {
                failed: config.stats.bad,
                passed: passed,
                total: config.stats.all,
                runtime: runtime
-       } );
+       });
 }
 
-function validTest( name ) {
-       var filter = config.filter,
-               run = false;
+function validTest( test ) {
+       var include,
+               filter = config.filter && config.filter.toLowerCase(),
+               fullName = (test.module + ": " + test.testName).toLowerCase();
+
+       if ( config.testNumber ) {
+               return test.testNumber === config.testNumber;
+       }
 
        if ( !filter ) {
                return true;
        }
 
-       var not = filter.charAt( 0 ) === "!";
-       if ( not ) {
+       include = filter.charAt( 0 ) !== "!";
+       if ( !include ) {
                filter = filter.slice( 1 );
        }
 
-       if ( name.indexOf( filter ) !== -1 ) {
-               return !not;
-       }
-
-       if ( not ) {
-               run = true;
+       // If the filter matches, we need to honour include
+       if ( fullName.indexOf( filter ) !== -1 ) {
+               return include;
        }
 
-       return run;
+       // Otherwise, do the opposite
+       return !include;
 }
 
 // so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions)
 // Later Safari and IE10 are supposed to support error.stack as well
 // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
 function extractStacktrace( e, offset ) {
-       offset = offset || 3;
-       if (e.stacktrace) {
+       offset = offset === undefined ? 3 : offset;
+
+       var stack, include, i, regex;
+
+       if ( e.stacktrace ) {
                // Opera
-               return e.stacktrace.split("\n")[offset + 3];
-       } else if (e.stack) {
+               return e.stacktrace.split( "\n" )[ offset + 3 ];
+       } else if ( e.stack ) {
                // Firefox, Chrome
-               var stack = e.stack.split("\n");
-               if (/^error$/i.test(stack[0])) {
+               stack = e.stack.split( "\n" );
+               if (/^error$/i.test( stack[0] ) ) {
                        stack.shift();
                }
-               return stack[offset];
-       } else if (e.sourceURL) {
+               if ( fileName ) {
+                       include = [];
+                       for ( i = offset; i < stack.length; i++ ) {
+                               if ( stack[ i ].indexOf( fileName ) != -1 ) {
+                                       break;
+                               }
+                               include.push( stack[ i ] );
+                       }
+                       if ( include.length ) {
+                               return include.join( "\n" );
+                       }
+               }
+               return stack[ offset ];
+       } else if ( e.sourceURL ) {
                // Safari, PhantomJS
                // hopefully one day Safari provides actual stacktraces
                // exclude useless self-reference for generated Error objects
@@ -947,7 +1079,7 @@ function extractStacktrace( e, offset ) {
                return e.sourceURL + ":" + e.line;
        }
 }
-function sourceFromStacktrace(offset) {
+function sourceFromStacktrace( offset ) {
        try {
                throw new Error();
        } catch ( e ) {
@@ -955,13 +1087,13 @@ function sourceFromStacktrace(offset) {
        }
 }
 
-function escapeInnerText(s) {
-       if (!s) {
+function escapeInnerText( s ) {
+       if ( !s ) {
                return "";
        }
        s = s + "";
-       return s.replace(/[\&<>]/g, function(s) {
-               switch(s) {
+       return s.replace( /[\&<>]/g, function( s ) {
+               switch( s ) {
                        case "&": return "&amp;";
                        case "<": return "&lt;";
                        case ">": return "&gt;";
@@ -974,7 +1106,7 @@ function synchronize( callback, last ) {
        config.queue.push( callback );
 
        if ( config.autorun && !config.blocking ) {
-               process(last);
+               process( last );
        }
 }
 
@@ -1004,7 +1136,8 @@ function saveGlobal() {
 
        if ( config.noglobals ) {
                for ( var key in window ) {
-                       if ( !hasOwn.call( window, key ) ) {
+                       // in Opera sometimes DOM element ids show up here, ignore them
+                       if ( !hasOwn.call( window, key ) || /^qunit-test-output/.test( key ) ) {
                                continue;
                        }
                        config.pollution.push( key );
@@ -1013,15 +1146,18 @@ function saveGlobal() {
 }
 
 function checkPollution( name ) {
-       var old = config.pollution;
+       var newGlobals,
+               deletedGlobals,
+               old = config.pollution;
+
        saveGlobal();
 
-       var newGlobals = diff( config.pollution, old );
+       newGlobals = diff( config.pollution, old );
        if ( newGlobals.length > 0 ) {
                QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") );
        }
 
-       var deletedGlobals = diff( old, config.pollution );
+       deletedGlobals = diff( old, config.pollution );
        if ( deletedGlobals.length > 0 ) {
                QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") );
        }
@@ -1029,11 +1165,13 @@ function checkPollution( name ) {
 
 // returns a new Array with the elements that are in a but not in b
 function diff( a, b ) {
-       var result = a.slice();
-       for ( var i = 0; i < result.length; i++ ) {
-               for ( var j = 0; j < b.length; j++ ) {
+       var i, j,
+               result = a.slice();
+
+       for ( i = 0; i < result.length; i++ ) {
+               for ( j = 0; j < b.length; j++ ) {
                        if ( result[i] === b[j] ) {
-                               result.splice(i, 1);
+                               result.splice( i, 1 );
                                i--;
                                break;
                        }
@@ -1042,21 +1180,21 @@ function diff( a, b ) {
        return result;
 }
 
-function extend(a, b) {
+function extend( a, b ) {
        for ( var prop in b ) {
-               if ( b[prop] === undefined ) {
-                       delete a[prop];
+               if ( b[ prop ] === undefined ) {
+                       delete a[ prop ];
 
                // Avoid "Member not found" error in IE8 caused by setting window.constructor
                } else if ( prop !== "constructor" || a !== window ) {
-                       a[prop] = b[prop];
+                       a[ prop ] = b[ prop ];
                }
        }
 
        return a;
 }
 
-function addEvent(elem, type, fn) {
+function addEvent( elem, type, fn ) {
        if ( elem.addEventListener ) {
                elem.addEventListener( type, fn, false );
        } else if ( elem.attachEvent ) {
@@ -1066,27 +1204,27 @@ function addEvent(elem, type, fn) {
        }
 }
 
-function id(name) {
-       return !!(typeof document !== "undefined" && document && document.getElementById) &&
+function id( name ) {
+       return !!( typeof document !== "undefined" && document && document.getElementById ) &&
                document.getElementById( name );
 }
 
-function registerLoggingCallback(key){
-       return function(callback){
+function registerLoggingCallback( key ) {
+       return function( callback ) {
                config[key].push( callback );
        };
 }
 
 // Supports deprecated method of completely overwriting logging callbacks
-function runLoggingCallbacks(key, scope, args) {
+function runLoggingCallbacks( key, scope, args ) {
        //debugger;
-       var callbacks;
-       if ( QUnit.hasOwnProperty(key) ) {
-               QUnit[key].call(scope, args);
+       var i, callbacks;
+       if ( QUnit.hasOwnProperty( key ) ) {
+               QUnit[ key ].call(scope, args );
        } else {
-               callbacks = config[key];
-               for( var i = 0; i < callbacks.length; i++ ) {
-                       callbacks[i].call( scope, args );
+               callbacks = config[ key ];
+               for ( i = 0; i < callbacks.length; i++ ) {
+                       callbacks[ i ].call( scope, args );
                }
        }
 }
@@ -1095,183 +1233,184 @@ function runLoggingCallbacks(key, scope, args) {
 // Author: Philippe Rathé <prathe@gmail.com>
 QUnit.equiv = (function() {
 
-       var innerEquiv; // the real equiv function
-       var callers = []; // stack to decide between skip/abort functions
-       var parents = []; // stack to avoiding loops from circular referencing
-
        // Call the o related callback with the given arguments.
-       function bindCallbacks(o, callbacks, args) {
-               var prop = QUnit.objectType(o);
-               if (prop) {
-                       if (QUnit.objectType(callbacks[prop]) === "function") {
-                               return callbacks[prop].apply(callbacks, args);
+       function bindCallbacks( o, callbacks, args ) {
+               var prop = QUnit.objectType( o );
+               if ( prop ) {
+                       if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) {
+                               return callbacks[ prop ].apply( callbacks, args );
                        } else {
-                               return callbacks[prop]; // or undefined
+                               return callbacks[ prop ]; // or undefined
                        }
                }
        }
 
-       var getProto = Object.getPrototypeOf || function (obj) {
-               return obj.__proto__;
-       };
-
-       var callbacks = (function () {
-
-               // for string, boolean, number and null
-               function useStrictEquality(b, a) {
-                       if (b instanceof a.constructor || a instanceof b.constructor) {
-                               // to catch short annotaion VS 'new' annotation of a
-                               // declaration
-                               // e.g. var i = 1;
-                               // var j = new Number(1);
-                               return a == b;
-                       } else {
-                               return a === b;
-                       }
-               }
-
-               return {
-                       "string" : useStrictEquality,
-                       "boolean" : useStrictEquality,
-                       "number" : useStrictEquality,
-                       "null" : useStrictEquality,
-                       "undefined" : useStrictEquality,
-
-                       "nan" : function(b) {
-                               return isNaN(b);
-                       },
-
-                       "date" : function(b, a) {
-                               return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf();
-                       },
-
-                       "regexp" : function(b, a) {
-                               return QUnit.objectType(b) === "regexp" &&
-                                       // the regex itself
-                                       a.source === b.source &&
-                                       // and its modifers
-                                       a.global === b.global &&
-                                       // (gmi) ...
-                                       a.ignoreCase === b.ignoreCase &&
-                                       a.multiline === b.multiline;
-                       },
-
-                       // - skip when the property is a method of an instance (OOP)
-                       // - abort otherwise,
-                       // initial === would have catch identical references anyway
-                       "function" : function() {
-                               var caller = callers[callers.length - 1];
-                               return caller !== Object && typeof caller !== "undefined";
-                       },
-
-                       "array" : function(b, a) {
-                               var i, j, loop;
-                               var len;
-
-                               // b could be an object literal here
-                               if (QUnit.objectType(b) !== "array") {
-                                       return false;
-                               }
+       // the real equiv function
+       var innerEquiv,
+               // stack to decide between skip/abort functions
+               callers = [],
+               // stack to avoiding loops from circular referencing
+               parents = [],
 
-                               len = a.length;
-                               if (len !== b.length) { // safe and faster
-                                       return false;
+               getProto = Object.getPrototypeOf || function ( obj ) {
+                       return obj.__proto__;
+               },
+               callbacks = (function () {
+
+                       // for string, boolean, number and null
+                       function useStrictEquality( b, a ) {
+                               if ( b instanceof a.constructor || a instanceof b.constructor ) {
+                                       // to catch short annotaion VS 'new' annotation of a
+                                       // declaration
+                                       // e.g. var i = 1;
+                                       // var j = new Number(1);
+                                       return a == b;
+                               } else {
+                                       return a === b;
                                }
+                       }
 
-                               // track reference to avoid circular references
-                               parents.push(a);
-                               for (i = 0; i < len; i++) {
-                                       loop = false;
-                                       for (j = 0; j < parents.length; j++) {
-                                               if (parents[j] === a[i]) {
-                                                       loop = true;// dont rewalk array
-                                               }
-                                       }
-                                       if (!loop && !innerEquiv(a[i], b[i])) {
-                                               parents.pop();
+                       return {
+                               "string": useStrictEquality,
+                               "boolean": useStrictEquality,
+                               "number": useStrictEquality,
+                               "null": useStrictEquality,
+                               "undefined": useStrictEquality,
+
+                               "nan": function( b ) {
+                                       return isNaN( b );
+                               },
+
+                               "date": function( b, a ) {
+                                       return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf();
+                               },
+
+                               "regexp": function( b, a ) {
+                                       return QUnit.objectType( b ) === "regexp" &&
+                                               // the regex itself
+                                               a.source === b.source &&
+                                               // and its modifers
+                                               a.global === b.global &&
+                                               // (gmi) ...
+                                               a.ignoreCase === b.ignoreCase &&
+                                               a.multiline === b.multiline;
+                               },
+
+                               // - skip when the property is a method of an instance (OOP)
+                               // - abort otherwise,
+                               // initial === would have catch identical references anyway
+                               "function": function() {
+                                       var caller = callers[callers.length - 1];
+                                       return caller !== Object && typeof caller !== "undefined";
+                               },
+
+                               "array": function( b, a ) {
+                                       var i, j, len, loop;
+
+                                       // b could be an object literal here
+                                       if ( QUnit.objectType( b ) !== "array" ) {
                                                return false;
                                        }
-                               }
-                               parents.pop();
-                               return true;
-                       },
 
-                       "object" : function(b, a) {
-                               var i, j, loop;
-                               var eq = true; // unless we can proove it
-                               var aProperties = [], bProperties = []; // collection of
-                                                                                                               // strings
-
-                               // comparing constructors is more strict than using
-                               // instanceof
-                               if (a.constructor !== b.constructor) {
-                                       // Allow objects with no prototype to be equivalent to
-                                       // objects with Object as their constructor.
-                                       if (!((getProto(a) === null && getProto(b) === Object.prototype) ||
-                                               (getProto(b) === null && getProto(a) === Object.prototype)))
-                                       {
+                                       len = a.length;
+                                       if ( len !== b.length ) {
+                                               // safe and faster
                                                return false;
                                        }
-                               }
 
-                               // stack constructor before traversing properties
-                               callers.push(a.constructor);
-                               // track reference to avoid circular references
-                               parents.push(a);
-
-                               for (i in a) { // be strict: don't ensures hasOwnProperty
-                                                               // and go deep
-                                       loop = false;
-                                       for (j = 0; j < parents.length; j++) {
-                                               if (parents[j] === a[i]) {
-                                                       // don't go down the same path twice
-                                                       loop = true;
+                                       // track reference to avoid circular references
+                                       parents.push( a );
+                                       for ( i = 0; i < len; i++ ) {
+                                               loop = false;
+                                               for ( j = 0; j < parents.length; j++ ) {
+                                                       if ( parents[j] === a[i] ) {
+                                                               loop = true;// dont rewalk array
+                                                       }
+                                               }
+                                               if ( !loop && !innerEquiv(a[i], b[i]) ) {
+                                                       parents.pop();
+                                                       return false;
+                                               }
+                                       }
+                                       parents.pop();
+                                       return true;
+                               },
+
+                               "object": function( b, a ) {
+                                       var i, j, loop,
+                                               // Default to true
+                                               eq = true,
+                                               aProperties = [],
+                                               bProperties = [];
+
+                                       // comparing constructors is more strict than using
+                                       // instanceof
+                                       if ( a.constructor !== b.constructor ) {
+                                               // Allow objects with no prototype to be equivalent to
+                                               // objects with Object as their constructor.
+                                               if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) ||
+                                                       ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) {
+                                                               return false;
                                                }
                                        }
-                                       aProperties.push(i); // collect a's properties
 
-                                       if (!loop && !innerEquiv(a[i], b[i])) {
-                                               eq = false;
-                                               break;
+                                       // stack constructor before traversing properties
+                                       callers.push( a.constructor );
+                                       // track reference to avoid circular references
+                                       parents.push( a );
+
+                                       for ( i in a ) { // be strict: don't ensures hasOwnProperty
+                                                                       // and go deep
+                                               loop = false;
+                                               for ( j = 0; j < parents.length; j++ ) {
+                                                       if ( parents[j] === a[i] ) {
+                                                               // don't go down the same path twice
+                                                               loop = true;
+                                                       }
+                                               }
+                                               aProperties.push(i); // collect a's properties
+
+                                               if (!loop && !innerEquiv( a[i], b[i] ) ) {
+                                                       eq = false;
+                                                       break;
+                                               }
                                        }
-                               }
 
-                               callers.pop(); // unstack, we are done
-                               parents.pop();
+                                       callers.pop(); // unstack, we are done
+                                       parents.pop();
 
-                               for (i in b) {
-                                       bProperties.push(i); // collect b's properties
-                               }
+                                       for ( i in b ) {
+                                               bProperties.push( i ); // collect b's properties
+                                       }
 
-                               // Ensures identical properties name
-                               return eq && innerEquiv(aProperties.sort(), bProperties.sort());
-                       }
-               };
-       }());
+                                       // Ensures identical properties name
+                                       return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
+                               }
+                       };
+               }());
 
        innerEquiv = function() { // can take multiple arguments
-               var args = Array.prototype.slice.apply(arguments);
-               if (args.length < 2) {
+               var args = [].slice.apply( arguments );
+               if ( args.length < 2 ) {
                        return true; // end transition
                }
 
-               return (function(a, b) {
-                       if (a === b) {
+               return (function( a, b ) {
+                       if ( a === b ) {
                                return true; // catch the most you can
-                       } else if (a === null || b === null || typeof a === "undefined" ||
+                       } else if ( a === null || b === null || typeof a === "undefined" ||
                                        typeof b === "undefined" ||
-                                       QUnit.objectType(a) !== QUnit.objectType(b)) {
+                                       QUnit.objectType(a) !== QUnit.objectType(b) ) {
                                return false; // don't lose time with error prone cases
                        } else {
                                return bindCallbacks(a, callbacks, [ b, a ]);
                        }
 
                        // apply transition with (1..n) arguments
-               }(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length - 1)));
+               }( args[0], args[1] ) && arguments.callee.apply( this, args.splice(1, args.length - 1 )) );
        };
 
        return innerEquiv;
-
 }());
 
 /**
@@ -1286,17 +1425,17 @@ QUnit.equiv = (function() {
  */
 QUnit.jsDump = (function() {
        function quote( str ) {
-               return '"' + str.toString().replace(/"/g, '\\"') + '"';
+               return '"' + str.toString().replace( /"/g, '\\"' ) + '"';
        }
        function literal( o ) {
-               return o + '';
+               return o + "";
        }
        function join( pre, arr, post ) {
                var s = jsDump.separator(),
                        base = jsDump.indent(),
                        inner = jsDump.indent(1);
                if ( arr.join ) {
-                       arr = arr.join( ',' + s + inner );
+                       arr = arr.join( "," + s + inner );
                }
                if ( !arr ) {
                        return pre + post;
@@ -1310,182 +1449,191 @@ QUnit.jsDump = (function() {
                        ret[i] = this.parse( arr[i] , undefined , stack);
                }
                this.down();
-               return join( '[', ret, ']' );
+               return join( "[", ret, "]" );
        }
 
-       var reName = /^function (\w+)/;
+       var reName = /^function (\w+)/,
+               jsDump = {
+                       parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
+                               stack = stack || [ ];
+                               var inStack, res,
+                                       parser = this.parsers[ type || this.typeOf(obj) ];
 
-       var jsDump = {
-               parse: function( obj, type, stack ) { //type is used mostly internally, you can fix a (custom)type in advance
-                       stack = stack || [ ];
-                       var parser = this.parsers[ type || this.typeOf(obj) ];
-                       type = typeof parser;
-                       var inStack = inArray(obj, stack);
-                       if (inStack != -1) {
-                               return 'recursion('+(inStack - stack.length)+')';
-                       }
-                       //else
-                       if (type == 'function')  {
-                                       stack.push(obj);
-                                       var res = parser.call( this, obj, stack );
+                               type = typeof parser;
+                               inStack = inArray( obj, stack );
+
+                               if ( inStack != -1 ) {
+                                       return "recursion(" + (inStack - stack.length) + ")";
+                               }
+                               //else
+                               if ( type == "function" )  {
+                                       stack.push( obj );
+                                       res = parser.call( this, obj, stack );
                                        stack.pop();
                                        return res;
-                       }
-                       // else
-                       return (type == 'string') ? parser : this.parsers.error;
-               },
-               typeOf: function( obj ) {
-                       var type;
-                       if ( obj === null ) {
-                               type = "null";
-                       } else if (typeof obj === "undefined") {
-                               type = "undefined";
-                       } else if (QUnit.is("RegExp", obj)) {
-                               type = "regexp";
-                       } else if (QUnit.is("Date", obj)) {
-                               type = "date";
-                       } else if (QUnit.is("Function", obj)) {
-                               type = "function";
-                       } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") {
-                               type = "window";
-                       } else if (obj.nodeType === 9) {
-                               type = "document";
-                       } else if (obj.nodeType) {
-                               type = "node";
-                       } else if (
-                               // native arrays
-                               toString.call( obj ) === "[object Array]" ||
-                               // NodeList objects
-                               ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
-                       ) {
-                               type = "array";
-                       } else {
-                               type = typeof obj;
-                       }
-                       return type;
-               },
-               separator: function() {
-                       return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
-               },
-               indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
-                       if ( !this.multiline ) {
-                               return '';
-                       }
-                       var chr = this.indentChar;
-                       if ( this.HTML ) {
-                               chr = chr.replace(/\t/g,'   ').replace(/ /g,'&nbsp;');
-                       }
-                       return new Array( this._depth_ + (extra||0) ).join(chr);
-               },
-               up: function( a ) {
-                       this._depth_ += a || 1;
-               },
-               down: function( a ) {
-                       this._depth_ -= a || 1;
-               },
-               setParser: function( name, parser ) {
-                       this.parsers[name] = parser;
-               },
-               // The next 3 are exposed so you can use them
-               quote: quote,
-               literal: literal,
-               join: join,
-               //
-               _depth_: 1,
-               // This is the list of parsers, to modify them, use jsDump.setParser
-               parsers: {
-                       window: '[Window]',
-                       document: '[Document]',
-                       error: '[ERROR]', //when no parser is found, shouldn't happen
-                       unknown: '[Unknown]',
-                       'null': 'null',
-                       'undefined': 'undefined',
-                       'function': function( fn ) {
-                               var ret = 'function',
-                                       name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
-                               if ( name ) {
-                                       ret += ' ' + name;
                                }
-                               ret += '(';
-
-                               ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');
-                               return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );
+                               // else
+                               return ( type == "string" ) ? parser : this.parsers.error;
                        },
-                       array: array,
-                       nodelist: array,
-                       'arguments': array,
-                       object: function( map, stack ) {
-                               var ret = [ ], keys, key, val, i;
-                               QUnit.jsDump.up();
-                               if (Object.keys) {
-                                       keys = Object.keys( map );
+                       typeOf: function( obj ) {
+                               var type;
+                               if ( obj === null ) {
+                                       type = "null";
+                               } else if ( typeof obj === "undefined" ) {
+                                       type = "undefined";
+                               } else if ( QUnit.is( "regexp", obj) ) {
+                                       type = "regexp";
+                               } else if ( QUnit.is( "date", obj) ) {
+                                       type = "date";
+                               } else if ( QUnit.is( "function", obj) ) {
+                                       type = "function";
+                               } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) {
+                                       type = "window";
+                               } else if ( obj.nodeType === 9 ) {
+                                       type = "document";
+                               } else if ( obj.nodeType ) {
+                                       type = "node";
+                               } else if (
+                                       // native arrays
+                                       toString.call( obj ) === "[object Array]" ||
+                                       // NodeList objects
+                                       ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) )
+                               ) {
+                                       type = "array";
                                } else {
-                                       keys = [];
-                                       for (key in map) { keys.push( key ); }
+                                       type = typeof obj;
+                               }
+                               return type;
+                       },
+                       separator: function() {
+                               return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&nbsp;" : " ";
+                       },
+                       indent: function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
+                               if ( !this.multiline ) {
+                                       return "";
                                }
-                               keys.sort();
-                               for (i = 0; i < keys.length; i++) {
-                                       key = keys[ i ];
-                                       val = map[ key ];
-                                       ret.push( QUnit.jsDump.parse( key, 'key' ) + ': ' + QUnit.jsDump.parse( val, undefined, stack ) );
+                               var chr = this.indentChar;
+                               if ( this.HTML ) {
+                                       chr = chr.replace( /\t/g, "   " ).replace( / /g, "&nbsp;" );
                                }
-                               QUnit.jsDump.down();
-                               return join( '{', ret, '}' );
+                               return new Array( this._depth_ + (extra||0) ).join(chr);
                        },
-                       node: function( node ) {
-                               var open = QUnit.jsDump.HTML ? '&lt;' : '<',
-                                       close = QUnit.jsDump.HTML ? '&gt;' : '>';
-
-                               var tag = node.nodeName.toLowerCase(),
-                                       ret = open + tag;
+                       up: function( a ) {
+                               this._depth_ += a || 1;
+                       },
+                       down: function( a ) {
+                               this._depth_ -= a || 1;
+                       },
+                       setParser: function( name, parser ) {
+                               this.parsers[name] = parser;
+                       },
+                       // The next 3 are exposed so you can use them
+                       quote: quote,
+                       literal: literal,
+                       join: join,
+                       //
+                       _depth_: 1,
+                       // This is the list of parsers, to modify them, use jsDump.setParser
+                       parsers: {
+                               window: "[Window]",
+                               document: "[Document]",
+                               error: "[ERROR]", //when no parser is found, shouldn"t happen
+                               unknown: "[Unknown]",
+                               "null": "null",
+                               "undefined": "undefined",
+                               "function": function( fn ) {
+                                       var ret = "function",
+                                               name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1];//functions never have name in IE
+
+                                       if ( name ) {
+                                               ret += " " + name;
+                                       }
+                                       ret += "( ";
+
+                                       ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" );
+                                       return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" );
+                               },
+                               array: array,
+                               nodelist: array,
+                               "arguments": array,
+                               object: function( map, stack ) {
+                                       var ret = [ ], keys, key, val, i;
+                                       QUnit.jsDump.up();
+                                       if ( Object.keys ) {
+                                               keys = Object.keys( map );
+                                       } else {
+                                               keys = [];
+                                               for ( key in map ) {
+                                                       keys.push( key );
+                                               }
+                                       }
+                                       keys.sort();
+                                       for ( i = 0; i < keys.length; i++ ) {
+                                               key = keys[ i ];
+                                               val = map[ key ];
+                                               ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) );
+                                       }
+                                       QUnit.jsDump.down();
+                                       return join( "{", ret, "}" );
+                               },
+                               node: function( node ) {
+                                       var a, val,
+                                               open = QUnit.jsDump.HTML ? "&lt;" : "<",
+                                               close = QUnit.jsDump.HTML ? "&gt;" : ">",
+                                               tag = node.nodeName.toLowerCase(),
+                                               ret = open + tag;
+
+                                       for ( a in QUnit.jsDump.DOMAttrs ) {
+                                               val = node[ QUnit.jsDump.DOMAttrs[a] ];
+                                               if ( val ) {
+                                                       ret += " " + a + "=" + QUnit.jsDump.parse( val, "attribute" );
+                                               }
+                                       }
+                                       return ret + close + open + "/" + tag + close;
+                               },
+                               functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
+                                       var args,
+                                               l = fn.length;
+
+                                       if ( !l ) {
+                                               return "";
+                                       }
 
-                               for ( var a in QUnit.jsDump.DOMAttrs ) {
-                                       var val = node[QUnit.jsDump.DOMAttrs[a]];
-                                       if ( val ) {
-                                               ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );
+                                       args = new Array(l);
+                                       while ( l-- ) {
+                                               args[l] = String.fromCharCode(97+l);//97 is 'a'
                                        }
-                               }
-                               return ret + close + open + '/' + tag + close;
+                                       return " " + args.join( ", " ) + " ";
+                               },
+                               key: quote, //object calls it internally, the key part of an item in a map
+                               functionCode: "[code]", //function calls it internally, it's the content of the function
+                               attribute: quote, //node calls it internally, it's an html attribute value
+                               string: quote,
+                               date: quote,
+                               regexp: literal, //regex
+                               number: literal,
+                               "boolean": literal
                        },
-                       functionArgs: function( fn ) {//function calls it internally, it's the arguments part of the function
-                               var l = fn.length;
-                               if ( !l ) {
-                                       return '';
-                               }
-
-                               var args = new Array(l);
-                               while ( l-- ) {
-                                       args[l] = String.fromCharCode(97+l);//97 is 'a'
-                               }
-                               return ' ' + args.join(', ') + ' ';
+                       DOMAttrs: {
+                               //attributes to dump from nodes, name=>realName
+                               id: "id",
+                               name: "name",
+                               "class": "className"
                        },
-                       key: quote, //object calls it internally, the key part of an item in a map
-                       functionCode: '[code]', //function calls it internally, it's the content of the function
-                       attribute: quote, //node calls it internally, it's an html attribute value
-                       string: quote,
-                       date: quote,
-                       regexp: literal, //regex
-                       number: literal,
-                       'boolean': literal
-               },
-               DOMAttrs:{//attributes to dump from nodes, name=>realName
-                       id:'id',
-                       name:'name',
-                       'class':'className'
-               },
-               HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
-               indentChar:'  ',//indentation unit
-               multiline:true //if true, items in a collection, are separated by a \n, else just a space.
-       };
+                       HTML: false,//if true, entities are escaped ( <, >, \t, space and \n )
+                       indentChar: "  ",//indentation unit
+                       multiline: true //if true, items in a collection, are separated by a \n, else just a space.
+               };
 
        return jsDump;
 }());
 
 // from Sizzle.js
 function getText( elems ) {
-       var ret = "", elem;
+       var i, elem,
+               ret = "";
 
-       for ( var i = 0; elems[i]; i++ ) {
+       for ( i = 0; elems[i]; i++ ) {
                elem = elems[i];
 
                // Get the text from text nodes and CDATA nodes
@@ -1501,7 +1649,7 @@ function getText( elems ) {
        return ret;
 }
 
-//from jquery.js
+// from jquery.js
 function inArray( elem, array ) {
        if ( array.indexOf ) {
                return array.indexOf( elem );
@@ -1528,73 +1676,75 @@ function inArray( elem, array ) {
  *
  * Usage: QUnit.diff(expected, actual)
  *
- * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
+ * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the  quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
  */
 QUnit.diff = (function() {
-       function diff(o, n) {
-               var ns = {};
-               var os = {};
-               var i;
-
-               for (i = 0; i < n.length; i++) {
-                       if (ns[n[i]] == null) {
-                               ns[n[i]] = {
+       function diff( o, n ) {
+               var i,
+                       ns = {},
+                       os = {};
+
+               for ( i = 0; i < n.length; i++ ) {
+                       if ( ns[ n[i] ] == null ) {
+                               ns[ n[i] ] = {
                                        rows: [],
                                        o: null
                                };
                        }
-                       ns[n[i]].rows.push(i);
+                       ns[ n[i] ].rows.push( i );
                }
 
-               for (i = 0; i < o.length; i++) {
-                       if (os[o[i]] == null) {
-                               os[o[i]] = {
+               for ( i = 0; i < o.length; i++ ) {
+                       if ( os[ o[i] ] == null ) {
+                               os[ o[i] ] = {
                                        rows: [],
                                        n: null
                                };
                        }
-                       os[o[i]].rows.push(i);
+                       os[ o[i] ].rows.push( i );
                }
 
-               for (i in ns) {
+               for ( i in ns ) {
                        if ( !hasOwn.call( ns, i ) ) {
                                continue;
                        }
-                       if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
-                               n[ns[i].rows[0]] = {
-                                       text: n[ns[i].rows[0]],
+                       if ( ns[i].rows.length == 1 && typeof os[i] != "undefined" && os[i].rows.length == 1 ) {
+                               n[ ns[i].rows[0] ] = {
+                                       text: n[ ns[i].rows[0] ],
                                        row: os[i].rows[0]
                                };
-                               o[os[i].rows[0]] = {
-                                       text: o[os[i].rows[0]],
+                               o[ os[i].rows[0] ] = {
+                                       text: o[ os[i].rows[0] ],
                                        row: ns[i].rows[0]
                                };
                        }
                }
 
-               for (i = 0; i < n.length - 1; i++) {
-                       if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
-                       n[i + 1] == o[n[i].row + 1]) {
-                               n[i + 1] = {
-                                       text: n[i + 1],
+               for ( i = 0; i < n.length - 1; i++ ) {
+                       if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null &&
+                                               n[ i + 1 ] == o[ n[i].row + 1 ] ) {
+
+                               n[ i + 1 ] = {
+                                       text: n[ i + 1 ],
                                        row: n[i].row + 1
                                };
-                               o[n[i].row + 1] = {
-                                       text: o[n[i].row + 1],
+                               o[ n[i].row + 1 ] = {
+                                       text: o[ n[i].row + 1 ],
                                        row: i + 1
                                };
                        }
                }
 
-               for (i = n.length - 1; i > 0; i--) {
-                       if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
-                       n[i - 1] == o[n[i].row - 1]) {
-                               n[i - 1] = {
-                                       text: n[i - 1],
+               for ( i = n.length - 1; i > 0; i-- ) {
+                       if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null &&
+                                               n[ i - 1 ] == o[ n[i].row - 1 ]) {
+
+                               n[ i - 1 ] = {
+                                       text: n[ i - 1 ],
                                        row: n[i].row - 1
                                };
-                               o[n[i].row - 1] = {
-                                       text: o[n[i].row - 1],
+                               o[ n[i].row - 1 ] = {
+                                       text: o[ n[i].row - 1 ],
                                        row: i - 1
                                };
                        }
@@ -1606,50 +1756,52 @@ QUnit.diff = (function() {
                };
        }
 
-       return function(o, n) {
-               o = o.replace(/\s+$/, '');
-               n = n.replace(/\s+$/, '');
-               var out = diff(o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/));
+       return function( o, n ) {
+               o = o.replace( /\s+$/, "" );
+               n = n.replace( /\s+$/, "" );
 
-               var str = "";
-               var i;
+               var i, pre,
+                       str = "",
+                       out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ),
+                       oSpace = o.match(/\s+/g),
+                       nSpace = n.match(/\s+/g);
 
-               var oSpace = o.match(/\s+/g);
-               if (oSpace == null) {
-                       oSpace = [" "];
+               if ( oSpace == null ) {
+                       oSpace = [ " " ];
                }
                else {
-                       oSpace.push(" ");
+                       oSpace.push( " " );
                }
-               var nSpace = n.match(/\s+/g);
-               if (nSpace == null) {
-                       nSpace = [" "];
+
+               if ( nSpace == null ) {
+                       nSpace = [ " " ];
                }
                else {
-                       nSpace.push(" ");
+                       nSpace.push( " " );
                }
 
-               if (out.n.length === 0) {
-                       for (i = 0; i < out.o.length; i++) {
-                               str += '<del>' + out.o[i] + oSpace[i] + "</del>";
+               if ( out.n.length === 0 ) {
+                       for ( i = 0; i < out.o.length; i++ ) {
+                               str += "<del>" + out.o[i] + oSpace[i] + "</del>";
                        }
                }
                else {
-                       if (out.n[0].text == null) {
-                               for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
-                                       str += '<del>' + out.o[n] + oSpace[n] + "</del>";
+                       if ( out.n[0].text == null ) {
+                               for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) {
+                                       str += "<del>" + out.o[n] + oSpace[n] + "</del>";
                                }
                        }
 
-                       for (i = 0; i < out.n.length; i++) {
+                       for ( i = 0; i < out.n.length; i++ ) {
                                if (out.n[i].text == null) {
-                                       str += '<ins>' + out.n[i] + nSpace[i] + "</ins>";
+                                       str += "<ins>" + out.n[i] + nSpace[i] + "</ins>";
                                }
                                else {
-                                       var pre = "";
+                                       // `pre` initialized at top of scope
+                                       pre = "";
 
-                                       for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
-                                               pre += '<del>' + out.o[n] + oSpace[n] + "</del>";
+                                       for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) {
+                                               pre += "<del>" + out.o[n] + oSpace[n] + "</del>";
                                        }
                                        str += " " + out.n[i].text + nSpace[i] + pre;
                                }
@@ -1661,7 +1813,7 @@ QUnit.diff = (function() {
 }());
 
 // for CommonJS enviroments, export everything
-if ( typeof exports !== "undefined" || typeof require !== "undefined" ) {
+if ( typeof exports !== "undefined" ) {
        extend(exports, QUnit);
 }
 
index 9f22426..9affcf0 100644 (file)
@@ -18,3 +18,19 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[2];
        }
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'bs', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'instrumental': // instrumental
+                       word = 's ' + word;
+                       break;
+               case 'lokativ': // locative
+                       word = 'o ' + word;
+                       break;
+       }
+       return word;
+};
index c3eaa1f..e3c5808 100644 (file)
@@ -16,3 +16,19 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[3];
        }
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'dsb', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'instrumental': // instrumental
+                       word = 'z ' + word;
+                       break;
+               case 'lokatiw': // lokatiw
+                       word = 'wo ' + word;
+                       break;
+       }
+       return word;
+};
diff --git a/resources/mediawiki.language/languages/fi.js b/resources/mediawiki.language/languages/fi.js
new file mode 100644 (file)
index 0000000..374698d
--- /dev/null
@@ -0,0 +1,44 @@
+/**
+ *  Finnish (Suomi) language functions
+ *  @author Santhosh Thottingal
+ */
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'fi', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+
+       // vowel harmony flag
+       var aou = word.match( /[aou][^äöy]*$/i );
+       var origWord = word;
+       if ( word.match( /wiki$/i ) ) {
+               aou = false;
+       }
+       //append i after final consonant
+       if ( word.match( /[bcdfghjklmnpqrstvwxz]$/i ) )
+               word += 'i';
+
+       switch ( form ) {
+               case 'genitive':
+                       word += 'n';
+                       break;
+               case 'elative':
+                       word += ( aou ? 'sta' : 'stä' );
+                       break;
+               case 'partitive':
+                       word += ( aou ? 'a' : 'ä' );
+                       break;
+               case 'illative':
+                       // Double the last letter and add 'n'
+                       word += word.substr(  word.length-1 ) + 'n';
+                       break;
+               case 'inessive':
+                       word += ( aou ? 'ssa' : 'ssä' );
+                       break;
+               default:
+                       word = origWord;
+                       break;
+       }
+       return word;
+};
index 3928013..51fce35 100644 (file)
@@ -12,3 +12,38 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        }
        return forms[2];
 };
+
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'ga', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'ainmlae':
+                       switch ( word ) {
+                               case 'an Domhnach':
+                                       word = 'Dé Domhnaigh';
+                                       break;
+                               case 'an Luan':
+                                       word = 'Dé Luain';
+                                       break;
+                               case 'an Mháirt':
+                                       word = 'Dé Mháirt';
+                                       break;
+                               case 'an Chéadaoin':
+                                       word = 'Dé Chéadaoin';
+                                       break;
+                               case 'an Déardaoin':
+                                       word = 'Déardaoin';
+                                       break;
+                               case 'an Aoine':
+                                       word = 'Dé hAoine';
+                                       break;
+                               case 'an Satharn':
+                                       word = 'Dé Sathairn';
+                                       break;
+                       }
+       }
+       return word;
+};
index b74440e..e737a7c 100644 (file)
@@ -12,3 +12,29 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        }
        return forms[1];
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'he', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'prefixed':
+               case 'תחילית': // the same word in Hebrew
+                       // Duplicate prefixed "Waw", but only if it's not already double
+                       if ( word.substr( 0, 1 ) === "ו" && word.substr( 0, 2 ) !== "וו" ) {
+                               word = "ו" + word;
+                       }
+
+                       // Remove the "He" if prefixed
+                       if ( word.substr( 0, 1 ) === "ה" ) {
+                               word = word.substr( 1, word.length );
+                       }
+
+                       // Add a hyphen (maqaf) before numbers and non-Hebrew letters
+                       if (  word.substr( 0, 1 ) < "א" ||  word.substr( 0, 1 ) > "ת" ) {
+                               word = "־" + word;
+                       }
+       }
+       return word;
+};
index 8651fe4..6aa993c 100644 (file)
@@ -16,3 +16,20 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[3];
        }
 };
+
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms =mw.language.getData( 'hsb', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'instrumental': // instrumental
+                       word = 'z ' + word;
+                       break;
+               case 'lokatiw': // lokatiw
+                       word = 'wo ' + word;
+                       break;
+               }
+       return word;
+};
diff --git a/resources/mediawiki.language/languages/hu.js b/resources/mediawiki.language/languages/hu.js
new file mode 100644 (file)
index 0000000..eb3f1f3
--- /dev/null
@@ -0,0 +1,23 @@
+/**
+ *  Hungarian language functions
+ *  @author Santhosh Thottingal
+ */
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'hu', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'rol':
+                       word += 'ról';
+                       break;
+               case 'ba':
+                       word += 'ba';
+                       break;
+               case 'k':
+                       word += 'k';
+                       break;
+       }
+       return word;
+};
index 734c26d..b51b2b6 100644 (file)
@@ -6,3 +6,27 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        forms = mediaWiki.language.preConvertPlural( forms, 2 );
        return ( Math.abs( count ) <= 1 ) ? forms[0] : forms[1];
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'hy', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+
+       // These rules are not perfect, but they are currently only used for site names so it doesn't
+       // matter if they are wrong sometimes. Just add a special case for your site name if necessary.
+
+       switch ( form ) {
+               case 'genitive': // սեռական հոլով
+                       if ( word.substr( -1 ) === 'ա' )
+                               word = word.substr( 0, word.length -1 )  + 'այի';
+                       else if ( word.substr( -1 ) === 'ո' )
+                               word = word.substr( 0, word.length - 1 ) + 'ոյի';
+                       else if ( word.substr( -4 ) === 'գիրք' )
+                               word = word.substr( 0, word.length - 4 ) + 'գրքի';
+                       else
+                               word = word + 'ի';
+                       break;
+               }
+       return word;
+};
diff --git a/resources/mediawiki.language/languages/la.js b/resources/mediawiki.language/languages/la.js
new file mode 100644 (file)
index 0000000..313bb1c
--- /dev/null
@@ -0,0 +1,50 @@
+/**
+ * Latin (lingua Latina) language functions
+ * @author Santhosh Thottingal
+ */
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'la', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'genitive':
+                       // only a few declensions, and even for those mostly the singular only
+                       word = word.replace( /u[ms]$/i, 'i' ); // 2nd declension singular
+                       word = word.replace( /ommunia$/i, 'ommunium' ); // 3rd declension neuter plural (partly)
+                       word = word.replace( /a$/i, 'ae' ); // 1st declension singular
+                       word = word.replace( /libri$/i,'librorum' ); // 2nd declension plural (partly)
+                       word = word.replace( /nuntii$/i, 'nuntiorum' ); // 2nd declension plural (partly)
+                       word = word.replace( /tio$/i,'tionis' ); // 3rd declension singular (partly)
+                       word = word.replace( /ns$/i, 'ntis' );
+                       word = word.replace( /as$/i, 'atis' );
+                       word = word.replace( /es$/i ,'ei' ); // 5th declension singular
+                       break;
+               case 'accusative':
+                       // only a few declensions, and even for those mostly the singular only
+                       word = word.replace( /u[ms]$/i, 'um' ); // 2nd declension singular
+                       word = word.replace( /ommunia$/i, 'am' ); // 3rd declension neuter plural (partly)
+                       word = word.replace( /a$/i, 'ommunia' ); // 1st declension singular
+                       word = word.replace( /libri$/i,'libros' ); // 2nd declension plural (partly)
+                       word = word.replace( /nuntii$/i, 'nuntios' );// 2nd declension plural (partly)
+                       word = word.replace( /tio$/i,'tionem' ); // 3rd declension singular (partly)
+                       word = word.replace( /ns$/i, 'ntem' );
+                       word = word.replace( /as$/i, 'atem');
+                       word = word.replace( /es$/i ,'em' ); // 5th declension singular
+                       break;
+               case 'ablative':
+                       // only a few declensions, and even for those mostly the singular only
+                       word = word.replace( /u[ms]$/i, 'o' ); // 2nd declension singular
+                       word = word.replace( /ommunia$/i, 'ommunibus' ); // 3rd declension neuter plural (partly)
+                       word = word.replace( /a$/i, 'a' ); // 1st declension singular
+                       word = word.replace( /libri$/i,'libris' ); // 2nd declension plural (partly)
+                       word = word.replace( /nuntii$/i, 'nuntiis' ); // 2nd declension plural (partly)
+                       word = word.replace( /tio$/i,'tione' ); // 3rd declension singular (partly)
+                       word = word.replace( /ns$/i, 'nte' );
+                       word = word.replace( /as$/i, 'ate');
+                       word = word.replace( /es$/i ,'e' ); // 5th declension singular
+                       break;
+       }
+       return word;
+};
diff --git a/resources/mediawiki.language/languages/os.js b/resources/mediawiki.language/languages/os.js
new file mode 100644 (file)
index 0000000..431e38c
--- /dev/null
@@ -0,0 +1,69 @@
+/**
+ * Ossetian (Ирон) language functions
+ * @author Santhosh Thottingal
+ */
+
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'os', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       // Ending for allative case
+       var end_allative = 'мæ';
+       // Variable for 'j' beetwen vowels
+       var jot = '';
+       // Variable for "-" for not Ossetic words
+       var hyphen = '';
+       // Variable for ending
+       var ending = '';
+       // Checking if the $word is in plural form
+       if ( word.match( /тæ$/i ) ) {
+               word = word.substring( 0, word.length - 1 );
+               end_allative = 'æм';
+       }
+       // Works if word is in singular form.
+       // Checking if word ends on one of the vowels: е, ё, и, о, ы, э, ю, я.
+       else if ( word.match( /[аæеёиоыэюя]$/i ) ) {
+               jot = 'й';
+       }
+       // Checking if word ends on 'у'. 'У' can be either consonant 'W' or vowel 'U' in cyrillic Ossetic.
+       // Examples: {{grammar:genitive|аунеу}} = аунеуы, {{grammar:genitive|лæппу}} = лæппуйы.
+       else if ( word.match( /у$/i ) ) {
+               if ( ! word.substring( word.length-2, word.length-1 ).match( /[аæеёиоыэюя]$/i ) ) {
+                       jot = 'й';
+               }
+       } else if ( !word.match( /[бвгджзйклмнопрстфхцчшщьъ]$/i ) ) {
+               hyphen = '-';
+       }
+
+       switch ( form ) {
+               case 'genitive':
+                       ending = hyphen + jot + 'ы';
+                       break;
+               case 'dative':
+                       ending = hyphen + jot + 'æн';
+                       break;
+               case 'allative':
+                       ending = hyphen + end_allative;
+                       break;
+               case 'ablative':
+                       if ( jot == 'й' ) {
+                               ending = hyphen + jot + 'æ';
+                       }
+                       else {
+                               ending = hyphen + jot + 'æй';
+                       }
+                       break;
+               case 'superessive':
+                       ending = hyphen + jot + 'ыл';
+                       break;
+               case 'equative':
+                       ending = hyphen + jot + 'ау';
+                       break;
+               case 'comitative':
+                       ending = hyphen + 'имæ';
+                       break;
+       }
+       return word + ending;
+};
index 17c9293..42be4f9 100644 (file)
@@ -21,3 +21,29 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[2];
        }
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'ru', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'genitive': // родительный падеж
+                       if ( (  word.substr( word.length - 4 )  == 'вики' ) || (  word.substr( word.length - 4 ) == 'Вики' ) ) {
+                       }
+                       else if ( word.substr( word.length - 1 ) == 'ь' )
+                               word = word.substr(0, word.length - 1 ) + 'я';
+                       else if ( word.substr( word.length - 2 ) == 'ия' )
+                               word = word.substr(0, word.length - 2 ) + 'ии';
+                       else if ( word.substr( word.length - 2 ) == 'ка' )
+                               word = word.substr(0, word.length - 2 ) + 'ки';
+                       else if ( word.substr( word.length - 2 )  == 'ти' )
+                               word = word.substr(0, word.length - 2 ) + 'тей';
+                       else if ( word.substr( word.length - 2 ) == 'ды' )
+                               word = word.substr(0, word.length - 2 ) + 'дов';
+                       else if ( word.substr( word.length - 3 ) == 'ник' )
+                               word = word.substr(0, word.length - 3 ) + 'ника';
+                       break;
+       }
+       return word;
+};
index a887e0e..cfb5781 100644 (file)
@@ -18,3 +18,19 @@ mediaWiki.language.convertPlural = function( count, forms ) {
        }
        return forms[4];
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'sl', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'mestnik': // locative
+                       word = 'o ' + word;
+                       break;
+               case 'orodnik': // instrumental
+                       word = 'z ' + word;
+                       break;
+       }
+       return word;
+};
index 5c1294e..372d441 100644 (file)
@@ -21,3 +21,35 @@ mediaWiki.language.convertPlural = function( count, forms ) {
                        return forms[2];
        }
 };
+
+mediaWiki.language.convertGrammar = function( word, form ) {
+       var grammarForms = mw.language.getData( 'uk', 'grammarForms' );
+       if ( grammarForms && grammarForms[form] ) {
+               return grammarForms[form][word] ;
+       }
+       switch ( form ) {
+               case 'genitive': // родовий відмінок
+                       if ( (  word.substr( word.length - 4 ) == 'вікі' ) || (  word.substr( word.length - 4 ) == 'Вікі' ) ) {
+                       }
+                       else if ( word.substr( word.length - 1 ) == 'ь' )
+                               word = word.substr(0, word.length - 1 ) + 'я';
+                       else if ( word.substr( word.length - 2 ) == 'ія' )
+                               word = word.substr(0, word.length - 2 ) + 'ії';
+                       else if ( word.substr( word.length - 2 ) == 'ка' )
+                               word = word.substr(0, word.length - 2 ) + 'ки';
+                       else if ( word.substr( word.length - 2 )  == 'ти' )
+                               word = word.substr(0, word.length - 2 ) + 'тей';
+                       else if ( word.substr( word.length - 2 ) == 'ды' )
+                               word = word.substr(0, word.length - 2 ) + 'дов';
+                       else if ( word.substr( word.length - 3 ) == 'ник' )
+                               word = word.substr(0, word.length - 3 ) + 'ника';
+                       break;
+               case 'accusative': // знахідний відмінок
+                       if ( (  word.substr( word.length - 4 ) == 'вікі' ) || (  word.substr( word.length - 4 ) == 'Вікі' ) ) {
+                       }
+                       else if ( word.substr( word.length - 2 ) == 'ія' )
+                               word = word.substr(0, word.length - 2 ) + 'ію';
+                       break;
+       }
+       return word;
+};
diff --git a/resources/mediawiki.language/mediawiki.language.init.js b/resources/mediawiki.language/mediawiki.language.init.js
new file mode 100644 (file)
index 0000000..b49823c
--- /dev/null
@@ -0,0 +1,61 @@
+/**
+ * Base language object with methods for storing and getting
+ * language data.
+ */
+( function( $, mw ) {
+
+       var language = {
+               /**
+                * @var data {Object} Language related data (keyed by language,
+                * contains instances of mw.Map).
+                * @example Set data
+                * <code>
+                *     // Override, extend or create the language data object of 'nl'
+                *     mw.language.setData( 'nl', 'myKey', 'My value' );
+                *
+                *     // Set multiple values at once
+                *     mw.language.setData( 'nl', { 'foo': 'X', 'bar': 'Y' } );
+                * </code>
+                * @example Get GrammarForms data for language 'nl':
+                * <code>
+                *     var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
+                * </code>
+                */
+               data: {},
+
+               /**
+                * Convenience method for retreiving language data by language code and data key,
+                * covering for the potential inexistance of a data object for this langiage.
+                * @param langCode {String}
+                * @param dataKey {String}
+                * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for
+                  the specified langCode).
+                */
+               getData: function ( langCode, dataKey ) {
+                       var langData = language.data;
+                       if ( langData[langCode] instanceof mw.Map ) {
+                               return langData[langCode].get( dataKey );
+                       }
+                       return undefined;
+               },
+
+               /**
+                * Convenience method for setting language data by language code and data key.
+                * Creates the data mw.Map if there isn't one for the specified language already.
+                *
+                * @param langCode {String}
+                * @param dataKey {String|Object} Key or object of key/values.
+                * @param value {mixed} Value for dataKey, ignored if dataKey is an object.
+                */
+               setData: function ( langCode, dataKey, value ) {
+                       var langData = language.data;
+                       if ( !( langData[langCode] instanceof mw.Map ) ) {
+                               langData[langCode] = new mw.Map();
+                       }
+                       langData[langCode].set( dataKey, value );
+               }
+       };
+
+       mw.language = language;
+
+} )( jQuery, mediaWiki );
index 67b605c..87a6a8f 100644 (file)
@@ -1,58 +1,12 @@
 /**
- * Base language object
- *
  * Localized Language support attempts to mirror some of the functionality of
- * Language.php in MediaWiki. This object contains methods for loading and
- * transforming message text.
+ * Language.php in MediaWiki.
+ * This adds methods for transforming message text.
  */
 ( function( $, mw ) {
 
 var language = {
-       /**
-        * @var data {Object} Language related data (keyed by language,
-        * contains instances of mw.Map).
-        * @example Set data
-        * <code>
-        *     // Override, extend or create the language data object of 'nl'
-        *     mw.language.setData( 'nl', 'myKey', 'My value' );
-        * </code>
-        * @example Get GrammarForms data for language 'nl':
-        * <code>
-        *     var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
-        * </code>
-        */
-       data: {},
 
-       /**
-        * Convenience method for retreiving language data by language code and data key,
-        * covering for the potential inexistance of a data object for this langiage.
-        * @param langCode {String}
-        * @param dataKey {String}
-        * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for
-          the specified langCode).
-        */
-       getData: function ( langCode, dataKey ) {
-               var langData = language.data;
-               if ( langData[langCode] instanceof mw.Map ) {
-                       return langData[langCode].get( dataKey );
-               }
-               return undefined;
-       },
-
-       /**
-        * Convenience method for setting language data by language code and data key.
-        * Creates a data object if there isn't one for the specified language already.
-        * @param langCode {String}
-        * @param dataKey {String}
-        * @param value {mixed}
-        */
-       setData: function ( langCode, dataKey, value ) {
-               var langData = language.data;
-               if ( !( langData[langCode] instanceof mw.Map ) ) {
-                       langData[langCode] = new mw.Map();
-               }
-               langData[langCode].set( dataKey, value );
-       },
        /**
         * Process the PLURAL template substitution
         *
@@ -178,7 +132,7 @@ var language = {
         * @return {String}
         */
        convertGrammar: function ( word, form ) {
-               var grammarForms = language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
+               var grammarForms = mw.language.getData( mw.config.get( 'wgContentLanguage' ), 'grammarForms' );
                if ( grammarForms && grammarForms[form] ) {
                        return grammarForms[form][word] || word;
                }
@@ -189,6 +143,6 @@ var language = {
        'digitTransformTable': null
 };
 
-mw.language = language;
+$.extend( mw.language, language );
 
 } )( jQuery, mediaWiki );
index 8865d04..04954e8 100644 (file)
@@ -1,21 +1,33 @@
 /*
  * JavaScript for Special:Search
  */
-jQuery( function( $ ) {
+( function( $, mw ) { $( function() {
 
 // Emulate HTML5 autofocus behavior in non HTML5 compliant browsers
 if ( !( 'autofocus' in document.createElement( 'input' ) ) ) {
        $( 'input[autofocus]:first' ).focus();
 }
 
-// Bind check all/none button
+// Create check all/none button
 var $checkboxes = $('#powersearch input[id^=mw-search-ns]');
-$('#mw-search-toggleall').click( function() {
-       $checkboxes.prop("checked", true);
-} );
-$('#mw-search-togglenone').click( function() {
-       $checkboxes.prop("checked", false);
-} );
+$('#mw-search-togglebox').append(
+       $('<label />')
+               .text(mw.msg('powersearch-togglelabel'))
+).append(
+       $('<input type="button" />')
+               .attr('id', 'mw-search-toggleall')
+               .attr('value', mw.msg('powersearch-toggleall'))
+               .click( function() {
+                       $checkboxes.prop('checked', true);
+               } )
+).append(
+       $('<input type="button" />')
+               .attr('id', 'mw-search-togglenone')
+               .attr('value', mw.msg('powersearch-togglenone'))
+               .click( function() {
+                       $checkboxes.prop('checked', false);
+               } )
+);
 
 // Change the header search links to what user entered
 var headerLinks = $('.search-types a');
@@ -34,4 +46,4 @@ $('#searchText, #powerSearchText').change(function() {
        });
 }).trigger('change');
 
-} );
+} ); } )( jQuery, mediaWiki );
index 2957674..e8a0118 100644 (file)
@@ -56,7 +56,7 @@
  *
  */
 
-( function( $, mw ) {
+( function ( mw, $ ) {
 
        /**
         * Function that's useful when constructing the URI string -- we frequently encounter the pattern of
@@ -70,9 +70,8 @@
        function cat( pre, val, post, raw ) {
                if ( val === undefined || val === null || val === '' ) {
                        return '';
-               } else {
-                       return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
                }
+               return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
        }
 
        // Regular expressions to parse many common URIs.
@@ -98,7 +97,8 @@
         * We use a factory to inject a document location, for relative URLs, including protocol-relative URLs.
         * so the library is still testable & purely functional.
         */
-       mw.UriRelative = function( documentLocation ) {
+       mw.UriRelative = function ( documentLocation ) {
+               var defaultUri;
 
                /**
                 * Constructs URI object. Throws error if arguments are illegal/impossible, or otherwise don't parse.
 
                        if ( uri !== undefined && uri !== null || uri !== '' ) {
                                if ( typeof uri === 'string' ) {
-                                       this._parse( uri, options );
+                                       this.parse( uri, options );
                                } else if ( typeof uri === 'object' ) {
-                                       var _this = this;
-                                       $.each( properties, function( i, property ) {
-                                               _this[property] = uri[property];
+                                       var uriObj = this;
+                                       $.each( properties, function ( i, property ) {
+                                               uriObj[property] = uri[property];
                                        } );
                                        if ( this.query === undefined ) {
                                                this.query = {};
                 * @param {String} string
                 * @return {String} encoded for URI
                 */
-               Uri.encode = function( s ) {
+               Uri.encode = function ( s ) {
                        return encodeURIComponent( s )
                                .replace( /!/g, '%21').replace( /'/g, '%27').replace( /\(/g, '%28')
                                .replace( /\)/g, '%29').replace( /\*/g, '%2A')
                 * @param {String} string encoded for URI
                 * @return {String} decoded string
                 */
-               Uri.decode = function( s ) {
+               Uri.decode = function ( s ) {
                        return decodeURIComponent( s.replace( /\+/g, '%20' ) );
                };
 
                         * @param {Object} options
                         * @return {Boolean} success
                         */
-                       _parse: function( str, options ) {
-                               var matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
-                               var uri = this;
-                               $.each( properties, function( i, property ) {
+                       parse: function ( str, options ) {
+                               var q,
+                                       uri = this,
+                                       matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
+                               $.each( properties, function ( i, property ) {
                                        uri[ property ] = matches[ i+1 ];
                                } );
 
                                // uri.query starts out as the query string; we will parse it into key-val pairs then make
                                // that object the "query" property.
                                // we overwrite query in uri way to make cloning easier, it can use the same list of properties.
-                               var q = {};
+                               q = {};
                                // using replace to iterate over a string
                                if ( uri.query ) {
                                        uri.query.replace( /(?:^|&)([^&=]*)(?:(=)([^&]*))?/g, function ($0, $1, $2, $3) {
+                                               var k, v;
                                                if ( $1 ) {
-                                                       var k = Uri.decode( $1 );
-                                                       var v = ( $2 === '' || $2 === undefined ) ? null : Uri.decode( $3 );
+                                                       k = Uri.decode( $1 );
+                                                       v = ( $2 === '' || $2 === undefined ) ? null : Uri.decode( $3 );
 
                                                        // If overrideKeys, always (re)set top level value.
                                                        // If not overrideKeys but this key wasn't set before, then we set it as well.
                         * Returns user and password portion of a URI.
                         * @return {String}
                         */
-                       getUserInfo: function() {
+                       getUserInfo: function () {
                                return cat( '', this.user, cat( ':', this.password, '' ) );
                        },
 
                         * Gets host and port portion of a URI.
                         * @return {String}
                         */
-                       getHostPort: function() {
+                       getHostPort: function () {
                                return this.host + cat( ':', this.port, '' );
                        },
 
                         * In most real-world URLs, this is simply the hostname, but it is more general.
                         * @return {String}
                         */
-                       getAuthority: function() {
+                       getAuthority: function () {
                                return cat( '', this.getUserInfo(), '@' ) + this.getHostPort();
                        },
 
                         * Does not preserve the order of arguments passed into the URI. Does handle escaping.
                         * @return {String}
                         */
-                       getQueryString: function() {
+                       getQueryString: function () {
                                var args = [];
-                               $.each( this.query, function( key, val ) {
-                                       var k = Uri.encode( key );
-                                       var vals = val === null ? [ null ] : $.makeArray( val );
-                                       $.each( vals, function( i, v ) {
+                               $.each( this.query, function ( key, val ) {
+                                       var k = Uri.encode( key ),
+                                               vals = val === null ? [ null ] : $.makeArray( val );
+                                       $.each( vals, function ( i, v ) {
                                                args.push( k + ( v === null ? '' : '=' + Uri.encode( v ) ) );
                                        } );
                                } );
                         * Returns everything after the authority section of the URI
                         * @return {String}
                         */
-                       getRelativePath: function() {
+                       getRelativePath: function () {
                                return this.path + cat( '?', this.getQueryString(), '', true ) + cat( '#', this.fragment, '' );
                        },
 
                         * Gets the entire URI string. May not be precisely the same as input due to order of query arguments.
                         * @return {String} the URI string
                         */
-                       toString: function() {
+                       toString: function () {
                                return this.protocol + '://' + this.getAuthority() + this.getRelativePath();
                        },
 
                         * Clone this URI
                         * @return {Object} new URI object with same properties
                         */
-                       clone: function() {
+                       clone: function () {
                                return new Uri( this );
                        },
 
                         * @param {Object} query parameters in key-val form to override or add
                         * @return {Object} this URI object
                         */
-                       extend: function( parameters ) {
+                       extend: function ( parameters ) {
                                $.extend( this.query, parameters );
                                return this;
                        }
                };
 
-               var defaultUri = new Uri( documentLocation );
+               defaultUri = new Uri( documentLocation );
 
                return Uri;     
        };
                mw.Uri = mw.UriRelative( document.location.href );
        }
 
-} )( jQuery, mediaWiki );
+}( mediaWiki, jQuery ) );
index 4c20fad..9202d2e 100644 (file)
                        // Get last match, stop at hash
                        var     re = new RegExp( '^[^#]*[&?]' + $.escapeRE( param ) + '=([^&#]*)' ),
                                m = re.exec( url );
-                       if ( m && m.length > 1 ) {
+                       if ( m ) {
                                // Beware that decodeURIComponent is not required to understand '+'
                                // by spec, as encodeURIComponent does not produce it.
                                return decodeURIComponent( m[1].replace( /\+/g, '%20' ) );
index 2362263..8416393 100644 (file)
@@ -3,6 +3,21 @@
  * Chick: A lightweight Monobook skin with no sidebar, the sidebar links are
  * given at the bottom of the page instead, as in the unstyled MySkin.
  *
+ * 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 Skins
  */
index c5b3b11..214d9bc 100644 (file)
@@ -2,6 +2,21 @@
 /**
  * Cologne Blue: A nicer-looking alternative to Standard.
  *
+ * 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
+ *
  * @todo document
  * @file
  * @ingroup Skins
index ebd574f..efcf1de 100644 (file)
@@ -2,6 +2,21 @@
 /**
  * Modern skin, derived from monobook template.
  *
+ * 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
+ *
  * @todo document
  * @file
  * @ingroup Skins
index 857db0f..8282fb3 100644 (file)
@@ -1,10 +1,25 @@
 <?php
 /**
- * MonoBook nouveau
+ * MonoBook nouveau.
  *
  * Translated from gwicke's previous TAL template version to remove
  * dependency on PHPTAL.
  *
+ * 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
+ *
  * @todo document
  * @file
  * @ingroup Skins
index 8859a71..fb49b88 100644 (file)
@@ -1,7 +1,22 @@
 <?php
 /**
  * MySkin: Monobook without the CSS. The idea is that you
- * customise it using user or site CSS
+ * customise it using user or site CSS.
+ *
+ * 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 Skins
index 21d3578..98437e2 100644 (file)
@@ -2,6 +2,21 @@
 /**
  * Nostalgia: A skin which looks like Wikipedia did in its first year (2001).
  *
+ * 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 Skins
  */
index 0e1668b..d06bdfd 100644 (file)
@@ -3,6 +3,21 @@
  * Simple: A lightweight skin with a simple white-background sidebar and no
  * top bar.
  *
+ * 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 Skins
  */
index 04413b5..6ac3f08 100644 (file)
@@ -3,6 +3,21 @@
  * Vector - Modern version of MonoBook with fresh look and many usability
  * improvements.
  *
+ * 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
+ *
  * @todo document
  * @file
  * @ingroup Skins
index bcdbe8c..2ef95fa 100644 (file)
@@ -2124,6 +2124,8 @@ Mixed list
 **#Number on level 3
 *#number level 2
 *Level 1
+*** Level 3
+#** Level 3, but ordered
 !! result
 <ul><li>Mixed list
 <ol><li> with numbers
@@ -2146,10 +2148,96 @@ Mixed list
 <ol><li>number level 2
 </li></ol>
 </li><li>Level 1
+<ul><li><ul><li> Level 3
+</li></ul>
+</li></ul>
+</li></ul>
+<ol><li><ul><li><ul><li> Level 3, but ordered
+</li></ul>
+</li></ul>
+</li></ol>
+
+!! end
+
+!! test
+Nested lists 1
+!! input
+*foo
+**bar
+!! result
+<ul><li>foo
+<ul><li>bar
+</li></ul>
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 2
+!! input
+**foo
+*bar
+!! result
+<ul><li><ul><li>foo
+</li></ul>
+</li><li>bar
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 3 (first element empty)
+!! input
+*
+**bar
+!! result
+<ul><li>
+<ul><li>bar
+</li></ul>
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 4 (first element empty)
+!! input
+**
+*bar
+!! result
+<ul><li><ul><li>
+</li></ul>
+</li><li>bar
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 5 (both elements empty)
+!! input
+**
+*
+!! result
+<ul><li><ul><li>
+</li></ul>
+</li><li>
+</li></ul>
+
+!! end
+
+!! test
+Nested lists 6 (both elements empty)
+!! input
+*
+**
+!! result
+<ul><li>
+<ul><li>
+</li></ul>
 </li></ul>
 
 !! end
 
+
 !! test
 List items are not parsed correctly following a <pre> block (bug 785)
 !! input
@@ -2194,6 +2282,27 @@ List items from template
 
 !! end
 
+!! test
+List interrupted by empty line or heading
+!! input
+* foo
+
+** bar
+== A heading ==
+* Another list item
+!! result
+<ul><li> foo
+</li></ul>
+<ul><li><ul><li> bar
+</li></ul>
+</li></ul>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: A heading">edit</a>]</span> <span class="mw-headline" id="A_heading"> A heading </span></h2>
+<ul><li> Another list item
+</li></ul>
+
+!!end
+
+
 ###
 ### Magic Words
 ###
@@ -3525,15 +3634,15 @@ pst
 [[Bar:Article(context)|]]
 [[:Bar:Article(context)|]]
 [[|Article(context)]]
-[[Bar:X (Y) Z|]]
-[[:Bar:X (Y) Z|]]
+[[Bar:X(Y)Z|]]
+[[:Bar:X(Y)Z|]]
 !! result
 [[Article(context)|Article]]
 [[Bar:Article(context)|Article]]
 [[:Bar:Article(context)|Article]]
 [[Article(context)]]
-[[Bar:X (Y) Z|X (Y) Z]]
-[[:Bar:X (Y) Z|X (Y) Z]]
+[[Bar:X(Y)Z|X(Y)Z]]
+[[:Bar:X(Y)Z|X(Y)Z]]
 !! end
 
 !! test
@@ -3576,6 +3685,26 @@ pst
 [[:Bar:X(Y)Z|X(Y)Z]]
 !! end
 
+!! test
+pre-save transform: context links ("pipe trick") with commas (bug 21660)
+!! options
+pst
+!! input
+[[Article (context), context|]]
+[[Article (context),context|]]
+[[Bar:Article (context), context|]]
+[[Bar:Article (context),context|]]
+[[:Bar:Article (context), context|]]
+[[:Bar:Article (context),context|]]
+!! result
+[[Article (context), context|Article]]
+[[Article (context),context|Article]]
+[[Bar:Article (context), context|Article]]
+[[Bar:Article (context),context|Article]]
+[[:Bar:Article (context), context|Article]]
+[[:Bar:Article (context),context|Article]]
+!! end
+
 !! test
 pre-save transform: trim trailing empty lines
 !! options
@@ -9361,6 +9490,17 @@ Language parser function
 </p>
 !! end
 
+!!test
+Padleft and padright as substr
+!! input
+{{padleft:|3|abcde}}
+{{padright:|3|abcde}}
+!! result
+<p>abc
+abc
+</p>
+!! end
+
 TODO:
 more images
 more tables
index 9a275be..9dcaf2b 100644 (file)
@@ -79,6 +79,53 @@ abstract class ORMRowTest extends \MediaWikiTestCase {
                return new $class( $this->getTableInstance(), $data, $loadDefaults );
        }
 
+       /**
+        * @since 1.20
+        * @return array
+        */
+       protected function getMockValues() {
+               return array(
+                       'id' => 1,
+                       'str' => 'foobar4645645',
+                       'int' => 42,
+                       'float' => 4.2,
+                       'bool' => true,
+                       'array' => array( 42, 'foobar' ),
+                       'blob' => new stdClass()
+               );
+       }
+
+       /**
+        * @since 1.20
+        * @return array
+        */
+       protected function getMockFields() {
+               $mockValues = $this->getMockValues();
+               $mockFields = array();
+
+               foreach ( $this->getTableInstance()->getFields() as $name => $type ) {
+                       if ( $name !== 'id' ) {
+                               $mockFields[$name] = $mockValues[$type];
+                       }
+               }
+
+               return $mockFields;
+       }
+
+       /**
+        * @since 1.20
+        * @return array of IORMRow
+        */
+       public function instanceProvider() {
+               $instances = array();
+
+               foreach ( $this->constructorTestProvider() as $arguments ) {
+                       $instances[] = array( call_user_func_array( array( $this, 'getRowInstance' ), $arguments ) );
+               }
+
+               return $instances;
+       }
+
        /**
         * @dataProvider constructorTestProvider
         */
@@ -129,6 +176,59 @@ abstract class ORMRowTest extends \MediaWikiTestCase {
                $this->verifyFields( $item, $data );
        }
 
+       /**
+        * @dataProvider instanceProvider
+        */
+       public function testSetField( IORMRow $item ) {
+               foreach ( $this->getMockFields() as $name => $value ) {
+                       $item->setField( $name, $value );
+                       $this->assertEquals( $value, $item->getField( $name ) );
+               }
+       }
+
+       /**
+        * @since 1.20
+        * @param array $expected
+        * @param IORMRow $item
+        */
+       protected function assertFieldValues( array $expected, IORMRow $item ) {
+               foreach ( $expected as $name => $type ) {
+                       if ( $name !== 'id' ) {
+                               $this->assertEquals( $expected[$name], $item->getField( $name ) );
+                       }
+               }
+       }
+
+       /**
+        * @dataProvider instanceProvider
+        */
+       public function testSetFields( IORMRow $item ) {
+               $originalValues = $item->getFields();
+
+               $item->setFields( array(), false );
+
+               foreach ( $item->getTable()->getFields() as $name => $type ) {
+                       $originalHas = array_key_exists( $name, $originalValues );
+                       $newHas = $item->hasField( $name );
+
+                       $this->assertEquals( $originalHas, $newHas );
+
+                       if ( $originalHas && $newHas ) {
+                               $this->assertEquals( $originalValues[$name], $item->getField( $name ) );
+                       }
+               }
+
+               $mockFields = $this->getMockFields();
+
+               $item->setFields( $mockFields, false );
+
+               $this->assertFieldValues( $originalValues, $item );
+
+               $item->setFields( $mockFields, true );
+
+               $this->assertFieldValues( $mockFields, $item );
+       }
+
        // TODO: test all of the methods!
 
 }
\ No newline at end of file
index 49c2161..ca3e9e6 100644 (file)
@@ -38,6 +38,8 @@
  * @licence GNU GPL v2+
  * @author Jeroen De Dauw < jeroendedauw@gmail.com >
  */
+require_once dirname( __FILE__ ) . "/ORMRowTest.php";
+
 class TestORMRowTest extends ORMRowTest {
 
        /**
@@ -53,7 +55,7 @@ class TestORMRowTest extends ORMRowTest {
         * @return IORMTable
         */
        protected function getTableInstance() {
-               return TestORMtable::singleton();
+               return TestORMTable::singleton();
        }
 
        public function setUp() {
index 2b94778..710ad83 100644 (file)
@@ -1392,8 +1392,11 @@ class FileBackendTest extends MediaWikiTestCase {
 
        private function doTestGetFileList() {
                $backendName = $this->backendClass();
-
                $base = $this->baseStorePath();
+
+               // Should have no errors
+               $iter = $this->backend->getFileList( array( 'dir' => "$base/unittest-cont-notexists" ) );
+
                $files = array(
                        "$base/unittest-cont1/test1.txt",
                        "$base/unittest-cont1/test2.txt",
index b73c4a9..e71e76c 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * Base TestCase for dumps
  */
-abstract class DumpTestCase extends MediaWikiTestCase {
+abstract class DumpTestCase extends MediaWikiLangTestCase {
 
        /**
         * exception to be rethrown once in sound PHPUnit surrounding
@@ -72,7 +72,7 @@ abstract class DumpTestCase extends MediaWikiTestCase {
         *
         * Clears $wgUser, and reports errors from addDBData to PHPUnit
         */
-       protected function setUp() {
+       public function setUp() {
                global $wgUser;
 
                parent::setUp();
@@ -295,13 +295,17 @@ abstract class DumpTestCase extends MediaWikiTestCase {
         * @param $text_sha1 string: the base36 SHA-1 of the revision's text
         * @param $text string|false: (optional) The revision's string, or false to check for a
         *            revision stub
+        * @param $parentid int|false: (optional) id of the parent revision
         */
-       protected function assertRevision( $id, $summary, $text_id, $text_bytes, $text_sha1, $text = false ) {
+       protected function assertRevision( $id, $summary, $text_id, $text_bytes, $text_sha1, $text = false, $parentid = false ) {
 
                $this->assertNodeStart( "revision" );
                $this->skipWhitespace();
 
                $this->assertTextNode( "id", $id );
+               if( $parentid ) {
+                       $this->assertTextNode( "parentid", $parentid );
+               }
                $this->assertTextNode( "timestamp", false );
 
                $this->assertNodeStart( "contributor" );
index 9273233..e92b289 100644 (file)
@@ -1,6 +1,6 @@
 <?php
-global $IP;
-require_once( "$IP/maintenance/backupPrefetch.inc" );
+
+require_once dirname( __FILE__ ) . "/../../../maintenance/backupPrefetch.inc";
 
 /**
  * Tests for BaseDump
@@ -150,7 +150,7 @@ class BaseDumpTest extends MediaWikiTestCase {
                $fname = $this->getNewTempFile();
 
                // The header of every prefetch file
-               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="en">
+               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.7/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.7/ http://www.mediawiki.org/xml/export-0.7.xsd" version="0.7" xml:lang="en">
   <siteinfo>
     <sitename>wikisvn</sitename>
     <base>http://localhost/wiki-svn/index.php/Main_Page</base>
@@ -195,8 +195,8 @@ class BaseDumpTest extends MediaWikiTestCase {
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP1Summary1</comment>
-      <text xml:space="preserve">BackupDumperTestP1Text1</text>
       <sha1>0bolhl6ol7i6x0e7yq91gxgaan39j87</sha1>
+      <text xml:space="preserve">BackupDumperTestP1Text1</text>
     </revision>
   </page>
 ';
@@ -207,13 +207,14 @@ class BaseDumpTest extends MediaWikiTestCase {
     <id>2</id>
     <revision>
       <id>2</id>
+      <parentid>5</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary1</comment>
-      <text xml:space="preserve">BackupDumperTestP2Text1</text>
       <sha1>jprywrymfhysqllua29tj3sc7z39dl2</sha1>
+      <text xml:space="preserve">BackupDumperTestP2Text1</text>
     </revision>
     <revision>
       <id>5</id>
@@ -222,8 +223,8 @@ class BaseDumpTest extends MediaWikiTestCase {
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>BackupDumperTestP2Summary4 extra</comment>
-      <text xml:space="preserve">BackupDumperTestP2Text4 some additional Text</text>
       <sha1>6o1ciaxa6pybnqprmungwofc4lv00wv</sha1>
+      <text xml:space="preserve">BackupDumperTestP2Text4 some additional Text</text>
     </revision>
   </page>
 ';
@@ -239,8 +240,8 @@ class BaseDumpTest extends MediaWikiTestCase {
         <ip>127.0.0.1</ip>
       </contributor>
       <comment>Talk BackupDumperTestP1 Summary1</comment>
-      <text xml:space="preserve">Talk about BackupDumperTestP1 Text1</text>
       <sha1>nktofwzd0tl192k3zfepmlzxoax1lpe</sha1>
+      <text xml:space="preserve">Talk about BackupDumperTestP1 Text1</text>
     </revision>
   </page>
 ';
index 972fc73..6cdba85 100644 (file)
@@ -1,7 +1,6 @@
 <?php
-global $IP;
-require_once( "$IP/maintenance/backup.inc" );
-require_once( "$IP/maintenance/backupTextPass.inc" );
+
+require_once dirname( __FILE__ ) . "/../../../maintenance/backupTextPass.inc";
 
 /**
  * Tests for page dumps of BackupDumper
@@ -73,7 +72,7 @@ class TextPassDumperTest extends DumpTestCase {
 
        }
 
-       protected function setUp() {
+       public function setUp() {
                parent::setUp();
 
                // Since we will restrict dumping by page ranges (to allow
@@ -113,13 +112,13 @@ class TextPassDumperTest extends DumpTestCase {
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
-                       "BackupDumperTestP2Text1" );
+                       "BackupDumperTestP2Text1", $this->revId2_2 );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                        $this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                       "BackupDumperTestP2Text2" );
+                       "BackupDumperTestP2Text2", $this->revId2_3 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                        $this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                       "BackupDumperTestP2Text3" );
+                       "BackupDumperTestP2Text3", $this->revId2_4 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
                        $this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
                        "BackupDumperTestP2Text4 some additional Text" );
@@ -179,15 +178,15 @@ class TextPassDumperTest extends DumpTestCase {
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
-                       "BackupDumperTestP2Text1" );
+                       "BackupDumperTestP2Text1", $this->revId2_2 );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                        $this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                       "BackupDumperTestP2Text2" );
+                       "BackupDumperTestP2Text2", $this->revId2_3 );
                // Prefetch kicks in. This is still the SHA-1 of the original text,
                // But the actual text (with different SHA-1) comes from prefetch.
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                        $this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                       "Prefetch_________2Text3" );
+                       "Prefetch_________2Text3", $this->revId2_4 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
                        $this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
                        "BackupDumperTestP2Text4 some additional Text" );
@@ -331,13 +330,13 @@ class TextPassDumperTest extends DumpTestCase {
                                        "BackupDumperTestP2" );
                                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                                        $this->textId2_1, false, "jprywrymfhysqllua29tj3sc7z39dl2",
-                                       "BackupDumperTestP2Text1" );
+                                       "BackupDumperTestP2Text1", $this->revId2_2 );
                                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                                        $this->textId2_2, false, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                                       "BackupDumperTestP2Text2" );
+                                       "BackupDumperTestP2Text2", $this->revId2_3 );
                                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                                        $this->textId2_3, false, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                                       "BackupDumperTestP2Text3" );
+                                       "BackupDumperTestP2Text3", $this->revId2_4 );
                                $this->assertRevision( $this->revId2_4,
                                        "BackupDumperTestP2Summary4 extra",
                                        $this->textId2_4, false, "6o1ciaxa6pybnqprmungwofc4lv00wv",
@@ -429,10 +428,10 @@ class TextPassDumperTest extends DumpTestCase {
                if ( $fname === null ) {
                        $fname = $this->getNewTempFile();
                }
-               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.6/" '
+               $header = '<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.7/" '
                        . 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
-                       . 'xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.6/ '
-                       . 'http://www.mediawiki.org/xml/export-0.6.xsd" version="0.6" xml:lang="en">
+                       . 'xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.7/ '
+                       . 'http://www.mediawiki.org/xml/export-0.7.xsd" version="0.7" xml:lang="en">
   <siteinfo>
     <sitename>wikisvn</sitename>
     <base>http://localhost/wiki-svn/index.php/Main_Page</base>
@@ -489,6 +488,7 @@ class TextPassDumperTest extends DumpTestCase {
     <id>' . ( $this->pageId2 + $i * 4 ) . '</id>
     <revision>
       <id>' . $this->revId2_1 . '</id>
+      <parentid>' . $this->revId2_2 . '</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
@@ -499,6 +499,7 @@ class TextPassDumperTest extends DumpTestCase {
     </revision>
     <revision>
       <id>' . $this->revId2_2 . '</id>
+      <parentid>' . $this->revId2_3 . '</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
@@ -509,6 +510,7 @@ class TextPassDumperTest extends DumpTestCase {
     </revision>
     <revision>
       <id>' . $this->revId2_3 . '</id>
+      <parentid>' . $this->revId2_4 . '</parentid>
       <timestamp>2012-04-01T16:46:05Z</timestamp>
       <contributor>
         <ip>127.0.0.1</ip>
index 205700e..925e277 100644 (file)
@@ -65,7 +65,7 @@ class BackupDumperPageTest extends DumpTestCase {
 
        }
 
-       protected function setUp() {
+       public function setUp() {
                parent::setUp();
 
                // Since we will restrict dumping by page ranges (to allow
@@ -108,13 +108,13 @@ class BackupDumperPageTest extends DumpTestCase {
                        "BackupDumperTestP2Text1" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
                        $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95",
-                       "BackupDumperTestP2Text2" );
+                       "BackupDumperTestP2Text2", $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
                        $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r",
-                       "BackupDumperTestP2Text3" );
+                       "BackupDumperTestP2Text3", $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
                        $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv",
-                       "BackupDumperTestP2Text4 some additional Text" );
+                       "BackupDumperTestP2Text4 some additional Text", $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -156,11 +156,11 @@ class BackupDumperPageTest extends DumpTestCase {
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
-                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95" );
+                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
-                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r" );
+                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -199,7 +199,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -239,7 +239,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -310,11 +310,11 @@ class BackupDumperPageTest extends DumpTestCase {
                $this->assertRevision( $this->revId2_1, "BackupDumperTestP2Summary1",
                        $this->textId2_1, 23, "jprywrymfhysqllua29tj3sc7z39dl2" );
                $this->assertRevision( $this->revId2_2, "BackupDumperTestP2Summary2",
-                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95" );
+                       $this->textId2_2, 23, "b7vj5ks32po5m1z1t1br4o7scdwwy95", false, $this->revId2_1 );
                $this->assertRevision( $this->revId2_3, "BackupDumperTestP2Summary3",
-                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r" );
+                       $this->textId2_3, 23, "jfunqmh1ssfb8rs43r19w98k28gg56r", false, $this->revId2_2 );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -342,7 +342,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
@@ -370,7 +370,7 @@ class BackupDumperPageTest extends DumpTestCase {
                // Page 2
                $this->assertPageStart( $this->pageId2, NS_MAIN, "BackupDumperTestP2" );
                $this->assertRevision( $this->revId2_4, "BackupDumperTestP2Summary4 extra",
-                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv" );
+                       $this->textId2_4, 44, "6o1ciaxa6pybnqprmungwofc4lv00wv", false, $this->revId2_3 );
                $this->assertPageEnd();
 
                // Page 3
index 42a247c..f0689b6 100644 (file)
@@ -1,7 +1,6 @@
 <?php
-global $IP;
-require_once( "$IP/maintenance/fetchText.php" );
 
+require_once dirname( __FILE__ ) . "/../../../maintenance/fetchText.php";
 
 /**
  * Mock for the input/output of FetchText
index 29e7fe6..8635614 100644 (file)
@@ -1,6 +1,6 @@
 <?php
-global $IP;
-require_once( "$IP/maintenance/getSlaveServer.php" );
+
+require_once dirname( __FILE__ ) . "/../../../maintenance/getSlaveServer.php";
 
 /**
  * Tests for getSlaveServer