Merge "ApiQueryLinks: Remove index forcing"
authorMaxSem <maxsem.wiki@gmail.com>
Thu, 7 Sep 2017 22:49:38 +0000 (22:49 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 7 Sep 2017 22:49:38 +0000 (22:49 +0000)
237 files changed:
.gitmodules [new file with mode: 0644]
RELEASE-NOTES-1.30
autoload.php
extensions/.gitignore [deleted file]
extensions/AbuseFilter [new submodule]
extensions/ActiveAbstract [new submodule]
extensions/AntiSpoof [new submodule]
extensions/ApiFeatureUsage [new submodule]
extensions/ArticleCreationWorkflow [new submodule]
extensions/Babel [new submodule]
extensions/BetaFeatures [new submodule]
extensions/BounceHandler [new submodule]
extensions/Calendar [new submodule]
extensions/Campaigns [new submodule]
extensions/Capiunto [new submodule]
extensions/CategoryTree [new submodule]
extensions/CentralAuth [new submodule]
extensions/CentralNotice [new submodule]
extensions/CharInsert [new submodule]
extensions/CheckUser [new submodule]
extensions/CirrusSearch [new submodule]
extensions/Cite [new submodule]
extensions/CiteThisPage [new submodule]
extensions/Citoid [new submodule]
extensions/CleanChanges [new submodule]
extensions/CodeEditor [new submodule]
extensions/CodeMirror [new submodule]
extensions/CodeReview [new submodule]
extensions/Cognate [new submodule]
extensions/CollaborationKit [new submodule]
extensions/Collection [new submodule]
extensions/CommonsMetadata [new submodule]
extensions/ConfirmEdit [new submodule]
extensions/ContactPage [new submodule]
extensions/ContentTranslation [new submodule]
extensions/ContributionTracking [new submodule]
extensions/CreditsSource [new submodule]
extensions/Dashiki [new submodule]
extensions/DisableAccount [new submodule]
extensions/Disambiguator [new submodule]
extensions/DismissableSiteNotice [new submodule]
extensions/DonationInterface [new submodule]
extensions/DoubleWiki [new submodule]
extensions/DynamicSidebar [new submodule]
extensions/Echo [new submodule]
extensions/EducationProgram [new submodule]
extensions/Elastica [new submodule]
extensions/ElectronPdfService [new submodule]
extensions/EventBus [new submodule]
extensions/EventLogging [new submodule]
extensions/ExtensionDistributor [new submodule]
extensions/FeaturedFeeds [new submodule]
extensions/FlaggedRevs [new submodule]
extensions/Flow [new submodule]
extensions/FundraiserLandingPage [new submodule]
extensions/FundraisingTranslateWorkflow [new submodule]
extensions/GWToolset [new submodule]
extensions/Gadgets [new submodule]
extensions/GeoCrumbs [new submodule]
extensions/GeoData [new submodule]
extensions/GettingStarted [new submodule]
extensions/GlobalBlocking [new submodule]
extensions/GlobalCssJs [new submodule]
extensions/GlobalUsage [new submodule]
extensions/GlobalUserPage [new submodule]
extensions/GoogleNewsSitemap [new submodule]
extensions/Graph [new submodule]
extensions/GuidedTour [new submodule]
extensions/ImageMap [new submodule]
extensions/InputBox [new submodule]
extensions/Insider [new submodule]
extensions/Interwiki [new submodule]
extensions/InterwikiSorting [new submodule]
extensions/Josa [new submodule]
extensions/JsonConfig [new submodule]
extensions/Kartographer [new submodule]
extensions/LabeledSectionTransclusion [new submodule]
extensions/LandingCheck [new submodule]
extensions/LdapAuthentication [new submodule]
extensions/Linter [new submodule]
extensions/LiquidThreads [new submodule]
extensions/Listings [new submodule]
extensions/LocalisationUpdate [new submodule]
extensions/LoginNotify [new submodule]
extensions/MapSources [new submodule]
extensions/MassMessage [new submodule]
extensions/Math [new submodule]
extensions/MobileApp [new submodule]
extensions/MobileFrontend [new submodule]
extensions/MultimediaViewer [new submodule]
extensions/MwEmbedSupport [new submodule]
extensions/NavigationTiming [new submodule]
extensions/NewUserMessage [new submodule]
extensions/Newsletter [new submodule]
extensions/Nuke [new submodule]
extensions/OATHAuth [new submodule]
extensions/OAuth [new submodule]
extensions/ORES [new submodule]
extensions/OpenStackManager [new submodule]
extensions/PageAssessments [new submodule]
extensions/PageImages [new submodule]
extensions/PageTriage [new submodule]
extensions/PageViewInfo [new submodule]
extensions/PagedTiffHandler [new submodule]
extensions/ParserFunctions [new submodule]
extensions/ParserMigration [new submodule]
extensions/ParsoidBatchAPI [new submodule]
extensions/PdfHandler [new submodule]
extensions/Petition [new submodule]
extensions/Poem [new submodule]
extensions/PoolCounter [new submodule]
extensions/Popups [new submodule]
extensions/ProofreadPage [new submodule]
extensions/QuickSurveys [new submodule]
extensions/Quiz [new submodule]
extensions/README [deleted file]
extensions/RSS [new submodule]
extensions/RelatedArticles [new submodule]
extensions/RelatedSites [new submodule]
extensions/Renameuser [new submodule]
extensions/RevisionSlider [new submodule]
extensions/SandboxLink [new submodule]
extensions/Score [new submodule]
extensions/Scribunto [new submodule]
extensions/SearchExtraNS [new submodule]
extensions/SecurePoll [new submodule]
extensions/ShortUrl [new submodule]
extensions/SiteMatrix [new submodule]
extensions/SpamBlacklist [new submodule]
extensions/SubPageList3 [new submodule]
extensions/SubpageSortkey [new submodule]
extensions/SyntaxHighlight_GeSHi [new submodule]
extensions/TemplateData [new submodule]
extensions/TemplateSandbox [new submodule]
extensions/TemplateStyles [new submodule]
extensions/TextExtracts [new submodule]
extensions/Thanks [new submodule]
extensions/TimedMediaHandler [new submodule]
extensions/TitleBlacklist [new submodule]
extensions/TocTree [new submodule]
extensions/TorBlock [new submodule]
extensions/Translate [new submodule]
extensions/TranslationNotifications [new submodule]
extensions/TrustedXFF [new submodule]
extensions/TwoColConflict [new submodule]
extensions/UnicodeConverter [new submodule]
extensions/UniversalLanguageSelector [new submodule]
extensions/UploadWizard [new submodule]
extensions/UploadsLink [new submodule]
extensions/UrlShortener [new submodule]
extensions/UserMerge [new submodule]
extensions/VectorBeta [new submodule]
extensions/VipsScaler [new submodule]
extensions/VisualEditor [new submodule]
extensions/WikiEditor [new submodule]
extensions/WikiLove [new submodule]
extensions/Wikidata [new submodule]
extensions/WikidataPageBanner [new submodule]
extensions/WikimediaEvents [new submodule]
extensions/WikimediaIncubator [new submodule]
extensions/WikimediaMaintenance [new submodule]
extensions/WikimediaMessages [new submodule]
extensions/XAnalytics [new submodule]
extensions/ZeroBanner [new submodule]
extensions/ZeroPortal [new submodule]
extensions/cldr [new submodule]
extensions/intersection [new submodule]
extensions/timeline [new submodule]
extensions/wikihiero [new submodule]
includes/DefaultSettings.php
includes/Defines.php
includes/OrderedStreamingForkController.php [new file with mode: 0644]
includes/Title.php
includes/api/ApiQueryRecentChanges.php
includes/changes/CategoryMembershipChange.php
includes/changes/RecentChange.php
includes/collation/CollationFa.php
includes/exception/MWExceptionHandler.php
includes/installer/MysqlUpdater.php
includes/specialpage/ChangesListSpecialPage.php
includes/specials/pagers/ContribsPager.php
includes/title/MediaWikiTitleCodec.php
languages/i18n/ais.json
languages/i18n/ar.json
languages/i18n/be-tarask.json
languages/i18n/ce.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/et.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/got.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/hu.json
languages/i18n/it.json
languages/i18n/kab.json
languages/i18n/ko.json
languages/i18n/lfn.json
languages/i18n/mk.json
languages/i18n/mwl.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/or.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/te.json
languages/i18n/zh-hans.json
maintenance/archives/patch-bot_passwords-bp_user-unsigned.sql [new file with mode: 0644]
maintenance/archives/patch-change_tag-ct_log_id-unsigned.sql [new file with mode: 0644]
maintenance/archives/patch-change_tag-ct_rev_id-unsigned.sql [new file with mode: 0644]
maintenance/archives/patch-page_restrictions-pr_user-unsigned.sql [new file with mode: 0644]
maintenance/archives/patch-tag_summary-ts_log_id-unsigned.sql [new file with mode: 0644]
maintenance/archives/patch-tag_summary-ts_rev_id-unsigned.sql [new file with mode: 0644]
maintenance/archives/patch-user-newtalk-userid-unsigned.sql [deleted file]
maintenance/archives/patch-user_newtalk-user_id-unsigned.sql [new file with mode: 0644]
maintenance/archives/patch-user_properties-up_user-unsigned.sql [new file with mode: 0644]
maintenance/tables.sql
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuSectionOptionWidget.less
skins/CologneBlue [new submodule]
skins/MinervaNeue [new submodule]
skins/Modern [new submodule]
skins/MonoBook [new submodule]
skins/Nostalgia [new submodule]
skins/Timeless [new submodule]
skins/Vector [new submodule]
tests/parser/parserTests.txt
tests/phpunit/includes/TitleMethodsTest.php
vendor [new submodule]

diff --git a/.gitmodules b/.gitmodules
new file mode 100644 (file)
index 0000000..9bfb066
--- /dev/null
@@ -0,0 +1,687 @@
+[submodule "extensions/CentralNotice"]
+       path = extensions/CentralNotice
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CentralNotice
+       branch = wmf_deploy
+[submodule "extensions/Wikidata"]
+       path = extensions/Wikidata
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Wikidata
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/AbuseFilter"]
+       path = extensions/AbuseFilter
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ActiveAbstract"]
+       path = extensions/ActiveAbstract
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ActiveAbstract
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/AntiSpoof"]
+       path = extensions/AntiSpoof
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/AntiSpoof
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ApiFeatureUsage"]
+       path = extensions/ApiFeatureUsage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ApiFeatureUsage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Babel"]
+       path = extensions/Babel
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Babel
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/BetaFeatures"]
+       path = extensions/BetaFeatures
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/BetaFeatures
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/BounceHandler"]
+       path = extensions/BounceHandler
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/BounceHandler
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Calendar"]
+       path = extensions/Calendar
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Calendar
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Campaigns"]
+       path = extensions/Campaigns
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Campaigns
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Capiunto"]
+       path = extensions/Capiunto
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Capiunto
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CategoryTree"]
+       path = extensions/CategoryTree
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CategoryTree
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CentralAuth"]
+       path = extensions/CentralAuth
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CentralAuth
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CharInsert"]
+       path = extensions/CharInsert
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CharInsert
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CheckUser"]
+       path = extensions/CheckUser
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CheckUser
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CirrusSearch"]
+       path = extensions/CirrusSearch
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Cite"]
+       path = extensions/Cite
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Cite
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CiteThisPage"]
+       path = extensions/CiteThisPage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CiteThisPage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Citoid"]
+       path = extensions/Citoid
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Citoid
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/cldr"]
+       path = extensions/cldr
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/cldr
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CleanChanges"]
+       path = extensions/CleanChanges
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CleanChanges
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Cognate"]
+       path = extensions/Cognate
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Cognate
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CodeEditor"]
+       path = extensions/CodeEditor
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeEditor
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CodeMirror"]
+       path = extensions/CodeMirror
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeMirror
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CodeReview"]
+       path = extensions/CodeReview
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeReview
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CollaborationKit"]
+       path = extensions/CollaborationKit
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CollaborationKit
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Collection"]
+       path = extensions/Collection
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Collection
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CommonsMetadata"]
+       path = extensions/CommonsMetadata
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CommonsMetadata
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ConfirmEdit"]
+       path = extensions/ConfirmEdit
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ConfirmEdit
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ContactPage"]
+       path = extensions/ContactPage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ContactPage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ContentTranslation"]
+       path = extensions/ContentTranslation
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ContentTranslation
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ContributionTracking"]
+       path = extensions/ContributionTracking
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ContributionTracking
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/CreditsSource"]
+       path = extensions/CreditsSource
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/CreditsSource
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Dashiki"]
+       path = extensions/Dashiki
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Dashiki
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/DisableAccount"]
+       path = extensions/DisableAccount
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/DisableAccount
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Disambiguator"]
+       path = extensions/Disambiguator
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Disambiguator
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/DismissableSiteNotice"]
+       path = extensions/DismissableSiteNotice
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/DismissableSiteNotice
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/DonationInterface"]
+       path = extensions/DonationInterface
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/DonationInterface
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/DoubleWiki"]
+       path = extensions/DoubleWiki
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/DoubleWiki
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/DynamicSidebar"]
+       path = extensions/DynamicSidebar
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/DynamicSidebar
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Echo"]
+       path = extensions/Echo
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/EducationProgram"]
+       path = extensions/EducationProgram
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/EducationProgram
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Elastica"]
+       path = extensions/Elastica
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ElectronPdfService"]
+       path = extensions/ElectronPdfService
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ElectronPdfService
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/EventBus"]
+       path = extensions/EventBus
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/EventBus
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/EventLogging"]
+       path = extensions/EventLogging
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/EventLogging
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ExtensionDistributor"]
+       path = extensions/ExtensionDistributor
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ExtensionDistributor
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/FeaturedFeeds"]
+       path = extensions/FeaturedFeeds
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/FeaturedFeeds
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/FlaggedRevs"]
+       path = extensions/FlaggedRevs
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/FlaggedRevs
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Flow"]
+       path = extensions/Flow
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Flow
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/FundraiserLandingPage"]
+       path = extensions/FundraiserLandingPage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/FundraiserLandingPage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/FundraisingTranslateWorkflow"]
+       path = extensions/FundraisingTranslateWorkflow
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/FundraisingTranslateWorkflow
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Gadgets"]
+       path = extensions/Gadgets
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Gadgets
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GeoCrumbs"]
+       path = extensions/GeoCrumbs
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GeoCrumbs
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GeoData"]
+       path = extensions/GeoData
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GeoData
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GettingStarted"]
+       path = extensions/GettingStarted
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GettingStarted
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Graph"]
+       path = extensions/Graph
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Graph
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GlobalBlocking"]
+       path = extensions/GlobalBlocking
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GlobalBlocking
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GlobalCssJs"]
+       path = extensions/GlobalCssJs
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GlobalCssJs
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GlobalUsage"]
+       path = extensions/GlobalUsage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GlobalUsage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GlobalUserPage"]
+       path = extensions/GlobalUserPage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GlobalUserPage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GoogleNewsSitemap"]
+       path = extensions/GoogleNewsSitemap
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GoogleNewsSitemap
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GuidedTour"]
+       path = extensions/GuidedTour
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GuidedTour
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/GWToolset"]
+       path = extensions/GWToolset
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/GWToolset
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ImageMap"]
+       path = extensions/ImageMap
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ImageMap
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/InputBox"]
+       path = extensions/InputBox
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/InputBox
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Insider"]
+       path = extensions/Insider
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Insider
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/intersection"]
+       path = extensions/intersection
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/intersection
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Interwiki"]
+       path = extensions/Interwiki
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Interwiki
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/InterwikiSorting"]
+       path = extensions/InterwikiSorting
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/InterwikiSorting
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Josa"]
+       path = extensions/Josa
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Josa
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/JsonConfig"]
+       path = extensions/JsonConfig
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/JsonConfig
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Kartographer"]
+       path = extensions/Kartographer
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Kartographer
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/LabeledSectionTransclusion"]
+       path = extensions/LabeledSectionTransclusion
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/LabeledSectionTransclusion
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/LandingCheck"]
+       path = extensions/LandingCheck
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/LandingCheck
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/LdapAuthentication"]
+       path = extensions/LdapAuthentication
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/LdapAuthentication
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Linter"]
+       path = extensions/Linter
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Linter
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/LiquidThreads"]
+       path = extensions/LiquidThreads
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/LiquidThreads
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Listings"]
+       path = extensions/Listings
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Listings
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/LocalisationUpdate"]
+       path = extensions/LocalisationUpdate
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/LocalisationUpdate
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/LoginNotify"]
+       path = extensions/LoginNotify
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/LoginNotify
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/MapSources"]
+       path = extensions/MapSources
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/MapSources
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/MassMessage"]
+       path = extensions/MassMessage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/MassMessage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Math"]
+       path = extensions/Math
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Math
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/MobileApp"]
+       path = extensions/MobileApp
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/MobileApp
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/MobileFrontend"]
+       path = extensions/MobileFrontend
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/MobileFrontend
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/MultimediaViewer"]
+       path = extensions/MultimediaViewer
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/MultimediaViewer
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/MwEmbedSupport"]
+       path = extensions/MwEmbedSupport
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/MwEmbedSupport
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/NavigationTiming"]
+       path = extensions/NavigationTiming
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/NavigationTiming
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Newsletter"]
+       path = extensions/Newsletter
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Newsletter
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/NewUserMessage"]
+       path = extensions/NewUserMessage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/NewUserMessage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Nuke"]
+       path = extensions/Nuke
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Nuke
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/OAuth"]
+       path = extensions/OAuth
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/OAuth
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/OATHAuth"]
+       path = extensions/OATHAuth
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/OATHAuth
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ORES"]
+       path = extensions/ORES
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ORES
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/OpenStackManager"]
+       path = extensions/OpenStackManager
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/OpenStackManager
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/PagedTiffHandler"]
+       path = extensions/PagedTiffHandler
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/PagedTiffHandler
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/PageAssessments"]
+       path = extensions/PageAssessments
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/PageAssessments
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/PageImages"]
+       path = extensions/PageImages
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/PageImages
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/PageTriage"]
+       path = extensions/PageTriage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/PageTriage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/PageViewInfo"]
+       path = extensions/PageViewInfo
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/PageViewInfo
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ParserFunctions"]
+       path = extensions/ParserFunctions
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ParserFunctions
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ParserMigration"]
+       path = extensions/ParserMigration
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ParserMigration
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ParsoidBatchAPI"]
+       path = extensions/ParsoidBatchAPI
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ParsoidBatchAPI
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/PdfHandler"]
+       path = extensions/PdfHandler
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/PdfHandler
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Petition"]
+       path = extensions/Petition
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Petition
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Poem"]
+       path = extensions/Poem
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Poem
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/PoolCounter"]
+       path = extensions/PoolCounter
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/PoolCounter
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Popups"]
+       path = extensions/Popups
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Popups
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ProofreadPage"]
+       path = extensions/ProofreadPage
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ProofreadPage
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/QuickSurveys"]
+       path = extensions/QuickSurveys
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/QuickSurveys
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Quiz"]
+       path = extensions/Quiz
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Quiz
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/RelatedArticles"]
+       path = extensions/RelatedArticles
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/RelatedArticles
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/RelatedSites"]
+       path = extensions/RelatedSites
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/RelatedSites
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Renameuser"]
+       path = extensions/Renameuser
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Renameuser
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/RevisionSlider"]
+       path = extensions/RevisionSlider
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/RevisionSlider
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/RSS"]
+       path = extensions/RSS
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/RSS
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/SandboxLink"]
+       path = extensions/SandboxLink
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/SandboxLink
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Scribunto"]
+       path = extensions/Scribunto
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Scribunto
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Score"]
+       path = extensions/Score
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Score
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/SearchExtraNS"]
+       path = extensions/SearchExtraNS
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/SearchExtraNS
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/SecurePoll"]
+       path = extensions/SecurePoll
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/SecurePoll
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ShortUrl"]
+       path = extensions/ShortUrl
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ShortUrl
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/SiteMatrix"]
+       path = extensions/SiteMatrix
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/SiteMatrix
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/SpamBlacklist"]
+       path = extensions/SpamBlacklist
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/SpamBlacklist
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/SubPageList3"]
+       path = extensions/SubPageList3
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/SubPageList3
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/SubpageSortkey"]
+       path = extensions/SubpageSortkey
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/SubpageSortkey
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/SyntaxHighlight_GeSHi"]
+       path = extensions/SyntaxHighlight_GeSHi
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/SyntaxHighlight_GeSHi
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TemplateData"]
+       path = extensions/TemplateData
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateData
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TemplateSandbox"]
+       path = extensions/TemplateSandbox
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateSandbox
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TemplateStyles"]
+       path = extensions/TemplateStyles
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateStyles
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TextExtracts"]
+       path = extensions/TextExtracts
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TextExtracts
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Thanks"]
+       path = extensions/Thanks
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Thanks
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TimedMediaHandler"]
+       path = extensions/TimedMediaHandler
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TimedMediaHandler
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/timeline"]
+       path = extensions/timeline
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/timeline
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TitleBlacklist"]
+       path = extensions/TitleBlacklist
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TitleBlacklist
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TocTree"]
+       path = extensions/TocTree
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TocTree
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TorBlock"]
+       path = extensions/TorBlock
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TorBlock
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/Translate"]
+       path = extensions/Translate
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/Translate
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TranslationNotifications"]
+       path = extensions/TranslationNotifications
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TranslationNotifications
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TrustedXFF"]
+       path = extensions/TrustedXFF
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TrustedXFF
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/TwoColConflict"]
+       path = extensions/TwoColConflict
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/TwoColConflict
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/UnicodeConverter"]
+       path = extensions/UnicodeConverter
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/UnicodeConverter
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/UniversalLanguageSelector"]
+       path = extensions/UniversalLanguageSelector
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/UniversalLanguageSelector
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/UploadsLink"]
+       path = extensions/UploadsLink
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/UploadsLink
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/UploadWizard"]
+       path = extensions/UploadWizard
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/UploadWizard
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/UrlShortener"]
+       path = extensions/UrlShortener
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/UrlShortener
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/UserMerge"]
+       path = extensions/UserMerge
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/UserMerge
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/VectorBeta"]
+       path = extensions/VectorBeta
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/VectorBeta
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/VipsScaler"]
+       path = extensions/VipsScaler
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/VipsScaler
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/VisualEditor"]
+       path = extensions/VisualEditor
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/WikidataPageBanner"]
+       path = extensions/WikidataPageBanner
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/WikidataPageBanner
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/WikiEditor"]
+       path = extensions/WikiEditor
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/WikiEditor
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/wikihiero"]
+       path = extensions/wikihiero
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/wikihiero
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/WikiLove"]
+       path = extensions/WikiLove
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/WikiLove
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/WikimediaEvents"]
+       path = extensions/WikimediaEvents
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/WikimediaEvents
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/WikimediaIncubator"]
+       path = extensions/WikimediaIncubator
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/WikimediaIncubator
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/WikimediaMaintenance"]
+       path = extensions/WikimediaMaintenance
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/WikimediaMaintenance
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/WikimediaMessages"]
+       path = extensions/WikimediaMessages
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/WikimediaMessages
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/XAnalytics"]
+       path = extensions/XAnalytics
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/XAnalytics
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ZeroBanner"]
+       path = extensions/ZeroBanner
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ZeroBanner
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ZeroPortal"]
+       path = extensions/ZeroPortal
+       url = https://gerrit.wikimedia.org/r/mediawiki/extensions/ZeroPortal
+       branch = wmf/1.30.0-wmf.17
+[submodule "skins/CologneBlue"]
+       path = skins/CologneBlue
+       url = https://gerrit.wikimedia.org/r/mediawiki/skins/CologneBlue
+       branch = wmf/1.30.0-wmf.17
+[submodule "skins/MinervaNeue"]
+       path = skins/MinervaNeue
+       url = https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue
+       branch = wmf/1.30.0-wmf.17
+[submodule "skins/MonoBook"]
+       path = skins/MonoBook
+       url = https://gerrit.wikimedia.org/r/mediawiki/skins/MonoBook
+       branch = wmf/1.30.0-wmf.17
+[submodule "skins/Modern"]
+       path = skins/Modern
+       url = https://gerrit.wikimedia.org/r/mediawiki/skins/Modern
+       branch = wmf/1.30.0-wmf.17
+[submodule "skins/Nostalgia"]
+       path = skins/Nostalgia
+       url = https://gerrit.wikimedia.org/r/mediawiki/skins/Nostalgia
+       branch = wmf/1.30.0-wmf.17
+[submodule "skins/Timeless"]
+       path = skins/Timeless
+       url = https://gerrit.wikimedia.org/r/mediawiki/skins/Timeless
+       branch = wmf/1.30.0-wmf.17
+[submodule "skins/Vector"]
+       path = skins/Vector
+       url = https://gerrit.wikimedia.org/r/mediawiki/skins/Vector
+       branch = wmf/1.30.0-wmf.17
+[submodule "vendor"]
+       path = vendor
+       url = https://gerrit.wikimedia.org/r/mediawiki/vendor
+       branch = wmf/1.30.0-wmf.17
+[submodule "extensions/ArticleCreationWorkflow"]
+       path = extensions/ArticleCreationWorkflow
+       url = https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ArticleCreationWorkflow.git
index b478f51..f741a4e 100644 (file)
@@ -209,6 +209,10 @@ changes to languages because of Phabricator reports.
   (formerly it was needed by PostgreSQL and Oracle), and is now deprecated.
 * (T146591) The lc_lang_key index on the l10n_cache table has been changed into a
   PRIMARY KEY.
+* (T157227) bot_password.bp_user, change_tag.ct_log_id, change_tag.ct_rev_id,
+  page_restrictions.pr_user, tag_summary.ts_log_id, tag_summary.ts_rev_id and
+  user_properties.up_user have all been made unsigned on MySQL.
+* DB_SLAVE is deprecated. DB_REPLICA should be used instead.
 
 == Compatibility ==
 MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
index c7f13d5..5eba00b 100644 (file)
@@ -1043,6 +1043,7 @@ $wgAutoloadLocalClasses = [
        'OldLocalFile' => __DIR__ . '/includes/filerepo/file/OldLocalFile.php',
        'OracleInstaller' => __DIR__ . '/includes/installer/OracleInstaller.php',
        'OracleUpdater' => __DIR__ . '/includes/installer/OracleUpdater.php',
+       'OrderedStreamingForkController' => __DIR__ . '/includes/OrderedStreamingForkController.php',
        'OrphanStats' => __DIR__ . '/maintenance/storage/orphanStats.php',
        'Orphans' => __DIR__ . '/maintenance/orphans.php',
        'OutputPage' => __DIR__ . '/includes/OutputPage.php',
diff --git a/extensions/.gitignore b/extensions/.gitignore
deleted file mode 100644 (file)
index f847620..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-*
-!README
-!.gitignore
diff --git a/extensions/AbuseFilter b/extensions/AbuseFilter
new file mode 160000 (submodule)
index 0000000..2998997
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 29989972b3a9e89904bb484cdc76d697beaaaf6b
diff --git a/extensions/ActiveAbstract b/extensions/ActiveAbstract
new file mode 160000 (submodule)
index 0000000..95e691c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 95e691c9033f36633006b3a91f58839ec3f3a7c5
diff --git a/extensions/AntiSpoof b/extensions/AntiSpoof
new file mode 160000 (submodule)
index 0000000..a2f8ad9
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit a2f8ad9ee8d72486839f2ecf23fbc9bc0a4834ca
diff --git a/extensions/ApiFeatureUsage b/extensions/ApiFeatureUsage
new file mode 160000 (submodule)
index 0000000..290c724
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 290c7247208e49526b5036048311fe9b370b1dab
diff --git a/extensions/ArticleCreationWorkflow b/extensions/ArticleCreationWorkflow
new file mode 160000 (submodule)
index 0000000..7ed2ae9
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 7ed2ae91a6677e02f4eb4c0940713be1bb80f447
diff --git a/extensions/Babel b/extensions/Babel
new file mode 160000 (submodule)
index 0000000..fc4c181
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit fc4c181f0965ac53fc0cb7e7be42969af909c002
diff --git a/extensions/BetaFeatures b/extensions/BetaFeatures
new file mode 160000 (submodule)
index 0000000..682b7f8
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 682b7f89ec00c5d350a6f11686cb2237961de4a9
diff --git a/extensions/BounceHandler b/extensions/BounceHandler
new file mode 160000 (submodule)
index 0000000..86e7bf3
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 86e7bf361bccdc94848dcb65e69b16f3fa49fc62
diff --git a/extensions/Calendar b/extensions/Calendar
new file mode 160000 (submodule)
index 0000000..d415952
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit d415952b8da2e017210fbce15be6e66464f712e0
diff --git a/extensions/Campaigns b/extensions/Campaigns
new file mode 160000 (submodule)
index 0000000..54fe522
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 54fe522b2810fd0f319fceb99a199e0a3006cd41
diff --git a/extensions/Capiunto b/extensions/Capiunto
new file mode 160000 (submodule)
index 0000000..6020213
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 602021336cffe890d6fd7d3ac27fc363b434b42d
diff --git a/extensions/CategoryTree b/extensions/CategoryTree
new file mode 160000 (submodule)
index 0000000..3b48d9a
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 3b48d9af2ce51573269d0f7b304de49477a67302
diff --git a/extensions/CentralAuth b/extensions/CentralAuth
new file mode 160000 (submodule)
index 0000000..c5a011a
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c5a011a62f335c4ec91765ab001b9ddf9aa47c75
diff --git a/extensions/CentralNotice b/extensions/CentralNotice
new file mode 160000 (submodule)
index 0000000..86153ab
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 86153ab94d62cbb72b6b88ae8513a3f782f42f99
diff --git a/extensions/CharInsert b/extensions/CharInsert
new file mode 160000 (submodule)
index 0000000..be7937c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit be7937c7317c632981813f451314d7bf55f27f35
diff --git a/extensions/CheckUser b/extensions/CheckUser
new file mode 160000 (submodule)
index 0000000..20d8f73
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 20d8f738ef91654cc10872210ef1b251ac934e39
diff --git a/extensions/CirrusSearch b/extensions/CirrusSearch
new file mode 160000 (submodule)
index 0000000..60edf9b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 60edf9b8c5a27e53dd954c349dfa8e958259108a
diff --git a/extensions/Cite b/extensions/Cite
new file mode 160000 (submodule)
index 0000000..8b51182
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 8b51182b13e7d1768253fdf9b594b33bb044115c
diff --git a/extensions/CiteThisPage b/extensions/CiteThisPage
new file mode 160000 (submodule)
index 0000000..0aeec30
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 0aeec30bd404276b15404d2872cc555b67ccc75e
diff --git a/extensions/Citoid b/extensions/Citoid
new file mode 160000 (submodule)
index 0000000..6cf89e4
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 6cf89e4bcc2cc463b06127ada17488377b3370f2
diff --git a/extensions/CleanChanges b/extensions/CleanChanges
new file mode 160000 (submodule)
index 0000000..c3834d4
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c3834d42e2d49d336d66ac9910891cc3289576ec
diff --git a/extensions/CodeEditor b/extensions/CodeEditor
new file mode 160000 (submodule)
index 0000000..f1219cf
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit f1219cfea06bb4d7ba87c02ba9456a6482e79cf3
diff --git a/extensions/CodeMirror b/extensions/CodeMirror
new file mode 160000 (submodule)
index 0000000..b723eb3
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit b723eb3d8ad7736652cfa591fc42f4b3f542b82a
diff --git a/extensions/CodeReview b/extensions/CodeReview
new file mode 160000 (submodule)
index 0000000..14cf1b0
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 14cf1b0c47ee46641c508cf8f2a5b3010c56ab9e
diff --git a/extensions/Cognate b/extensions/Cognate
new file mode 160000 (submodule)
index 0000000..e80ef46
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit e80ef46892d443f513ea398d2cac342fce1ccb02
diff --git a/extensions/CollaborationKit b/extensions/CollaborationKit
new file mode 160000 (submodule)
index 0000000..6f07236
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 6f07236f56c1e5384d5cf9dafb63e3783d1ace96
diff --git a/extensions/Collection b/extensions/Collection
new file mode 160000 (submodule)
index 0000000..6d3fadf
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 6d3fadf8eb5a5cdbaaa26244dc8e742f2cea80b8
diff --git a/extensions/CommonsMetadata b/extensions/CommonsMetadata
new file mode 160000 (submodule)
index 0000000..7d78f19
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 7d78f193464f5b94a766d5c0e778cb955fe7874e
diff --git a/extensions/ConfirmEdit b/extensions/ConfirmEdit
new file mode 160000 (submodule)
index 0000000..13fc83c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 13fc83c810d43b7e4e66d981f1c839e4159d3bd4
diff --git a/extensions/ContactPage b/extensions/ContactPage
new file mode 160000 (submodule)
index 0000000..a8add6f
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit a8add6f6582c8cdfe9c95f792b84d2289ad9875b
diff --git a/extensions/ContentTranslation b/extensions/ContentTranslation
new file mode 160000 (submodule)
index 0000000..694d6a6
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 694d6a6b25caf59f271632a55ee5128afaf5cd82
diff --git a/extensions/ContributionTracking b/extensions/ContributionTracking
new file mode 160000 (submodule)
index 0000000..5f87721
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 5f87721142c603316422537596ec3cad2090d36b
diff --git a/extensions/CreditsSource b/extensions/CreditsSource
new file mode 160000 (submodule)
index 0000000..520bd3b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 520bd3b6ed1bb33500e684e1411110b111729e42
diff --git a/extensions/Dashiki b/extensions/Dashiki
new file mode 160000 (submodule)
index 0000000..f0cf6a8
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit f0cf6a8b34777b19a6a1823e16b42c12f7bd612a
diff --git a/extensions/DisableAccount b/extensions/DisableAccount
new file mode 160000 (submodule)
index 0000000..6fded37
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 6fded37b2d127301083124200abbff395116f184
diff --git a/extensions/Disambiguator b/extensions/Disambiguator
new file mode 160000 (submodule)
index 0000000..f946519
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit f9465190623d37f2474d0177db67239705e373b0
diff --git a/extensions/DismissableSiteNotice b/extensions/DismissableSiteNotice
new file mode 160000 (submodule)
index 0000000..7d5e383
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 7d5e383ab6a8d3863d2efc1d02d5789b062c3baa
diff --git a/extensions/DonationInterface b/extensions/DonationInterface
new file mode 160000 (submodule)
index 0000000..932b44b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 932b44ba72991b30bae64e37d72730fa97b8c280
diff --git a/extensions/DoubleWiki b/extensions/DoubleWiki
new file mode 160000 (submodule)
index 0000000..fc1938f
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit fc1938f01d0aa726de41cd29a0c7a4e372fe6ee3
diff --git a/extensions/DynamicSidebar b/extensions/DynamicSidebar
new file mode 160000 (submodule)
index 0000000..a2fbe58
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit a2fbe582e2878f5703e9deb5ae29cd2fcf73aa5f
diff --git a/extensions/Echo b/extensions/Echo
new file mode 160000 (submodule)
index 0000000..3f69abe
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 3f69abe71935830ab5fb6a7611b725877030dd0e
diff --git a/extensions/EducationProgram b/extensions/EducationProgram
new file mode 160000 (submodule)
index 0000000..4475ce1
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 4475ce10c47ebbb72435eac2d14235bec8beb997
diff --git a/extensions/Elastica b/extensions/Elastica
new file mode 160000 (submodule)
index 0000000..388b1ef
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 388b1eff8c45eff15b514cfe292ecbf438fe5c17
diff --git a/extensions/ElectronPdfService b/extensions/ElectronPdfService
new file mode 160000 (submodule)
index 0000000..74aae97
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 74aae97c0fd354ca3c34a92d307a5927f664c26d
diff --git a/extensions/EventBus b/extensions/EventBus
new file mode 160000 (submodule)
index 0000000..988b4a9
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 988b4a971b7db89d1bb41dc0a31b6f46eca03479
diff --git a/extensions/EventLogging b/extensions/EventLogging
new file mode 160000 (submodule)
index 0000000..558b0fb
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 558b0fb82422ec062211813f04b50f7249e1bff1
diff --git a/extensions/ExtensionDistributor b/extensions/ExtensionDistributor
new file mode 160000 (submodule)
index 0000000..fbd6904
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit fbd69049f0d4c3d47e3d116e644fba1386018ab3
diff --git a/extensions/FeaturedFeeds b/extensions/FeaturedFeeds
new file mode 160000 (submodule)
index 0000000..6752957
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 6752957dac5a164ac4df9e7131886c49e9b0820b
diff --git a/extensions/FlaggedRevs b/extensions/FlaggedRevs
new file mode 160000 (submodule)
index 0000000..09db3fe
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 09db3fe2d5fb8baed301f92b3d3963f23d776b42
diff --git a/extensions/Flow b/extensions/Flow
new file mode 160000 (submodule)
index 0000000..2a64269
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 2a64269aecb0dda71a57db814c7ade444885b0c2
diff --git a/extensions/FundraiserLandingPage b/extensions/FundraiserLandingPage
new file mode 160000 (submodule)
index 0000000..acb3b3b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit acb3b3b172aaccd93804249361e13d819c2c7fdf
diff --git a/extensions/FundraisingTranslateWorkflow b/extensions/FundraisingTranslateWorkflow
new file mode 160000 (submodule)
index 0000000..a5276da
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit a5276da3e1bfad91891e031f8d42df139ee3f796
diff --git a/extensions/GWToolset b/extensions/GWToolset
new file mode 160000 (submodule)
index 0000000..034c3aa
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 034c3aa60857fd13a42f7c3c6b34c767fb15801d
diff --git a/extensions/Gadgets b/extensions/Gadgets
new file mode 160000 (submodule)
index 0000000..6bdc8e9
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 6bdc8e92e84492fda97d3719a8033b3a14cb7110
diff --git a/extensions/GeoCrumbs b/extensions/GeoCrumbs
new file mode 160000 (submodule)
index 0000000..8d1906e
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 8d1906eba9341d58cc93d9d6e509486feeaea1ce
diff --git a/extensions/GeoData b/extensions/GeoData
new file mode 160000 (submodule)
index 0000000..0739a86
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 0739a861ef87c39f97c5d0de0f5c4d3be6d0ba59
diff --git a/extensions/GettingStarted b/extensions/GettingStarted
new file mode 160000 (submodule)
index 0000000..397fc8e
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 397fc8ebca9fd6493b757c5ac109983a83af06dd
diff --git a/extensions/GlobalBlocking b/extensions/GlobalBlocking
new file mode 160000 (submodule)
index 0000000..6b71131
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 6b71131b5afc3088801bf3483f89213d7f6ba376
diff --git a/extensions/GlobalCssJs b/extensions/GlobalCssJs
new file mode 160000 (submodule)
index 0000000..bc7ae06
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit bc7ae06a195c6486efae5d7d5c3edfa3b6fd7304
diff --git a/extensions/GlobalUsage b/extensions/GlobalUsage
new file mode 160000 (submodule)
index 0000000..a7eff4c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit a7eff4c1f69dd997173810eb732c7f878919016f
diff --git a/extensions/GlobalUserPage b/extensions/GlobalUserPage
new file mode 160000 (submodule)
index 0000000..c2145d5
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c2145d5d3e14584ce7e4114fdd9151e608a8586e
diff --git a/extensions/GoogleNewsSitemap b/extensions/GoogleNewsSitemap
new file mode 160000 (submodule)
index 0000000..4b07496
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 4b07496dddb22598fdc42ebfebdc1386ec066e7a
diff --git a/extensions/Graph b/extensions/Graph
new file mode 160000 (submodule)
index 0000000..c16404d
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c16404d9a9d3b874a038bb2babdc79094b6ff282
diff --git a/extensions/GuidedTour b/extensions/GuidedTour
new file mode 160000 (submodule)
index 0000000..04af002
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 04af002d4314d1c1d93cc9c9b7b59cfa197b6bb9
diff --git a/extensions/ImageMap b/extensions/ImageMap
new file mode 160000 (submodule)
index 0000000..c64432a
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c64432ab63725c6c8c18be3524fa5b56e9e3fba7
diff --git a/extensions/InputBox b/extensions/InputBox
new file mode 160000 (submodule)
index 0000000..c7b98cc
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c7b98cc9b857f4d4d99398466f91eaa45bca8ca5
diff --git a/extensions/Insider b/extensions/Insider
new file mode 160000 (submodule)
index 0000000..e2f98e8
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit e2f98e8ba1918afb56d3045851fd2df44cbb4f72
diff --git a/extensions/Interwiki b/extensions/Interwiki
new file mode 160000 (submodule)
index 0000000..5d2916d
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 5d2916d31b939c20a00013ef4db84832d291d43b
diff --git a/extensions/InterwikiSorting b/extensions/InterwikiSorting
new file mode 160000 (submodule)
index 0000000..8719b51
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 8719b51fb705ba248ef62b5381cebea067190b9d
diff --git a/extensions/Josa b/extensions/Josa
new file mode 160000 (submodule)
index 0000000..aac5ef2
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit aac5ef2091baeb4dcd8abdc354eab812ccf6bf6b
diff --git a/extensions/JsonConfig b/extensions/JsonConfig
new file mode 160000 (submodule)
index 0000000..9ecd778
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 9ecd778a0cbc4e7837733bb577f376e03a542d8e
diff --git a/extensions/Kartographer b/extensions/Kartographer
new file mode 160000 (submodule)
index 0000000..1f73218
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1f732187c0ef88b7b6973250266bbd6414f0f1d5
diff --git a/extensions/LabeledSectionTransclusion b/extensions/LabeledSectionTransclusion
new file mode 160000 (submodule)
index 0000000..75ae58d
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 75ae58d7c2e3f75be8cb586b0135fad5e4c7dd1c
diff --git a/extensions/LandingCheck b/extensions/LandingCheck
new file mode 160000 (submodule)
index 0000000..f4a286e
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit f4a286e8fabe982f73733d57a4160537e66b1451
diff --git a/extensions/LdapAuthentication b/extensions/LdapAuthentication
new file mode 160000 (submodule)
index 0000000..907953e
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 907953e2293ccd1c065d2e6d8b61b08883d8e91f
diff --git a/extensions/Linter b/extensions/Linter
new file mode 160000 (submodule)
index 0000000..ab1b9e3
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit ab1b9e325efad2ff362451d4ad26a0badf0ad5e9
diff --git a/extensions/LiquidThreads b/extensions/LiquidThreads
new file mode 160000 (submodule)
index 0000000..cde6191
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit cde6191a686f22cf811a1a5d76d62fe83aa0ff39
diff --git a/extensions/Listings b/extensions/Listings
new file mode 160000 (submodule)
index 0000000..a5021a2
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit a5021a2c4503e6d6a16355d2a81262a0213c3367
diff --git a/extensions/LocalisationUpdate b/extensions/LocalisationUpdate
new file mode 160000 (submodule)
index 0000000..4250f2d
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 4250f2d0265ee7f8b2b95e7150926f5eb8123e9f
diff --git a/extensions/LoginNotify b/extensions/LoginNotify
new file mode 160000 (submodule)
index 0000000..40b4fd4
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 40b4fd4af0f4eafd858616eb86b45b3aaa56fac0
diff --git a/extensions/MapSources b/extensions/MapSources
new file mode 160000 (submodule)
index 0000000..10c82e0
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 10c82e0af03c9a8a9838cc95e9d6f2d539f8e54c
diff --git a/extensions/MassMessage b/extensions/MassMessage
new file mode 160000 (submodule)
index 0000000..f3e5fe8
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit f3e5fe8d49c91c28032164930321c0cf4f0eaade
diff --git a/extensions/Math b/extensions/Math
new file mode 160000 (submodule)
index 0000000..c26a74f
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c26a74f0ff90d7720b03c2d3ce0d29db82e19274
diff --git a/extensions/MobileApp b/extensions/MobileApp
new file mode 160000 (submodule)
index 0000000..4ca6aa4
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 4ca6aa469a420ebffb372689ebabb01d051c3baf
diff --git a/extensions/MobileFrontend b/extensions/MobileFrontend
new file mode 160000 (submodule)
index 0000000..60d8ccc
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 60d8ccc7e93c5057e5ac75e451da73ad5fa7e3b9
diff --git a/extensions/MultimediaViewer b/extensions/MultimediaViewer
new file mode 160000 (submodule)
index 0000000..22441ca
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 22441cadfce32f2da03c4cd83b8f8a0fa1303b9e
diff --git a/extensions/MwEmbedSupport b/extensions/MwEmbedSupport
new file mode 160000 (submodule)
index 0000000..8ac6b3e
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 8ac6b3e3820af937a03cffa65897bb3ac7a6098c
diff --git a/extensions/NavigationTiming b/extensions/NavigationTiming
new file mode 160000 (submodule)
index 0000000..76361d9
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 76361d952a7ba9f6ec1abeaeaa45ec60f389caf8
diff --git a/extensions/NewUserMessage b/extensions/NewUserMessage
new file mode 160000 (submodule)
index 0000000..8a81a7c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 8a81a7c2e8b4889c28b05d03efbc53ec73af90c3
diff --git a/extensions/Newsletter b/extensions/Newsletter
new file mode 160000 (submodule)
index 0000000..122f06d
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 122f06dc2fac532fc90d8e92e6b797fa408940fc
diff --git a/extensions/Nuke b/extensions/Nuke
new file mode 160000 (submodule)
index 0000000..301996d
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 301996dcead0710b42d9ed0b2d85f6411fed0c90
diff --git a/extensions/OATHAuth b/extensions/OATHAuth
new file mode 160000 (submodule)
index 0000000..90d76de
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 90d76de0cc29d2d8983e44d6a37e0794ef05c5dd
diff --git a/extensions/OAuth b/extensions/OAuth
new file mode 160000 (submodule)
index 0000000..c8af689
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c8af68997942d85eb37664cb84af8d7d33906a50
diff --git a/extensions/ORES b/extensions/ORES
new file mode 160000 (submodule)
index 0000000..f5fa0d2
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit f5fa0d2366c0063c7e7db92b90605f6283d84ef0
diff --git a/extensions/OpenStackManager b/extensions/OpenStackManager
new file mode 160000 (submodule)
index 0000000..8bb2463
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 8bb24631d066317f255eac0c6be753565e7f9f8c
diff --git a/extensions/PageAssessments b/extensions/PageAssessments
new file mode 160000 (submodule)
index 0000000..5a8b100
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 5a8b1008c73804f30d1ef1ce4ec4ca1243acc955
diff --git a/extensions/PageImages b/extensions/PageImages
new file mode 160000 (submodule)
index 0000000..aa8dabe
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit aa8dabebb2617b903186d03971eedb8f6e62bf3e
diff --git a/extensions/PageTriage b/extensions/PageTriage
new file mode 160000 (submodule)
index 0000000..3fc1fb0
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 3fc1fb0e09a3b964b01d2a025b6cea4904771e31
diff --git a/extensions/PageViewInfo b/extensions/PageViewInfo
new file mode 160000 (submodule)
index 0000000..9a00a92
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 9a00a92b72386b0286ab0f4ee79a702947138660
diff --git a/extensions/PagedTiffHandler b/extensions/PagedTiffHandler
new file mode 160000 (submodule)
index 0000000..6bdd0cb
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 6bdd0cb8a77d18563e7a0ac51c5b31ac44d8e460
diff --git a/extensions/ParserFunctions b/extensions/ParserFunctions
new file mode 160000 (submodule)
index 0000000..1a693ec
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1a693ec0947aa5e25087dae5254b413c41fab57e
diff --git a/extensions/ParserMigration b/extensions/ParserMigration
new file mode 160000 (submodule)
index 0000000..ca9d82c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit ca9d82ce54c76ad81287384e14271ade261bd125
diff --git a/extensions/ParsoidBatchAPI b/extensions/ParsoidBatchAPI
new file mode 160000 (submodule)
index 0000000..2c94bbf
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 2c94bbf57e70c12b847b7307669191bb06f1f510
diff --git a/extensions/PdfHandler b/extensions/PdfHandler
new file mode 160000 (submodule)
index 0000000..d99097c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit d99097c0aae27e92dde6f407b2160e7c551ca96e
diff --git a/extensions/Petition b/extensions/Petition
new file mode 160000 (submodule)
index 0000000..b051579
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit b051579f9243a44d170960c2052afd44f6f56dea
diff --git a/extensions/Poem b/extensions/Poem
new file mode 160000 (submodule)
index 0000000..887a30f
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 887a30fde23b88d09a4b5ed55f8fcc55c7cf72f9
diff --git a/extensions/PoolCounter b/extensions/PoolCounter
new file mode 160000 (submodule)
index 0000000..56ebe46
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 56ebe461b21e581fe831c582eb62ba629555d5a2
diff --git a/extensions/Popups b/extensions/Popups
new file mode 160000 (submodule)
index 0000000..eb6c893
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit eb6c893e1e84f747a5e952b5a88ff6d111d093aa
diff --git a/extensions/ProofreadPage b/extensions/ProofreadPage
new file mode 160000 (submodule)
index 0000000..3e63bd1
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 3e63bd151093a3bfe621cad9d64aa84ac0a9dc66
diff --git a/extensions/QuickSurveys b/extensions/QuickSurveys
new file mode 160000 (submodule)
index 0000000..872ac01
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 872ac01d2ad42d705e97da2f78290188a9eb5787
diff --git a/extensions/Quiz b/extensions/Quiz
new file mode 160000 (submodule)
index 0000000..fe69982
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit fe69982e458c852edaa126c4807debb80c306f6e
diff --git a/extensions/README b/extensions/README
deleted file mode 100644 (file)
index 5c9bf53..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-== User Information ==
-
-Extensions are distributed separately. Drop them into this directory and enable
-as per the extension's installation instructions.
-
-You can find a list of extensions and documentation at
-<https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions>.
-
-== Development Information ==
-
-If you are a developer, you might want to fetch the extension tree in another
-directory and make a symbolic link:
-
- mediawiki/extensions$ ln -s ../../extensions-trunk/FooBar
-
-Most extensions are available through Git:
-    https://phabricator.wikimedia.org/diffusion/MEXT/
-
-
-Please note that under POSIX systems (Linux...), parent of a symbolic path
-refers to the link source, NOT to the target! You should check the env
-variable MW_INSTALL_PATH in case the extension is not in the default location.
-
-The following code snippet lets you override the default path:
-
- $IP = getenv( 'MW_INSTALL_PATH' );
- if( $IP === false ) {
-       $IP = __DIR__ . '/../..';
- }
- require_once "$IP/maintenance/Maintenance.php"; // a MediaWiki core file
diff --git a/extensions/RSS b/extensions/RSS
new file mode 160000 (submodule)
index 0000000..2b16a83
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 2b16a83c9f5632ceca9fffabec76f436fe412ab6
diff --git a/extensions/RelatedArticles b/extensions/RelatedArticles
new file mode 160000 (submodule)
index 0000000..b0a0019
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit b0a00190a2b3b9c947fe0168968a3b82c384eafe
diff --git a/extensions/RelatedSites b/extensions/RelatedSites
new file mode 160000 (submodule)
index 0000000..cd9e2d4
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit cd9e2d450fbd9472e6b673255c444fe57d3d6253
diff --git a/extensions/Renameuser b/extensions/Renameuser
new file mode 160000 (submodule)
index 0000000..1f8bcad
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1f8bcaddd16ad706bf9ad6dad210201e361afbc0
diff --git a/extensions/RevisionSlider b/extensions/RevisionSlider
new file mode 160000 (submodule)
index 0000000..d8d8795
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit d8d8795e7ff61b60928a1274d56e13a5a20728c6
diff --git a/extensions/SandboxLink b/extensions/SandboxLink
new file mode 160000 (submodule)
index 0000000..bc90a85
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit bc90a8560ea232da9e337328f4844497f831ecb1
diff --git a/extensions/Score b/extensions/Score
new file mode 160000 (submodule)
index 0000000..a9b145a
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit a9b145ab2de445a30c89d2d4d1c672066e49dfa6
diff --git a/extensions/Scribunto b/extensions/Scribunto
new file mode 160000 (submodule)
index 0000000..fb5d5e6
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit fb5d5e60dfbd3b13c03f2b2500f23d929c8a39f8
diff --git a/extensions/SearchExtraNS b/extensions/SearchExtraNS
new file mode 160000 (submodule)
index 0000000..98683a6
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 98683a6c34cf524e7916088818a689d363172321
diff --git a/extensions/SecurePoll b/extensions/SecurePoll
new file mode 160000 (submodule)
index 0000000..ee15ae1
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit ee15ae154ff891932b1dfe0b0e33b59cab748b8c
diff --git a/extensions/ShortUrl b/extensions/ShortUrl
new file mode 160000 (submodule)
index 0000000..84614b4
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 84614b435731f6ffe5ba3dd1767f670bbab344aa
diff --git a/extensions/SiteMatrix b/extensions/SiteMatrix
new file mode 160000 (submodule)
index 0000000..6d97516
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 6d97516ab57fb7953b259bb8b1e8ae7492301205
diff --git a/extensions/SpamBlacklist b/extensions/SpamBlacklist
new file mode 160000 (submodule)
index 0000000..f0eb3a8
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit f0eb3a83c17a9ce0abdd24343f9d53f6b2206a9f
diff --git a/extensions/SubPageList3 b/extensions/SubPageList3
new file mode 160000 (submodule)
index 0000000..c2f3ea1
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c2f3ea1b2cf08b6c7899a59a03e7fdd8043f6205
diff --git a/extensions/SubpageSortkey b/extensions/SubpageSortkey
new file mode 160000 (submodule)
index 0000000..5e4b216
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 5e4b216a7aee3efc5ea80c9b55d39449fe7975fa
diff --git a/extensions/SyntaxHighlight_GeSHi b/extensions/SyntaxHighlight_GeSHi
new file mode 160000 (submodule)
index 0000000..962cf3b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 962cf3b682349489edfecfb623420e909f4a3a89
diff --git a/extensions/TemplateData b/extensions/TemplateData
new file mode 160000 (submodule)
index 0000000..d9ef544
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit d9ef54473c43a2702f026b19541a114a831d5b03
diff --git a/extensions/TemplateSandbox b/extensions/TemplateSandbox
new file mode 160000 (submodule)
index 0000000..24df96b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 24df96bc3a4618c75b58cc81a33a3229037371c7
diff --git a/extensions/TemplateStyles b/extensions/TemplateStyles
new file mode 160000 (submodule)
index 0000000..b1e11d9
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit b1e11d9462e2d181a8244ff8a83139c938183533
diff --git a/extensions/TextExtracts b/extensions/TextExtracts
new file mode 160000 (submodule)
index 0000000..7e548ce
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 7e548ce1b454d005e71d4e47dfebb8d0ecacc98d
diff --git a/extensions/Thanks b/extensions/Thanks
new file mode 160000 (submodule)
index 0000000..078a69f
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 078a69fce32abf08af598ca81b6d7f4f758838f9
diff --git a/extensions/TimedMediaHandler b/extensions/TimedMediaHandler
new file mode 160000 (submodule)
index 0000000..75945f0
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 75945f000f3e4eb20e680c84d1e325efbbb9bb1e
diff --git a/extensions/TitleBlacklist b/extensions/TitleBlacklist
new file mode 160000 (submodule)
index 0000000..dcbccec
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit dcbccec4df71afa510051723e3d1467d272d2aa1
diff --git a/extensions/TocTree b/extensions/TocTree
new file mode 160000 (submodule)
index 0000000..ead203c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit ead203c196b436df2ffe2cf58a41284a7aad730f
diff --git a/extensions/TorBlock b/extensions/TorBlock
new file mode 160000 (submodule)
index 0000000..701a44c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 701a44cd5464e3a0ec9b40e593357a9a3a8dc2e6
diff --git a/extensions/Translate b/extensions/Translate
new file mode 160000 (submodule)
index 0000000..773583e
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 773583e7ca03bea50af02d552e1333c36c063561
diff --git a/extensions/TranslationNotifications b/extensions/TranslationNotifications
new file mode 160000 (submodule)
index 0000000..81e7c7c
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 81e7c7c3a0bffe831c9db3cea43e0ef48146d896
diff --git a/extensions/TrustedXFF b/extensions/TrustedXFF
new file mode 160000 (submodule)
index 0000000..b2e88c1
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit b2e88c1f656c2f7efdeb513f1df8f34a24f75fc9
diff --git a/extensions/TwoColConflict b/extensions/TwoColConflict
new file mode 160000 (submodule)
index 0000000..be17ba4
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit be17ba4daafb0cd082c8f9340543d16d225d2314
diff --git a/extensions/UnicodeConverter b/extensions/UnicodeConverter
new file mode 160000 (submodule)
index 0000000..803708b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 803708b97f4b0654b36774551e79abd99c6b7df0
diff --git a/extensions/UniversalLanguageSelector b/extensions/UniversalLanguageSelector
new file mode 160000 (submodule)
index 0000000..2b8e974
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 2b8e974ecf310648487108743be402994b892431
diff --git a/extensions/UploadWizard b/extensions/UploadWizard
new file mode 160000 (submodule)
index 0000000..e8ad35b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit e8ad35b11c39ce52ac118d7e8463c6f0b6e4ed08
diff --git a/extensions/UploadsLink b/extensions/UploadsLink
new file mode 160000 (submodule)
index 0000000..93cb48f
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 93cb48f178f36d4f3080e596cf6fc813a756e438
diff --git a/extensions/UrlShortener b/extensions/UrlShortener
new file mode 160000 (submodule)
index 0000000..8adc117
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 8adc117e8c7a3bce0ae8da53b9366f2ad966e3dc
diff --git a/extensions/UserMerge b/extensions/UserMerge
new file mode 160000 (submodule)
index 0000000..4546537
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 45465372c950653e260aa41e57522b4d58ab632a
diff --git a/extensions/VectorBeta b/extensions/VectorBeta
new file mode 160000 (submodule)
index 0000000..709b840
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 709b84070f8764d915b9da0dd175a093603cd838
diff --git a/extensions/VipsScaler b/extensions/VipsScaler
new file mode 160000 (submodule)
index 0000000..834e65d
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 834e65dfa371a3bb710bb892b601c5b251ece480
diff --git a/extensions/VisualEditor b/extensions/VisualEditor
new file mode 160000 (submodule)
index 0000000..da0acff
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit da0acffe7203daef58da1afb42130eac94034554
diff --git a/extensions/WikiEditor b/extensions/WikiEditor
new file mode 160000 (submodule)
index 0000000..86f364f
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 86f364f8bbbfefde05fa7258bf46d1267f16641d
diff --git a/extensions/WikiLove b/extensions/WikiLove
new file mode 160000 (submodule)
index 0000000..3cac01f
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 3cac01ff3d92810219bf8af13f59fef389693548
diff --git a/extensions/Wikidata b/extensions/Wikidata
new file mode 160000 (submodule)
index 0000000..05b0b6a
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 05b0b6a89091f0dc5d7094b2b4d914a2fe7bef55
diff --git a/extensions/WikidataPageBanner b/extensions/WikidataPageBanner
new file mode 160000 (submodule)
index 0000000..5941d9d
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 5941d9da16590064c1e972314412ee6e7ac6db1a
diff --git a/extensions/WikimediaEvents b/extensions/WikimediaEvents
new file mode 160000 (submodule)
index 0000000..2b7e260
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 2b7e260508374795880317807579fd2346c364a7
diff --git a/extensions/WikimediaIncubator b/extensions/WikimediaIncubator
new file mode 160000 (submodule)
index 0000000..a0c10a4
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit a0c10a42cf9488c0029e0533c89e62d3efff4bc9
diff --git a/extensions/WikimediaMaintenance b/extensions/WikimediaMaintenance
new file mode 160000 (submodule)
index 0000000..b3008ce
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit b3008ceae7b821ea278b6c4c2bded6d18abb944e
diff --git a/extensions/WikimediaMessages b/extensions/WikimediaMessages
new file mode 160000 (submodule)
index 0000000..3da3831
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 3da3831f7dbdfeeaccda6dec02ffbf0c772981f2
diff --git a/extensions/XAnalytics b/extensions/XAnalytics
new file mode 160000 (submodule)
index 0000000..1a79c96
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 1a79c962dd33807ba12f529e476acb673d3a4bf1
diff --git a/extensions/ZeroBanner b/extensions/ZeroBanner
new file mode 160000 (submodule)
index 0000000..c5b26ef
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c5b26ef215fb62b8a8b272eb5ee0750e3e72d1e4
diff --git a/extensions/ZeroPortal b/extensions/ZeroPortal
new file mode 160000 (submodule)
index 0000000..02e7fc9
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 02e7fc928eae1db0c0a97a7c48d200373ab48321
diff --git a/extensions/cldr b/extensions/cldr
new file mode 160000 (submodule)
index 0000000..c1e6395
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c1e6395561747e4503e01947478c5f0214be05f2
diff --git a/extensions/intersection b/extensions/intersection
new file mode 160000 (submodule)
index 0000000..d6dd02b
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit d6dd02b4d3e615d678628563dd91e6a5db84a646
diff --git a/extensions/timeline b/extensions/timeline
new file mode 160000 (submodule)
index 0000000..84814ae
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 84814ae9b305f5ffd79343e94feecd2f3298d5a8
diff --git a/extensions/wikihiero b/extensions/wikihiero
new file mode 160000 (submodule)
index 0000000..ecc77ec
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit ecc77ecd7b117fa70004e0b83b707783cf032701
index cf8e089..3795591 100644 (file)
@@ -75,7 +75,7 @@ $wgConfigRegistry = [
  * MediaWiki version number
  * @since 1.2
  */
-$wgVersion = '1.30.0-alpha';
+$wgVersion = '1.30.0-wmf.17';
 
 /**
  * Name of the site. It must be changed in LocalSettings.php
index 8ac84e5..ca603e7 100644 (file)
@@ -31,6 +31,9 @@ use Wikimedia\Rdbms\IDatabase;
  */
 
 # Obsolete aliases
+/**
+ * @deprecated since 1.28
+ */
 define( 'DB_SLAVE', -1 );
 
 /**@{
diff --git a/includes/OrderedStreamingForkController.php b/includes/OrderedStreamingForkController.php
new file mode 100644 (file)
index 0000000..1436c1c
--- /dev/null
@@ -0,0 +1,216 @@
+<?php
+
+/**
+ * Reads lines of work from an input stream and farms them out to multiple
+ * child streams. Each child has exactly one piece of work in flight at a given
+ * moment. Writes the result of child's work to an output stream. If numProcs
+ * <= zero the work will be performed in process.
+ *
+ * This class amends ForkController with the requirement that the output is
+ * produced in the same exact order as input values were.
+ *
+ * Currently used by CirrusSearch extension to implement CLI search script.
+ *
+ * @ingroup Maintenance
+ * @since 1.30
+ *
+ * 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
+ */
+class OrderedStreamingForkController extends ForkController {
+       /** @var callable */
+       protected $workCallback;
+       /** @var resource */
+       protected $input;
+       /** @var resource */
+       protected $output;
+       /** @var int */
+       protected $nextOutputId;
+       /** @var string[] Int key indicates order, value is data */
+       protected $delayedOutputData = [];
+
+       /**
+        * @param int $numProcs The number of worker processes to fork
+        * @param callable $workCallback A callback to call in the child process
+        *  once for each line of work to process.
+        * @param resource $input A socket to read work lines from
+        * @param resource $output A socket to write the result of work to.
+        */
+       public function __construct( $numProcs, $workCallback, $input, $output ) {
+               parent::__construct( $numProcs );
+               $this->workCallback = $workCallback;
+               $this->input = $input;
+               $this->output = $output;
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public function start() {
+               if ( $this->procsToStart > 0 ) {
+                       $status = parent::start();
+                       if ( $status === 'child' ) {
+                               $this->consume();
+                       }
+               } else {
+                       $status = 'parent';
+                       $this->consumeNoFork();
+               }
+               return $status;
+       }
+
+       /**
+        * @param int $numProcs
+        * @return string
+        */
+       protected function forkWorkers( $numProcs ) {
+               $this->prepareEnvironment();
+
+               $childSockets = [];
+               // Create the child processes
+               for ( $i = 0; $i < $numProcs; $i++ ) {
+                       $sockets = stream_socket_pair( STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP );
+                       // Do the fork
+                       $pid = pcntl_fork();
+                       if ( $pid === -1 || $pid === false ) {
+                               echo "Error creating child processes\n";
+                               exit( 1 );
+                       }
+
+                       if ( !$pid ) {
+                               $this->initChild();
+                               $this->childNumber = $i;
+                               $this->input = $sockets[0];
+                               $this->output = $sockets[0];
+                               fclose( $sockets[1] );
+                               return 'child';
+                       } else {
+                               // This is the parent process
+                               $this->children[$pid] = true;
+                               fclose( $sockets[0] );
+                               $childSockets[] = $sockets[1];
+                       }
+               }
+               $this->feedChildren( $childSockets );
+               foreach ( $childSockets as $socket ) {
+                       // if a child has already shutdown the sockets will be closed,
+                       // closing a second time would raise a warning.
+                       if ( is_resource( $socket ) ) {
+                               fclose( $socket );
+                       }
+               }
+               return 'parent';
+       }
+
+       /**
+        * Child worker process. Reads work from $this->input and writes the
+        * result of that work to $this->output when completed.
+        */
+       protected function consume() {
+               while ( !feof( $this->input ) ) {
+                       $line = trim( fgets( $this->input ) );
+                       if ( $line ) {
+                               list( $id, $data ) = json_decode( $line );
+                               $result = call_user_func( $this->workCallback, $data );
+                               fwrite( $this->output, json_encode( [ $id, $result ] ) . "\n" );
+                       }
+               }
+       }
+
+       /**
+        * Special cased version of self::consume() when no forking occurs
+        */
+       protected function consumeNoFork() {
+               while ( !feof( $this->input ) ) {
+                       $line = trim( fgets( $this->input ) );
+                       if ( $line ) {
+                               $result = call_user_func( $this->workCallback, $line );
+                               fwrite( $this->output, "$result\n" );
+                       }
+               }
+       }
+
+       /**
+        * Reads lines of work from $this->input and farms them out to
+        * the provided socket.
+        *
+        * @param resource[] $sockets
+        */
+       protected function feedChildren( array $sockets ) {
+               $used = [];
+               $id = 0;
+               $this->nextOutputId = 0;
+
+               while ( !feof( $this->input ) ) {
+                       $data = fgets( $this->input );
+                       if ( $used ) {
+                               do {
+                                       $this->updateAvailableSockets( $sockets, $used, $sockets ? 0 : 5 );
+                               } while ( !$sockets );
+                       }
+                       $data = trim( $data );
+                       if ( !$data ) {
+                               continue;
+                       }
+                       $socket = array_pop( $sockets );
+                       fwrite( $socket, json_encode( [ $id++, $data ] ) . "\n" );
+                       $used[] = $socket;
+               }
+               while ( $used ) {
+                       $this->updateAvailableSockets( $sockets, $used, 5 );
+               }
+       }
+
+       /**
+        * Moves sockets from $used to $sockets when they are available
+        * for more work
+        *
+        * @param resource[] &$sockets List of sockets that are waiting for work
+        * @param resource[] &$used List of sockets currently performing work
+        * @param int $timeout The number of seconds to block waiting. 0 for
+        *  non-blocking operation.
+        */
+       protected function updateAvailableSockets( &$sockets, &$used, $timeout ) {
+               $read = $used;
+               $write = $except = [];
+               stream_select( $read, $write, $except, $timeout );
+               foreach ( $read as $socket ) {
+                       $line = fgets( $socket );
+                       list( $id, $data ) = json_decode( trim( $line ) );
+                       $this->receive( (int)$id, $data );
+                       $sockets[] = $socket;
+                       $idx = array_search( $socket, $used );
+                       unset( $used[$idx] );
+               }
+       }
+
+       /**
+        * @param int $id
+        * @param string $data
+        */
+       protected function receive( $id, $data ) {
+               if ( $id !== $this->nextOutputId ) {
+                       $this->delayedOutputData[$id] = $data;
+                       return;
+               }
+               fwrite( $this->output, $data . "\n" );
+               $this->nextOutputId = $id + 1;
+               while ( isset( $this->delayedOutputData[$this->nextOutputId] ) ) {
+                       fwrite( $this->output, $this->delayedOutputData[$this->nextOutputId] . "\n" );
+                       unset( $this->delayedOutputData[$this->nextOutputId] );
+                       $this->nextOutputId++;
+               }
+       }
+}
index 0687a15..c97a42b 100644 (file)
@@ -1356,7 +1356,7 @@ class Title implements LinkTarget {
         * get the talk page, if it is a subject page get the talk page
         *
         * @since 1.25
-        * @throws MWException
+        * @throws MWException If the page doesn't have an other page
         * @return Title
         */
        public function getOtherPage() {
@@ -1366,6 +1366,9 @@ class Title implements LinkTarget {
                if ( $this->isTalkPage() ) {
                        return $this->getSubjectPage();
                } else {
+                       if ( !$this->canHaveTalkPage() ) {
+                               throw new MWException( "{$this->getPrefixedText()} does not have an other page" );
+                       }
                        return $this->getTalkPage();
                }
        }
index 9af4e3e..63e0748 100644 (file)
@@ -287,14 +287,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        );
                        $showRedirects = $this->fld_redirect || isset( $show['redirect'] )
                                || isset( $show['!redirect'] );
-
-                       if ( $this->fld_comment || $this->fld_parsedcomment ) {
-                               $this->commentStore = new CommentStore( 'rc_comment' );
-                               $commentQuery = $this->commentStore->getJoin();
-                               $this->addTables( $commentQuery['tables'] );
-                               $this->addFields( $commentQuery['fields'] );
-                               $this->addJoinConds( $commentQuery['joins'] );
-                       }
                }
                $this->addFieldsIf( [ 'rc_this_oldid' ],
                        $resultPageSet && $params['generaterevisions'] );
@@ -360,6 +352,15 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                }
 
                $this->token = $params['token'];
+
+               if ( $this->fld_comment || $this->fld_parsedcomment || $this->token ) {
+                       $this->commentStore = new CommentStore( 'rc_comment' );
+                       $commentQuery = $this->commentStore->getJoin();
+                       $this->addTables( $commentQuery['tables'] );
+                       $this->addFields( $commentQuery['fields'] );
+                       $this->addJoinConds( $commentQuery['joins'] );
+               }
+
                $this->addOption( 'LIMIT', $params['limit'] + 1 );
 
                $hookData = [];
index 5d19961..6fa6907 100644 (file)
@@ -134,7 +134,8 @@ class CategoryMembershipChange {
                        ),
                        $this->pageTitle,
                        $this->getPreviousRevisionTimestamp(),
-                       $this->revision
+                       $this->revision,
+                       $type === self::CATEGORY_ADDITION
                );
        }
 
@@ -146,6 +147,7 @@ class CategoryMembershipChange {
         * @param Title $pageTitle Title of the page that is being added or removed
         * @param string $lastTimestamp Parent revision timestamp of this change in TS_MW format
         * @param Revision|null $revision
+        * @param bool $added true, if the category was added, false for removed
         *
         * @throws MWException
         */
@@ -156,7 +158,8 @@ class CategoryMembershipChange {
                $comment,
                Title $pageTitle,
                $lastTimestamp,
-               $revision
+               $revision,
+               $added
        ) {
                $deleted = $revision ? $revision->getVisibility() & Revision::SUPPRESSED_USER : 0;
                $newRevId = $revision ? $revision->getId() : 0;
@@ -197,7 +200,8 @@ class CategoryMembershipChange {
                                $lastTimestamp,
                                $bot,
                                $ip,
-                               $deleted
+                               $deleted,
+                               $added
                        ]
                );
                $rc->save();
index 1992223..fd789a6 100644 (file)
@@ -361,8 +361,8 @@ class RecentChange {
 
                        // Never send an RC notification email about categorization changes
                        if (
-                               $this->mAttribs['rc_type'] != RC_CATEGORIZE &&
-                               Hooks::run( 'AbortEmailNotification', [ $editor, $title, $this ] )
+                               Hooks::run( 'AbortEmailNotification', [ $editor, $title, $this ] ) &&
+                               $this->mAttribs['rc_type'] != RC_CATEGORIZE
                        ) {
                                // @FIXME: This would be better as an extension hook
                                // Send emails or email jobs once this row is safely committed
@@ -850,6 +850,7 @@ class RecentChange {
         * @param bool $bot true, if the change was made by a bot
         * @param string $ip IP address of the user, if the change was made anonymously
         * @param int $deleted Indicates whether the change has been deleted
+        * @param bool $added true, if the category was added, false for removed
         *
         * @return RecentChange
         */
@@ -864,8 +865,17 @@ class RecentChange {
                $lastTimestamp,
                $bot,
                $ip = '',
-               $deleted = 0
+               $deleted = 0,
+               $added = null
        ) {
+               // Done in a backwards compatible way.
+               $params = [
+                       'hidden-cat' => WikiCategoryPage::factory( $categoryTitle )->isHidden()
+               ];
+               if ( $added !== null ) {
+                       $params['added'] = $added;
+               }
+
                $rc = new RecentChange;
                $rc->mTitle = $categoryTitle;
                $rc->mPerformer = $user;
@@ -894,9 +904,7 @@ class RecentChange {
                        'rc_logid' => 0,
                        'rc_log_type' => null,
                        'rc_log_action' => '',
-                       'rc_params' => serialize( [
-                               'hidden-cat' => WikiCategoryPage::factory( $categoryTitle )->isHidden()
-                       ] )
+                       'rc_params' => serialize( $params )
                ];
 
                $rc->mExtra = [
index fb46ab4..7410886 100644 (file)
@@ -32,9 +32,13 @@ class CollationFa extends IcuCollation {
 
        // Really hacky - replace with stuff from other blocks.
        private $override = [
-               "\xd8\xa7" => "\xd8\xa1",
+               // U+0627 ARABIC LETTER ALEF => U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE
+               "\xd8\xa7" => "\xd8\xa3",
+               // U+0648 ARABIC LETTER WAW => U+0649 ARABIC LETTER ALEF MAKSURA
                "\xd9\x88" => "\xd9\x89",
+               // U+0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE => U+F3001 (private use area)
                "\xd9\xb2" => "\xF3\xB3\x80\x81",
+               // U+0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW => U+F3002 (private use area)
                "\xd9\xb3" => "\xF3\xB3\x80\x82",
        ];
 
index bf232e9..a2ec391 100644 (file)
@@ -441,6 +441,24 @@ TXT;
                return "[$id] $url   $type from line $line of $file: $message";
        }
 
+       /**
+        * Get a normalised message for formatting with PSR-3 log event context.
+        *
+        * Must be used together with `getLogContext()` to be useful.
+        *
+        * @since 1.30
+        * @param Exception|Throwable $e
+        * @return string
+        */
+       public static function getLogNormalMessage( $e ) {
+               $type = get_class( $e );
+               $file = $e->getFile();
+               $line = $e->getLine();
+               $message = $e->getMessage();
+
+               return "[{exception_id}] {exception_url}   $type from line $line of $file: $message";
+       }
+
        /**
         * @param Exception|Throwable $e
         * @return string
@@ -468,6 +486,7 @@ TXT;
                return [
                        'exception' => $e,
                        'exception_id' => WebRequest::getRequestId(),
+                       'exception_url' => self::getURL() ?: '[no req]',
                        'caught_by' => $catcher
                ];
        }
@@ -595,7 +614,7 @@ TXT;
                if ( !( $e instanceof MWException ) || $e->isLoggable() ) {
                        $logger = LoggerFactory::getInstance( 'exception' );
                        $logger->error(
-                               self::getLogMessage( $e ),
+                               self::getLogNormalMessage( $e ),
                                self::getLogContext( $e, $catcher )
                        );
 
@@ -629,7 +648,7 @@ TXT;
                        $logger = LoggerFactory::getInstance( $channel );
                        $logger->log(
                                $level,
-                               self::getLogMessage( $e ),
+                               self::getLogNormalMessage( $e ),
                                self::getLogContext( $e, $catcher )
                        );
                }
index aeecbb0..2abc6b6 100644 (file)
@@ -266,7 +266,6 @@ class MysqlUpdater extends DatabaseUpdater {
                                'patch-fa_major_mime-chemical.sql' ],
 
                        // 1.25
-                       [ 'doUserNewTalkUseridUnsigned' ],
                        // note this patch covers other _comment and _description fields too
                        [ 'modifyField', 'recentchanges', 'rc_comment', 'patch-editsummary-length.sql' ],
 
@@ -329,6 +328,7 @@ class MysqlUpdater extends DatabaseUpdater {
                        [ 'migrateComments' ],
                        [ 'renameIndex', 'l10n_cache', 'lc_lang_key', 'PRIMARY', false,
                                'patch-l10n_cache-primary-key.sql' ],
+                       [ 'doUnsignedSyncronisation' ],
                ];
        }
 
@@ -1123,26 +1123,42 @@ class MysqlUpdater extends DatabaseUpdater {
                );
        }
 
-       protected function doUserNewTalkUseridUnsigned() {
-               if ( !$this->doTable( 'user_newtalk' ) ) {
-                       return true;
-               }
+       protected function doUnsignedSyncronisation() {
+               $sync = [
+                       [ 'table' => 'bot_passwords', 'field' => 'bp_user' ],
+                       [ 'table' => 'change_tag', 'field' => 'ct_log_id' ],
+                       [ 'table' => 'change_tag', 'field' => 'ct_rev_id' ],
+                       [ 'table' => 'page_restrictions', 'field' => 'pr_user' ],
+                       [ 'table' => 'tag_summary', 'field' => 'ts_log_id' ],
+                       [ 'table' => 'tag_summary', 'field' => 'ts_rev_id' ],
+                       [ 'table' => 'user_newtalk', 'field' => 'user_id' ],
+                       [ 'table' => 'user_properties', 'field' => 'up_user' ],
+               ];
 
-               $info = $this->db->fieldInfo( 'user_newtalk', 'user_id' );
-               if ( $info === false ) {
-                       return true;
-               }
-               if ( $info->isUnsigned() ) {
-                       $this->output( "...user_id is already unsigned int.\n" );
+               foreach ( $sync as $s ) {
+                       if ( !$this->doTable( $s['table'] ) ) {
+                               continue;
+                       }
 
-                       return true;
+                       $info = $this->db->fieldInfo( $s['table'], $s['field'] );
+                       if ( $info === false ) {
+                               continue;
+                       }
+                       $fullName = "{$s['table']}.{$s['field']}";
+                       if ( $info->isUnsigned() ) {
+                               $this->output( "...$fullName is already unsigned int.\n" );
+
+                               continue;
+                       }
+
+                       $this->applyPatch(
+                               "patch-{$s['table']}-{$s['field']}-unsigned.sql",
+                               false,
+                               "Making $fullName into an unsigned int"
+                       );
                }
 
-               return $this->applyPatch(
-                       'patch-user-newtalk-userid-unsigned.sql',
-                       false,
-                       'Making user_id unsigned int'
-               );
+               return true;
        }
 
        protected function doRevisionPageRevIndexNonUnique() {
index 5f54404..04d03f5 100644 (file)
@@ -519,16 +519,25 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        public function execute( $subpage ) {
                $this->rcSubpage = $subpage;
 
-               $this->setHeaders();
-               $this->outputHeader();
-               $this->addModules();
-
                $rows = $this->getRows();
                $opts = $this->getOptions();
                if ( $rows === false ) {
                        $rows = new FakeResultWrapper( [] );
                }
 
+               // Used by Structured UI app to get results without MW chrome
+               if ( $this->getRequest()->getVal( 'action' ) === 'render' ) {
+                       $this->getOutput()->setArticleBodyOnly( true );
+               }
+
+               // Used by "live update" and "view newest" to check
+               // if there's new changes with minimal data transfer
+               if ( $this->getRequest()->getBool( 'peek' ) ) {
+                       $code = $rows->numRows() > 0 ? 200 : 304;
+                       $this->getOutput()->setStatusCode( $code );
+                       return;
+               }
+
                $batch = new LinkBatch;
                foreach ( $rows as $row ) {
                        $batch->add( NS_USER, $row->rc_user_text );
@@ -542,6 +551,10 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                        }
                }
                $batch->execute();
+
+               $this->setHeaders();
+               $this->outputHeader();
+               $this->addModules();
                $this->webOutput( $rows, $opts );
 
                $rows->free();
index 7d0a9df..31ea810 100644 (file)
@@ -371,7 +371,7 @@ class ContribsPager extends RangeChronologicalPager {
         * @return string Name of field
         */
        public function getIndexField() {
-               if ( self::isQueryableRange( $this->target ) ) {
+               if ( $this->isQueryableRange( $this->target ) ) {
                        return 'ipc_rev_timestamp';
                } else {
                        return 'rev_timestamp';
@@ -394,6 +394,9 @@ class ContribsPager extends RangeChronologicalPager {
                                if ( $this->contribs === 'newbie' ) { // multiple users
                                        $batch->add( NS_USER, $row->user_name );
                                        $batch->add( NS_USER_TALK, $row->user_name );
+                               } elseif ( $this->isQueryableRange( $this->target ) ) {
+                                       // If this is an IP range, batch the IP's talk page
+                                       $batch->add( NS_USER_TALK, $row->rev_user_text );
                                }
                                $batch->add( $row->page_namespace, $row->page_title );
                        }
@@ -546,7 +549,7 @@ class ContribsPager extends RangeChronologicalPager {
                        # When querying for an IP range, we want to always show user and user talk links.
                        $userlink = '';
                        if ( ( $this->contribs == 'newbie' && !$rev->isDeleted( Revision::DELETED_USER ) )
-                               || self::isQueryableRange( $this->target ) ) {
+                               || $this->isQueryableRange( $this->target ) ) {
                                $userlink = ' . . ' . $lang->getDirMark()
                                        . Linker::userLink( $rev->getUser(), $rev->getUserText() );
                                $userlink .= ' ' . $this->msg( 'parentheses' )->rawParams(
index dd8b975..efc0fd4 100644 (file)
@@ -328,7 +328,6 @@ class MediaWikiTitleCodec implements TitleFormatter, TitleParser {
                                                        # Disallow Talk:File:x type titles...
                                                        throw new MalformedTitleException( 'title-invalid-talk-namespace', $text );
                                                } elseif ( $this->interwikiLookup->isValidInterwiki( $x[1] ) ) {
-                                                       // TODO: get rid of global state!
                                                        # Disallow Talk:Interwiki:x type titles...
                                                        throw new MalformedTitleException( 'title-invalid-talk-namespace', $text );
                                                }
index 4268c7b..cbb21aa 100644 (file)
@@ -82,6 +82,7 @@
        "category-file-count": "{{PLURAL:$2|kakuniza yamalyilu isasaay a cacay ku tangan. kakuniza yamalyilu isasaay izaway $1 ku tangan, pulung $2 makalaan.}}",
        "listingcontinuesabbrev": "palalid",
        "about": "mahizaay",
+       "article": "lacul kasabelih",
        "newwindow": "(paynin baluhay a azih-sasingalan miwawah)",
        "cancel": "palawpes",
        "moredotdotdot": "yadah...",
        "badtitle": "a’cusay a pyawti",
        "badtitletext": "matuzu’ay a kasabelih pyawti u la’cusay、nayi’ ku cacan, caaysa tatenga’ay tu misiket kamu Wikiay a pyawti.\ntebanay pyawti akay amalyilu la’cusay pisaungay i pyawtayi a tatebanan nu nisulitan.",
        "viewsource": "ciwsace sakatizeng bangu",
+       "exception-nologin": "caay henay patalabu",
        "welcomeuser": "manamuh tu tayniay, $1!",
        "yourname": "misaungayay a kalungangan:",
        "userlogin-yourname": "misaungayay a kalungangan",
        "login": "patalabu",
        "nav-login-createaccount": "patalabu / panganganen ku canghaw",
        "logout": "katahkal",
+       "notloggedin": "caay henay patalabu",
        "userlogin-noaccount": "inayi’ ku canghaw kisu haw?",
        "userlogin-joinproject": "micunus {{SITENAME}}",
        "createaccount": "panganganen ku canghaw",
        "createacct-benefit-body2": "{{PLURAL:$1| kasabelih}}",
        "createacct-benefit-body3": "cay katenesay{{PLURAL:$1|paaninay tu kalusasing}}",
        "loginsuccesstitle": "patalabutu",
+       "mailmypassword": "miliyaw miteka setin mima",
        "loginlanguagelabel": "kamu: $1",
        "pt-login": "patalabu",
        "pt-login-button": "patalabu",
        "botpasswords-label-update": "misabaluhay",
        "botpasswords-label-cancel": "palawpes",
        "botpasswords-label-delete": "masipu",
+       "botpasswords-label-resetpassword": "miliyaw miteka setin mima",
        "botpasswords-label-grants-column": "pabeli tu kinli",
        "resetpass-submit-cancel": "palawpes",
        "passwordreset": "miliyaw miteka setin mima",
        "hiddencategories": "kina kasabelih tungusay nu {{PLURAL:$1|1 midimut kakuniza }}mamikawaw:",
        "permissionserrorstext-withaction": "namakay isasaay {{PLURAL:$1|mahicaay}}, inayi’ kisu situngus miteka $2 miteka tuway misaungay:",
        "moveddeleted-notice": "kina kasabelih masipu tu.\nisasa nipabeli kina kasabelihay a masipu atu milimad nasulitan nakawawan, taneng miazih tu tatenga’ay.",
+       "content-model-text": "sulit a dada’",
        "content-json-empty-object": "inayi’ay a tuutuud",
        "content-json-empty-array": "inayi’ay a papazengan tu nisulitan",
        "viewpagelogs": "ciwsace kina kasabelih a nasulitan nakawawan",
        "histfirst": "sakasumamadan",
        "histlast": "sabaluhay",
        "historyempty": "(inayi’)",
+       "history-feed-item-nocomment": "$1 i $2",
        "rev-showdeleted": "paazih",
        "revdelete-show-file-submit": "hang",
        "revdelete-radio-set": "midimut",
        "revdelete-log": "mahicaay:",
+       "pagehist": "kasabelih nazipa’an",
        "mergehistory-reason": "mahicaay:",
        "history-title": "\"$1\" masumaday a nazipa’an",
        "difference-title": "\"$1\" misumad laeday sasizuma",
        "searchresults-title": "$1 heci nu makatepa",
        "prevn": "ayaw saka {{PLURAL:$1|$1}}",
        "nextn": "zikuzan saka {{PLURAL:$1|$1}}",
+       "prev-page": "ayaway a belih",
+       "next-page": "zikuzan a belih",
        "nextn-title": "nuzikuzan saka {{PLURAL:$1|a heci}}",
        "shown-title": "paybelih {{PLURAL:$1|$1 ku heci}} paazih",
        "viewprevnext": "ciwsace ($1 {{int:pipe-separator}} $2) ($3)",
        "search-nonefound": "nayi’ matatungusay palalitemuh tu kawaw maheciay.",
        "powersearch-toggleall": "hamin",
        "powersearch-togglenone": "nayi’",
+       "preferences": "setin tu kanamuhan",
        "mypreferences": "setin tu kanamuhan",
        "prefs-skin": "nuhekalan",
        "skin-preview": "pataayaway miazih",
+       "datedefault": "sulyang nu pataayaw tu kawaw",
        "prefs-rc": "capi a demaiday a sumad",
+       "prefs-watchlist": "miazihay a piazihan tu sulit",
        "prefs-misc": "zuma",
        "prefs-rendering": "nuhekalan",
        "saveprefs": "suped",
        "searchresultshead": "kilim",
        "stub-threshold-sample-link": "maaziahan",
        "stub-threshold-disabled": "mapasatezep",
-       "timezoneregion-africa": "Afulika",
+       "timezoneregion-africa": "Afilika",
        "timezoneregion-america": "Amilikaco",
        "timezoneregion-antarctica": "Nancico",
        "timezoneregion-arctic": "Sasaamisan",
        "timezoneregion-australia": "Awco",
        "timezoneregion-europe": "Oco",
        "timezoneregion-indian": "Intuyang-bayu’",
+       "timezoneregion-pacific": "Taypinyang-bayu’",
        "prefs-searchoptions": "kilim",
        "default": "pataayaw tu kawaw",
        "prefs-custom-css": "pakuniza misanga’ CSS",
        "group-bot": "kikay a tademaw",
        "group-sysop": "mikuwanay",
        "group-bureaucrat": "situngusay a mikawaway",
+       "group-suppress": "misisipay",
        "group-all": "(hamin)",
        "group-bot-member": "{{GENDER:$1|kikay a tademaw}}",
        "grouppage-bot": "{{ns:project}}:kikay a tademaw",
        "rcfilters-savedqueries-new-name-label": "kalungangan",
        "rcfilters-savedqueries-cancel-label": "palawpes",
        "rcfilters-filterlist-title": "kilim",
+       "rcfilters-filter-user-experience-level-registered-label": "pangangan tuway",
+       "rcfilters-filter-user-experience-level-unregistered-label": "caay henay pangangan",
        "rcfilters-filter-user-experience-level-newcomer-label": "baluhayay a misaungayay",
        "rcfilters-filter-user-experience-level-learner-label": "mahananamay",
        "rcfilters-filter-bots-label": "kikay a tademaw",
+       "rcfilters-filter-patrolled-label": "tayza mikibi tuway",
+       "rcfilters-filter-unpatrolled-label": "caay henay tayza mikibi",
+       "rcfilters-filtergroup-significance": "kakilulen",
        "rcfilters-filter-minor-label": "cayka yadah ku misumad",
        "rclistfrom": "paazih nay $3 $2 baluhayay a sumad katukuh ayza",
        "rcshowhideminor": "$1 mikilulay mikawaway tu kalumyiti",
        "recentchangeslinked-page": "kasabelih kalungangan:",
        "recentchangeslinked-to": "Show changes to pages linked to the given page instead\nmisumad ku paazih masasiket tayza matuzu’ay kasabelih a nisumad",
        "upload": "patapabaw ku tangan",
+       "uploadnologin": "caay henay patalabu",
        "filedesc": "pecu’ nu lacul",
        "fileuploadsummary": "pecu’ nu lacul:",
        "filesource": "saangangan:",
        "randompage": "kakibalucu’ ay a kasabelih",
        "randomincategory-submit": "mileku",
        "statistics": "sausi",
+       "statistics-articles": "lacul kasabelih",
        "pageswithprop-submit": "mileku",
        "brokenredirects-delete": "misipu",
        "withoutinterwiki-legend": "saayaway a sulit",
        "newpages": "baluhay kasabelih",
        "newpages-submit": "paazih",
        "move": "milimad",
+       "notargettitle": "inayi’ ku pabalucu’an",
        "pager-older-n": "{{PLURAL:$1| kusa malumanay}}",
        "suppress": "malangat",
        "apisandbox-reset": "palawpis",
        "checkbox-select": "mipili’: $1",
        "checkbox-all": "hamin",
        "checkbox-none": "nayi’",
+       "checkbox-invert": "kabelihan mipili’",
        "allpages": "hamin nu kasabelih",
+       "nextpage": "zikuzan a belih ($1)",
+       "prevpage": "ayaway a belih ($1)",
        "allarticles": "hamin nu kasabelih",
        "allpagessubmit": "mileku",
        "categories": "kakuniza",
        "emailsend": "patigamitu",
        "watchlist": "miazihay a piazihan tu sulit",
        "mywatchlist": "miazihay a piazihan tu sulit",
+       "watchnologin": "caay henay patalabu",
        "watch": "miazih",
        "watchlist-hide": "midimut",
        "wlshowhideminor": "cayka yadah ku misumad",
        "protect-summary-cascade": "patatusul",
        "protect-expiring": "kakatekuhan $1 (UTC)",
        "protect-expiry-indefinite": "inayi’ u sungliw",
+       "restriction-type": "pabeli tu kinli mahasa:",
        "restriction-edit": "mikawaway-kalumyiti",
        "restriction-move": "milimad",
        "restriction-create": "patizeng",
        "restriction-upload": "patapabaw",
+       "restriction-level-autoconfirmed": "madiputay a kasabelih - satizep mikawaway tu kalumyiti",
        "undeletebtn": "patiku",
        "undeletecomment": "mahicaay:",
        "undelete-search-submit": "kilim",
        "export-submit": "patahkal",
        "allmessagesname": "kalungangan",
        "allmessages-filter-legend": "kilim",
+       "allmessages-filter-unmodified": "caay henay misumad",
        "allmessages-filter-all": "hamin",
        "allmessages-filter-modified": "masumad tuway",
        "allmessages-language": "kamu:",
        "exif-lightsource": "katahkalan nu likat",
        "exif-flash": "sabelabelatay a tinghuy",
        "exif-focallength": "saed nu sapisasing",
+       "exif-whitebalance": "sapalalen nu salengacay",
        "exif-contrast": "e-contrast",
+       "exif-saturation": "matumesay a sulyang",
        "exif-keywords": "aazihen dulit",
        "exif-objectname": "sapuyuay a ngangan",
        "exif-headline": "satangahan",
        "exif-source": "saangangan",
+       "exif-urgency": "hacica ku kalah",
        "exif-writer": "misacudaday",
        "exif-languagecode": "kamu",
        "exif-iimcategory": "kakuniza",
+       "exif-datetimereleased": "patiyak i",
        "exif-identifier": "mapulitaay a kodo",
        "exif-label": "aazihen paya",
+       "exif-usageterms": "mamaala a cedang",
+       "exif-disclaimer": "caay pimuku tu sikining",
+       "exif-compression-1": "caay henay piepian mipecec",
        "exif-orientation-1": "tatungus",
        "exif-componentsconfiguration-0": "inayi’",
+       "exif-exposureprogram-0": "caay henay misaheci",
        "exif-exposureprogram-1": "palima",
        "exif-meteringmode-255": "zuma",
        "exif-lightsource-1": "edil",
        "exif-lightsource-4": "sabelabelatay a tinghuy",
        "exif-lightsource-9": "cilalah a demiad",
        "exif-lightsource-10": "kenutan",
+       "exif-lightsource-11": "iduutay",
        "exif-focalplaneresolutionunit-2": "incun",
        "exif-scenecapturetype-0": "tatungus",
        "exif-scenecapturetype-1": "makaazihay",
        "exif-objectcycle-p": "nakalahukan a cacay",
        "exif-dc-contributor": "paaninay tu kalusasing",
        "exif-dc-date": "demiad",
+       "exif-dc-publisher": "insacay",
        "exif-dc-rights": "kinli",
+       "exif-rating-rejected": "kakaian",
        "exif-iimcategory-edu": "pasubana’ay a kawaw",
        "exif-iimcategory-evn": "liwliw",
        "exif-iimcategory-hth": "kapah ku uzip",
        "confirm-watch-button": "malucekay",
        "confirm-unwatch-button": "malucekay",
        "confirm-rollback-button": "malucekay",
+       "quotation-marks": "\"$1\"",
+       "imgmultipagenext": "zikuzan a belih →",
        "imgmultigo": "mileku!",
        "img-lang-go": "mileku",
        "ascending_abbrev": "masalaylay adidi’ay katukuh tabakiay",
        "descending_abbrev": "masalaylay tabakiay katukuh adidi’ay",
+       "table_pager_next": "zikuzan a belih",
        "table_pager_last": "sazikuzay a kasabelih",
        "table_pager_limit_submit": "mileku",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1| sasukamu ]])",
index 626cf61..85f4661 100644 (file)
        "rcfilters-empty-filter": "لا مرشحات فعالة. كل المساهمات معروضة.",
        "rcfilters-filterlist-title": "مرشحات",
        "rcfilters-filterlist-whatsthis": "كيف تعمل هذه؟",
-       "rcfilters-filterlist-feedbacklink": "تÙ\82دÙ\8aÙ\85 Ù\85راجعات Ù\84Ù\85رشحات (بÙ\8aتا) Ø§Ù\84جدÙ\8aدة",
+       "rcfilters-filterlist-feedbacklink": "أخبرÙ\86ا Ù\85ا Ø±Ø£Ù\8aÙ\83 Ø­Ù\88Ù\84 Ù\87Ø°Ù\87 Ø§Ù\84Ù\85رشحات (اÙ\84جدÙ\8aدة)",
        "rcfilters-highlightbutton-title": "التعليم على النتائج",
        "rcfilters-highlightmenu-title": "اختر لونًا",
        "rcfilters-highlightmenu-help": "اختر لونا للتعليم على هذه الخاصية",
        "rcfilters-liveupdates-button-title-off": "عرض التغييرات الجديدة فور حدوثها",
        "rcfilters-watchlist-markseen-button": "التعليم على كل التغييرات كمرئية",
        "rcfilters-watchlist-edit-watchlist-button": "تعديل قائمة الصفحات المراقبة",
+       "rcfilters-watchlist-showupdated": "التغييرات للصفحات التي لم تزرها منذ حدوث التغييرات هي <strong>بالخط العريض</strong>، مع علامات صلبة.",
        "rcnotefrom": "بالأسفل {{PLURAL:$5|التغيير|التغييرات}} منذ <strong>$2</strong> (إلى <strong>$1</strong> معروضة).",
        "rclistfromreset": "إعادة ضبط خيار التاريخ",
        "rclistfrom": "أظهر التغييرات بدء من $3 $2",
        "unwatchthispage": "أوقف المراقبة",
        "notanarticle": "ليست صفحة محتوى",
        "notvisiblerev": "المراجعة تم حذفها",
-       "watchlist-details": "{{PLURAL:$1||صفحة واحدة|صفحتان|$1 صفحات|$1 صفحة}} في قائمة مراقبتك، دون اعتبار صفحات النقاش صفحات منفصلة.",
+       "watchlist-details": "{{PLURAL:$1||صفحة واحدة|صفحتان|$1 صفحات|$1 صفحة}} في قائمة مراقبتك (بالإضافة لصفحات النقاش).",
        "wlheader-enotif": "الإخطار بالبريد الإلكتروني مُفعّل.",
        "wlheader-showupdated": "الصفحات التي تم تحريرها بعد مطالعتك إياها آخر مرة عناوينها بالخط '''الغليظ'''",
        "wlnote": "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''الساعة''' الماضية|'''الساعتين''' الماضيتين|ال'''$2''' ساعات الماضية|ال'''$2''' ساعة الماضية}} وفقاً ل$3، $4.",
        "sp-contributions-newonly": "أظهر إنشاء الصفحات فقط",
        "sp-contributions-hideminor": "أخف التعديلات الطفيفة",
        "sp-contributions-submit": "بحث",
+       "sp-contributions-outofrange": "غير قادر على عرض أي نتائج. نطاق الأيبي المطلوب هو أكبر من حد CIDR وهو /$1.",
        "whatlinkshere": "ماذا يصل هنا",
        "whatlinkshere-title": "الصفحات التي تصل إلى \"$1\"",
        "whatlinkshere-page": "الصفحة:",
        "logentry-newusers-autocreate": "أنشئ حساب {{GENDER:$2|المستخدم|المستخدمة}} $1 تلقائيًا",
        "logentry-protect-move_prot": "$1 {{GENDER:$2|نقل}} إعدادات الحماية من $4 إلى $3",
        "logentry-protect-unprotect": "{{GENDER:$2|رفع|رفعت}} $1 الحماية عن $3",
-       "logentry-protect-protect": "$1 {{GENDER:$2|حمى|حمت}} $3 $4",
+       "logentry-protect-protect": "{{GENDER:$2|حمى|حمت}} $1 $3 $4",
        "logentry-protect-protect-cascade": "$1 {{GENDER:$2|حمى|حمت}} $3 $4 [مضمنة]",
        "logentry-protect-modify": "{{GENDER:$2|غير|غيرت}} $1 مستوى حماية $3 $4",
        "logentry-protect-modify-cascade": "$1 {{GENDER:$2|غير|غيرت}} مستوى الحماية ل$3 $4 [مضمن]",
index 9301106..0e51f59 100644 (file)
        "sp-contributions-newonly": "Паказваць толькі праўкі, якімі былі створаныя старонкі",
        "sp-contributions-hideminor": "Схаваць дробныя праўкі",
        "sp-contributions-submit": "Шукаць",
+       "sp-contributions-outofrange": "Немагчыма паказаць ніякія вынікі. Запытаны IP-дыяпазон большы чым CIDR-ліміт /$1.",
        "whatlinkshere": "Спасылкі на старонку",
        "whatlinkshere-title": "Старонкі, якія спасылаюцца на $1",
        "whatlinkshere-page": "Старонка:",
        "tooltip-feed-rss": "RSS-стужка для гэтай старонкі",
        "tooltip-feed-atom": "Atom-стужка для гэтай старонкі",
        "tooltip-t-contributions": "Унёсак {{GENDER:$1|гэтага ўдзельніка|гэтай удзельніцы}}",
-       "tooltip-t-emailuser": "Даслаць ліст {{GENDER:$1|гэтаму ўдзельніку|гэтай удзельніцы}} па электроннай пошце",
+       "tooltip-t-emailuser": "Даслаць ліст электроннай поштай {{GENDER:$1|гэтаму ўдзельніку|гэтай удзельніцы}}",
        "tooltip-t-info": "Болей інфармацыі пра гэтую старонку",
        "tooltip-t-upload": "Загрузіць файлы",
        "tooltip-t-specialpages": "Сьпіс усіх спэцыяльных старонак",
        "diff-form-revid": "Ідэнтыфікатар вэрсіі з адрозьненьнямі",
        "diff-form-submit": "Паказаць адрозьненьні",
        "permanentlink": "Сталая спасылка",
+       "permanentlink-revid": "Ідэнтыфікатар вэрсіі",
        "dberr-problems": "Прабачце! На гэтым сайце ўзьніклі тэхнічныя цяжкасьці.",
        "dberr-again": "Паспрабуйце пачакаць некалькі хвілінаў і абнавіць.",
        "dberr-info": "(Немагчыма злучыцца з базай зьвестак: $1)",
index eae54a2..da370bb 100644 (file)
@@ -48,6 +48,7 @@
        "tog-watchlisthideminor": "Къайладаха кегийра нисдарш тергаме могӀам чура",
        "tog-watchlisthideliu": "Къайладаха бовзийтина болу декъашхойн нисдарш тергаме могӀам чура",
        "tog-watchlistreloadautomatically": "Литтарна хийцам хилча авто-карлабаккха тергаме могӀам (оьшу JavaScript)",
+       "tog-watchlistunwatchlinks": "Тергаме могӀаман тӀетоха дӀаяздарш юкъарадохуш йолу хьажоргаш (оьшу JavaScript)",
        "tog-watchlisthideanons": "Къайладаха къайлаха болу декъашхойн нисдарш тергаме могӀам чура",
        "tog-watchlisthidepatrolled": "Къайладаха хьаьжина долу нисдарш тергаме могӀам чура",
        "tog-watchlisthidecategorization": "АгӀонашна тӀе категореш тохар къайладаккха",
        "gender-female": "сте",
        "prefs-help-gender": "ТӀехь доцург: и хаам лелош бу цхьайолу хаамаш чохь декъашхочун пол гучуйоккхуш.\nИ хаам массарна гуш хир бу.",
        "email": "Email",
+       "prefs-help-realname": "Бакъ цӀе язъяр тӀехь дац.\nИза язйича, ахьа биначу белхийн хьо автор хилар гойтуш лелор ю.",
        "prefs-help-email": "Электронан поштан адрес цахӀоттийча а хӀумма дац, амма иза оьшар ю, нагахь хьуна хьай пароль йицлахь.",
        "prefs-help-email-others": "Кхин дӀа цо кхечу декъашхошна йиш хуьлуьйту хьога электронан кехат даийта хьан агӀона чохь йолу хьажориган гӀоьнца.",
        "prefs-help-email-required": "Электронан поштан адрес яздан деза.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Керланиш",
        "rcfilters-filter-user-experience-level-newcomer-description": "10 нисдар дина а, 4 дийнахь болх бина а регистрацийина декъашхой",
        "rcfilters-filter-user-experience-level-learner-label": "Доьшуш берш",
+       "rcfilters-filter-user-experience-level-learner-description": "Зеделла «Керла декъашхо» а, «Зеделла декъашхой» а юккъехь долу дӀабазбелла декъашхой.",
        "rcfilters-filter-user-experience-level-experienced-label": "Зеделла декъашхой",
        "rcfilters-filter-user-experience-level-experienced-description": "500 сов нисдарш а дина 30 дийнахь жигара а хийла болу дӀабазбелла декъашхой.",
        "rcfilters-filtergroup-automated": "Авто-къинхьегам",
        "whatlinkshere-submit": "Кхочушдé",
        "autoblockid": "Ша блоккхетар #$1",
        "block": "Декъашхочун блоктохар",
-       "unblock": "ДекъашхонтӀера блокдӀаякхар",
+       "unblock": "Декъашхочун тӀера блокдӀаякхар",
        "blockip": "Блоктоха {{GENDER:$1|декъашхочун}}",
        "blockip-legend": "Декъашхочун блоктохар",
        "blockiptext": "Бухахь йолу форманца блоктоха IP-адресна цунтӏера дӏаяздарш ца дайта.\nБлоктоха магийна цо зенаш деш делахь кхин хӏокху [[{{MediaWiki:Policy-url}}|низам ца]].\nЛахахь билгалде блоктохарна бахьана.",
        "ipb-blockingself": "Хьо хьайна блоктоха гӀерта! Лаьий хьона и кхочушдан?",
        "ipb-edit-dropdown": "Бахьанин могӀам нисбар",
        "ipb-unblock-addr": "ДӀаякхаблок $1",
-       "ipb-unblock": "дӀаякхаблок декъашхонтӀера я IP-адрес тӀера",
+       "ipb-unblock": "дӀаякхаблок декъашхочун тӀера я IP-адрес тӀера",
        "ipb-blocklist": "Блоктоьхнарш",
        "ipb-blocklist-contribs": "{{GENDER:$1|$1}} къинхьегам",
        "ipb-blocklist-duration-left": "$1 йисина",
-       "unblockip": "ДӀаякхаблок декъашхонтӀера",
+       "unblockip": "ДӀаякхаблок декъашхочун тӀера",
        "unblockiptext": "Лелае лахара форма IP-адрес тӀера я декъашхойн дӀаяздар тӀера блокдӀайокхуш.",
        "ipusubmit": "ДIаяккха хӀара блок",
        "unblocked": "[[User:$1|$1]] хьайаьстина.",
        "htmlform-no": "ХӀахӀа",
        "htmlform-yes": "ХӀаъ",
        "htmlform-chosen-placeholder": "Харжа кеп",
-       "htmlform-cloner-create": "ТÓ\80еÑ\82оÑ\85а ÐºÑ\85ин",
+       "htmlform-cloner-create": "Ð\9aÑ\85ин Ñ\82Ó\80еÑ\82оÑ\85а",
        "htmlform-cloner-delete": "ДӀаяккха",
        "htmlform-date-placeholder": "ШШШШ-ББ-ДД",
        "htmlform-time-placeholder": "СС:ММ:СС",
        "mw-widgets-dateinput-placeholder-day": "ШШШШ-ББ-ДД",
        "mw-widgets-dateinput-placeholder-month": "ШШШШ-ББ",
        "mw-widgets-titleinput-description-redirect": "ДӀасхьажорг $1 тӀе",
+       "mw-widgets-usersmultiselect-placeholder": "Кхин тӀетоха…",
        "date-range-from": "Терхьера:",
        "date-range-to": "Терхье:",
        "sessionprovider-generic": "$1 сесси",
index f9a4353..f181db7 100644 (file)
        "sp-contributions-newonly": "Zobrazit pouze editace zakládající stránku",
        "sp-contributions-hideminor": "Skrýt malé editace",
        "sp-contributions-submit": "Zobrazit",
+       "sp-contributions-outofrange": "Výsledky nelze zobrazit. Požadovaný rozsah IP adres je větší než limit CIDR /$1.",
        "whatlinkshere": "Odkazuje sem",
        "whatlinkshere-title": "Stránky odkazující na „$1“",
        "whatlinkshere-page": "Strana:",
index 4e4a469..e0a83eb 100644 (file)
        "sp-contributions-newonly": "Nur Seitenerstellungen anzeigen",
        "sp-contributions-hideminor": "Kleine Bearbeitungen ausblenden",
        "sp-contributions-submit": "Suchen",
+       "sp-contributions-outofrange": "Es konnten keine Ergebnisse angezeigt werden. Der angeforderte IP-Adressbereich ist größer als die CIDR-Grenze von /$1.",
        "whatlinkshere": "Links auf diese Seite",
        "whatlinkshere-title": "Seiten, die auf „$1“ verlinken",
        "whatlinkshere-page": "Seite:",
index 2ccddbf..da6b360 100644 (file)
        "rcfilters-empty-filter": "Aktiivsed filtrid puuduvad. Näidatakse kogu kaastööd.",
        "rcfilters-filterlist-title": "Filtrid",
        "rcfilters-filterlist-whatsthis": "Kuidas see töötab?",
-       "rcfilters-filterlist-feedbacklink": "Anna uute filtrite beetaversiooni kohta tagasisidet",
+       "rcfilters-filterlist-feedbacklink": "Ütle meile, mida arvad neist uutest filtririistadest.",
        "rcfilters-highlightbutton-title": "Tulemuste esiletõst",
        "rcfilters-highlightmenu-title": "Vali värvus",
        "rcfilters-highlightmenu-help": "Vali värvus, et see atribuut esile tõsta",
        "rcfilters-liveupdates-button-title-on": "Lülita reaalajas uuendamine välja",
        "rcfilters-liveupdates-button-title-off": "Näita uusi muudatusi kohe nende tegemise järel",
        "rcfilters-watchlist-markseen-button": "Märgi kõik muudatused nähtuks",
+       "rcfilters-watchlist-edit-watchlist-button": "Muuda jälgimisloendit",
+       "rcfilters-watchlist-showupdated": "Muudatused lehekülgedel, mida sa pole pärast muudatuste tegemist külastanud, on <strong>rasvases</strong> kirjas ja tähistatud täidetud punktiga.",
        "rcnotefrom": "Allpool on toodud {{PLURAL:$5|muudatus|muudatused}} alates: <strong>$3, kell $4</strong> (näidatakse kuni <strong>$1</strong> muudatust)",
        "rclistfromreset": "Lähtesta kuupäeva valik",
        "rclistfrom": "Näita muudatusi alates: $3, kell $2",
        "sp-contributions-newonly": "Näita ainult uute lehekülgedega alustamist",
        "sp-contributions-hideminor": "Peida pisimuudatused",
        "sp-contributions-submit": "Otsi",
+       "sp-contributions-outofrange": "Ei õnnestu näidata ühtegi tulemust. Päritud IP-aadressivahemik on suurem kui CIDR-vahemiku piirang /$1.",
        "whatlinkshere": "Lingid siia",
        "whatlinkshere-title": "Leheküljed, mis viitavad lehele \"$1\"",
        "whatlinkshere-page": "Lehekülg:",
index 3dcb491..9285cc3 100644 (file)
        "rcfilters-filter-lastrevision-label": "Viimeisin versio",
        "rcfilters-filter-lastrevision-description": "Vain viimeisin muutos sivulle.",
        "rcfilters-filter-previousrevision-label": "Ei viimeisin muutos",
+       "rcfilters-filter-excluded": "Poissuljettu",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:ei</strong> $1",
+       "rcfilters-exclude-button-off": "Poissulje valitut",
+       "rcfilters-exclude-button-on": "Poissuljetaan valitut",
        "rcfilters-view-advanced-filters-label": "Kehittyneet suodattimet",
        "rcfilters-view-namespaces-tooltip": "Suodata tuloksia nimiavaruuden mukaan",
        "rcnotefrom": "Alla ovat muutokset <strong>$3, $4</strong> lähtien. (Enintään <strong>$1</strong> näytetään.)",
index 4fb2636..518b7bf 100644 (file)
        "returnto": "Revenir à la page $1.",
        "tagline": "De {{SITENAME}}",
        "help": "Aide",
-       "search": "Chercher",
+       "search": "Rechercher",
        "search-ignored-headings": " #<!-- ne pas modifier cette ligne --><pre>\n# Titres des sections qui seront ignorés par la recherche.\n# Les changements effectués ici prennent effet dès lors que la page avec le titre est indexée.\n# Vous pouvez forcer la réindexation de la page en effectuant une modification vide.\n# La syntaxe est la suivante :\n#   * Toute ce qui suit un « # » jusqu’à la fin de la ligne est un commentaire.\n#   * Toute ligne non-vide est le titre exact à ignorer, casse comprise.\nRéférences\nLiens externes\nVoir aussi\n #</pre><!-- ne pas modifier cette ligne -->",
-       "searchbutton": "Chercher",
+       "searchbutton": "Rechercher",
        "go": "Consulter",
        "searcharticle": "Continuer",
        "history": "Historique de la page",
        "mainpage-description": "Accueil",
        "policy-url": "Project:Règles",
        "portal": "Communauté",
-       "portal-url": "Project: portail communautaire",
+       "portal-url": "Project: Portail communautaire",
        "privacy": "Politique de confidentialité",
        "privacypage": "Project: Politique de confidentialité",
        "badaccess": "Erreur de permissions",
        "botpasswords-no-provider": "BotPasswordsSessionProvider n’est pas disponible.",
        "botpasswords-restriction-failed": "Les restrictions de mot de passe de robots empêchent cette connexion.",
        "botpasswords-invalid-name": "Le nom d’utilisateur spécifié ne contient pas de séparateur de mot de passe de robots (« $1 »).",
-       "botpasswords-not-exist": "L’{{GENDER:$1|utilisateur|utilisatrice}} « $1 » n’a pas de mot de passe de robots intitulé « $2 ».",
+       "botpasswords-not-exist": "L’{{GENDER:$1|utilisateur|utilisatrice}} « $1 » n’a pas de mot de passe de robot nommé « $2 ».",
        "resetpass_forbidden": "Les mots de passe ne peuvent pas être changés",
        "resetpass_forbidden-reason": "Les mots de passe ne peuvent pas être modifiés : $1",
        "resetpass-no-info": "Vous devez être connecté pour avoir accès directement à cette page.",
        "sp-contributions-newonly": "Afficher uniquement les modifications qui sont des créations de page",
        "sp-contributions-hideminor": "Masquer les modifications mineures",
        "sp-contributions-submit": "Rechercher",
+       "sp-contributions-outofrange": "Impossible d’afficher un quelconque résultat. L’intervalle d’adresses IP est plus grand que la limite CIDR de /$1.",
        "whatlinkshere": "Pages liées",
        "whatlinkshere-title": "Pages qui pointent vers « $1 »",
        "whatlinkshere-page": "Page :",
        "tooltip-pt-watchlist": "Une liste des pages dont vous suivez les modifications",
        "tooltip-pt-mycontris": "La liste de {{GENDER:|vos}} contributions",
        "tooltip-pt-anoncontribs": "Une liste des modifications effectuées depuis cette adresse IP",
-       "tooltip-pt-login": "Sans être obligatoire, il est recommandé de vous connecter.",
+       "tooltip-pt-login": "Vous êtes encouragé à vous connecter ; ce n’est cependant pas obligatoire.",
        "tooltip-pt-login-private": "Vous devez vous connecter pour utiliser ce wiki",
        "tooltip-pt-logout": "Se déconnecter",
-       "tooltip-pt-createaccount": "Sans être obligatoire, il vous est conseillé de créer un compte utilisateur pour vous connecter",
+       "tooltip-pt-createaccount": "Vous êtes encouragé à créer un compte utilisateur pour vous connecter ; ce n’est cependant pas obligatoire.",
        "tooltip-ca-talk": "Discussion au sujet de cette page de contenu",
        "tooltip-ca-edit": "Modifier le wikicode",
        "tooltip-ca-addsection": "Commencer une nouvelle section",
        "tooltip-search": "Rechercher dans {{SITENAME}}",
        "tooltip-search-go": "Accédez à une page du même nom si elle existe",
        "tooltip-search-fulltext": "Rechercher les pages comportant ce texte.",
-       "tooltip-p-logo": "Accueil général",
+       "tooltip-p-logo": "Visiter la page d’accueil",
        "tooltip-n-mainpage": "Visiter la page d'accueil du site",
        "tooltip-n-mainpage-description": "Accueil général",
        "tooltip-n-portal": "À propos du projet, ce que vous pouvez faire, où trouver les informations",
-       "tooltip-n-currentevents": "Trouver plus d'informations sur les actualités en cours",
+       "tooltip-n-currentevents": "Trouver plus dinformations sur les actualités en cours",
        "tooltip-n-recentchanges": "Liste des modifications récentes sur le wiki",
        "tooltip-n-randompage": "Afficher une page au hasard",
-       "tooltip-n-help": "Accès à l'aide",
+       "tooltip-n-help": "Accès à laide",
        "tooltip-t-whatlinkshere": "Liste des pages liées qui pointent sur celle-ci",
        "tooltip-t-recentchangeslinked": "Liste des modifications récentes des pages appelées par celle-ci",
        "tooltip-feed-rss": "Flux RSS pour cette page",
        "widthheightpage": "$1 × $2, $3 page{{PLURAL:$3||s}}",
        "file-info": "Taille du fichier : $1, type MIME : $2",
        "file-info-size": "$1 × $2 pixels, taille du fichier : $3, type MIME : $4",
-       "file-info-size-pages": "$1 × $2 pixels, taille du fichier : $3, type MIME: $4, $5 page{{PLURAL:$5||s}}",
+       "file-info-size-pages": "$1 × $2 pixels ; taille du fichier : $3 ; type MIME : $4 ; $5 page{{PLURAL:$5||s}}",
        "file-nohires": "Pas de plus haute résolution disponible.",
        "svg-long-desc": "Fichier SVG, résolution de $1 × $2 pixels, taille : $3",
        "svg-long-desc-animated": "Fichier SVG animé, résolution $1 × $2 pixels, taille du fichier : $3",
index 16e369e..8b7357d 100644 (file)
        "rcfilters-empty-filter": "Non hai filtros activos. Móstranse tódalas contribucións.",
        "rcfilters-filterlist-title": "Filtros",
        "rcfilters-filterlist-whatsthis": "Como funciona isto?",
-       "rcfilters-filterlist-feedbacklink": "Deixar comentarios sobre os novos filtros (en fase beta)",
+       "rcfilters-filterlist-feedbacklink": "Coméntenos o que pensa sobre estas (novas) ferramentas de filtrado",
        "rcfilters-highlightbutton-title": "Resaltar resultados",
        "rcfilters-highlightmenu-title": "Seleccione unha cor",
        "rcfilters-highlightmenu-help": "Seleccione unha cor para resaltar esta propiedade",
        "rcfilters-liveupdates-button": "Actualizacións instantáneas",
        "rcfilters-liveupdates-button-title-on": "Desactivar actualizacións en directo",
        "rcfilters-liveupdates-button-title-off": "Amosar os novos cambios en canto se produzan",
-       "rcfilters-watchlist-markSeen-button": "Marcar tódolos cambios como xa vistos",
+       "rcfilters-watchlist-markseen-button": "Marcar tódolos cambios como xa vistos",
+       "rcfilters-watchlist-edit-watchlist-button": "Editar a súa lista de páxinas vixiadas",
+       "rcfilters-watchlist-showupdated": "Os cambios feitos en páxinas que non visitou dende que se efectuaron aparecen en <strong>grosas</strong>, acompañados de marcadores sólidos.",
        "rcnotefrom": "A continuación {{PLURAL:$5|móstrase o cambio feito|móstranse os cambios feitos}} desde o <strong>$3</strong> ás <strong>$4</strong> (móstranse <strong>$1</strong> como máximo).",
        "rclistfromreset": "Reinicializar a selección da data",
        "rclistfrom": "Mostrar os cambios novos desde o $3 ás $2",
        "unwatchthispage": "Deixar de vixiar",
        "notanarticle": "Non é unha páxina de contido",
        "notvisiblerev": "A revisión foi borrada",
-       "watchlist-details": "Hai {{PLURAL:$1|unha páxina|$1 páxinas}} na súa lista de vixilancia, sen contar as de conversa.",
+       "watchlist-details": "Hai {{PLURAL:$1|$1 páxina|$1 páxinas}} na súa lista de vixilancia (máis as páxinas de conversa).",
        "wlheader-enotif": "A notificación por correo electrónico está activada.",
        "wlheader-showupdated": "As páxinas que cambiaron desde a súa última visita móstranse en <strong>letra grosa</strong>.",
        "wlnote": "A continuación {{PLURAL:$1|está a última modificación|están as últimas <strong>$1</strong> modificacións}} {{PLURAL:$2|na última hora|nas últimas <strong>$2</strong> horas}} ata o $3 ás $4.",
        "sp-contributions-newonly": "Mostrar só as edicións que crearon páxinas",
        "sp-contributions-hideminor": "Agochar as edicións pequenas",
        "sp-contributions-submit": "Procurar",
+       "sp-contributions-outofrange": "Non é posible amosar ningún resultado. O rango de direccións IP pedida é maior que os límites CIDR de /$1.",
        "whatlinkshere": "Páxinas que ligan con esta",
        "whatlinkshere-title": "Páxinas que ligan con \"$1\"",
        "whatlinkshere-page": "Páxina:",
index c317226..d848eec 100644 (file)
@@ -78,6 +78,7 @@
        "category_header": "𐌻𐌰𐌿𐌱𐍉𐍃 𐌹𐌽 𐌺𐌿𐌽𐌾𐌰 \"$1\"",
        "subcategories": "𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽𐌰 𐌺𐌿𐌽𐌾𐌰",
        "category-media-header": "𐌼𐌴𐌳𐌾𐌰 𐌹𐌽 𐌺𐌿𐌽𐌾𐌰 \"$1\"",
+       "category-empty": "<em>𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌽𐌿 𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 𐌻𐌰𐌿𐌱𐌰𐌽𐍃 𐌸𐌰𐌿 𐌼𐌰𐌹𐌳𐌾𐌰.</em>",
        "hidden-categories": "{{PLURAL:$1|𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽 𐌺𐌿𐌽𐌹|𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰 𐌺𐌿𐌽𐌾𐌰}}",
        "hidden-category-category": "𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰 𐌺𐌿𐌽𐌾𐌰",
        "category-subcat-count": "{{PLURAL:$2|𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 𐌸𐌰𐍄𐌴𐌹𐌽𐌴𐌹 𐌹𐍆𐍄𐌿𐌼 𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽 𐌺𐌿𐌽𐌹|𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 {{PLURAL:$1|𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽 𐌺𐌿𐌽𐌹|𐌹𐍆𐍄𐌿𐌼𐌰 $1 𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽𐌰 𐌺𐌿𐌽𐌾𐌰}}, 𐌰𐌻𐌻𐌰𐌹𐌶𐌴 $2 𐌺𐌿𐌽𐌾𐌴.}}",
        "protect_change": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹",
        "unprotect": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌼𐌿𐌽𐌳",
        "newpage": "𐌽𐌹𐌿𐌾𐌹𐍃 𐌻𐌰𐌿𐍆𐍃",
-       "talkpagelinktext": "ð\90\8c²ð\90\8c°ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c³ð\90\8c¾ð\90\8c°",
+       "talkpagelinktext": "ð\90\8c²ð\90\8c°ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c³ð\90\8c¹",
        "specialpage": "𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃",
        "personaltools": "𐍃𐍅𐌴𐍃𐌰𐌹 𐍃𐌰𐍂𐍅𐌰𐌽𐍃",
-       "talk": "ð\90\8c²ð\90\8c°ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c³ð\90\8c¾ð\90\8c°",
+       "talk": "ð\90\8c²ð\90\8c°ð\90\8d\85ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c³ð\90\8c¹",
        "views": "𐍃𐌹𐌿𐌽𐌴𐌹𐍃",
        "toolbox": "𐍃𐌰𐍂𐍅𐌰𐌽𐍃",
        "mediawikipage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐍅𐌰𐌿𐍂𐌳𐌰𐌻𐌰𐌿𐍆",
        "confirmable-yes": "𐌾𐌰",
        "confirmable-no": "𐌽𐌴",
        "site-rss-feed": "$1 RSS 𐍂𐌹𐌽𐌽𐍉",
-       "site-atom-feed": "$1 ð\90\8c°ð\90\8d\84ð\90\8d\89𐌼 𐍂𐌹𐌽𐌽𐍉",
+       "site-atom-feed": "$1 ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿𐌼 𐍂𐌹𐌽𐌽𐍉",
        "page-atom-feed": "\"$1\" 𐌰𐍄𐍉𐌼 𐍂𐌹𐌽𐌽𐍉",
        "red-link-title": "$1 (𐌻𐌰𐌿𐍆𐍃 𐌽𐌹𐍃𐍄)",
        "nstab-main": "𐌻𐌰𐌿𐍆𐍃",
        "nstab-user": "𐌱𐍂𐌿𐌺𐌾𐌰𐌻𐌰𐌿𐍆𐍃",
        "nstab-special": "𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃",
        "nstab-project": "𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆𐍃",
-       "nstab-image": "ð\90\8d\86ð\90\8c°ð\90\8c´ð\90\8c¹𐌻",
+       "nstab-image": "ð\90\8d\86ð\90\8c°ð\90\8c¾𐌻",
        "nstab-mediawiki": "𐍅𐌰𐌿𐍂𐌳",
        "nstab-template": "𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐌹𐍆𐍂𐌹𐍃𐌰𐌷𐍄𐍃",
        "nstab-help": "𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆𐍃",
        "nstab-category": "𐌺𐌿𐌽𐌹",
        "mainpage-nstab": "𐌰𐌽𐌰𐍃𐍄𐍉𐌳𐌴𐌹𐌽𐌹𐌻𐌰𐌿𐍆𐍃",
+       "nosuchspecialpage": "𐌽𐌹𐍃𐍄 𐍃𐍅𐌰𐌻𐌴𐌹𐌺𐍃 𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃",
        "error": "𐌰𐌹𐍂𐌶𐌴𐌹",
        "databaseerror-error": "𐌰𐌹𐍂𐌶𐌴𐌹: $1",
        "missing-article": "𐌳𐌰𐍄𐌰𐌱𐌴𐍃 𐌽𐌹 𐌱𐌹𐌲𐌰𐍄 𐌱𐍉𐌺𐍉𐍃 𐌻𐌰𐌿𐌱𐌹𐍃 𐌸𐌹𐌶𐌴𐌹 𐍃𐌺𐌿𐌻𐌳𐌴𐌳𐌹 𐌱𐌹𐌲𐌹𐍄𐌰𐌽, 𐌷𐌰𐌹𐍄𐌰𐌽𐍃 \"$1\" $2. \n\n𐌸𐌰𐍄𐌰 𐌿𐍆𐍄𐌰 𐍅𐌰𐌹𐍂𐌸𐌹𐌸 𐌾𐌰𐌱𐌰𐌹 𐌻𐌰𐌹𐍃𐍄𐌾𐌰𐌳𐌰 𐍆𐌰𐌹𐍂𐌽𐌾𐌰 𐌳𐌹𐍆𐍆 𐌸𐌰𐌿 𐍃𐍀𐌹𐌻𐌻𐌰𐌲𐌰𐍅𐌹𐍃𐍃 𐍃𐌴𐌹 𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌹𐌳𐌰 𐌹𐍃𐍄. 𐌽𐌹𐌱𐌰𐌹 𐌹𐍃𐍄, 𐌼𐌰𐌷𐍄𐍃 𐌹𐍃𐍄 𐌴𐌹 𐌱𐌹𐌲𐌴𐍄𐌴𐌹𐍃 𐌰𐌹𐍂𐌶𐌴𐌹𐌽 𐌹𐌽 𐍃𐌰𐌿𐍆𐍄𐍅𐌰𐌹𐍂𐌰. \n\n𐌱𐌹𐌳𐌾𐌰𐌼 𐌸𐌿𐌺, 𐌼𐌴𐍂𐌴𐌹 𐌸𐌰𐍄𐌰 𐌳𐌿 [[Special:ListUsers/sysop\n|𐍂𐌴𐌹𐌺]] 𐌲𐌹𐍆𐌿𐌷 𐌲𐌰𐍅𐌹𐍃𐍃.",
        "savearticle": "𐌲𐌰𐍆𐌰𐍃𐍄 𐌻𐌰𐌿𐍆",
        "publishpage": "𐌼𐌴𐍂𐌴𐌹 𐌻𐌰𐌿𐍆",
        "preview": "𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽𐍃",
-       "showpreview": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽",
-       "showdiff": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌽𐌹𐌽𐍃",
+       "showpreview": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽",
+       "showdiff": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌽𐌹𐌽𐍃",
        "loginreqlink": "𐌰𐍄𐌲𐌰𐌲𐌲",
        "newarticle": "(𐌽𐌹𐍅𐌹)",
        "newarticletext": "𐌻𐌰𐌹𐍃𐍄𐌹𐌳𐌴𐍃 𐌲𐌰𐍅𐌹𐍃 𐌳𐌿 𐌻𐌰𐌿𐌱𐌰 𐍃𐌰𐌴𐌹 𐌽𐌹𐍃𐍄. 𐌳𐌿 𐍃𐌺𐌰𐍀𐌾𐌰𐌽 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆, 𐌰𐌽 𐌰𐍃𐍄𐍉𐌳𐌴𐌹 𐌼𐌴𐌻𐌾𐌰𐌽 𐌹𐌽 𐌰𐍂𐌺𐌰𐌹 𐌿𐍆 (𐍃𐌰𐌹𐍈 [$1 𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆] 𐌼𐌰𐌽𐌰𐌲𐌹𐌶𐌹𐌽 𐌺𐌿𐌽𐌸𐌾𐌰). 𐌾𐌰𐌱𐌰𐌹 𐌹𐍃 𐌷𐌴𐍂 𐌹𐌽 𐌰𐌹𐍂𐌶𐌴𐌹𐌽𐍃, 𐌲𐌰𐌲𐌲 𐌳𐌿 <𐍃𐍄𐍂𐍉𐌽𐌲>𐌹𐌱𐌿𐌺𐌰𐌷𐌰𐌿𐌱𐌹𐌳𐌹𐌻𐍉𐌽.",
        "noarticletext-nopermission": "𐌽𐌿 𐌽𐌹 𐍃𐌹𐌽𐌳 𐌱𐍉𐌺𐍉𐍃 𐌹𐌽 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.\n𐌼𐌰𐌲𐍄 [[Special:Search/{{PAGENAME}}|𐍃𐍉𐌺𐌾𐌰𐌽 𐌸𐌰𐍄𐌰 𐌻𐌰𐌿𐌱𐌰-𐌿𐍆𐌰𐍂𐌼𐌴𐌻𐌹]] 𐌹𐌽 𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐌻𐌰𐌿𐌱𐌰𐌼, 𐌸𐌰𐌿 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 𐍃𐍉𐌺𐌾𐌰𐌽 𐌲𐌰𐌷𐌰𐌷𐌾𐍉 𐌲𐌰𐍆𐌰𐍃𐍄𐍉𐍃]</span>, 𐌹𐌸 𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐍃 𐌰𐌽𐌳𐌻𐌴𐍄 𐍃𐌺𐌰𐍀𐌾𐌰𐌽 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆.",
        "updated": "(𐌰𐌽𐌰𐌽𐌹𐍅𐌹𐌸)",
        "previewnote": "<strong>𐌲𐌰𐌼𐌹𐌽𐌸𐌴𐌹 𐌸𐌰𐍄𐌴𐌹 𐌸𐌰𐍄𐌰 𐌹𐍃𐍄 𐌸𐌰𐍄𐌰𐌹𐌽𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽𐍃.</strong>\n𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌽𐌰𐌿𐌷 𐌽𐌹 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌽𐍉𐍃 𐍃𐌹𐌽𐌳!",
+       "continue-editing": "𐌲𐌰𐌲𐌲 𐌳𐌿 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐍃𐍄𐌰𐌳𐌰",
        "editing": "{{GENDER:𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃}} $1",
        "creating": "{{GENDER:𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐍃|𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐌴𐌹|𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐍃\n}} $1",
        "editingsection": "{{GENDER:𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹}} $1 (𐌳𐌰𐌹𐌻)",
        "template-protected": "(𐌷𐌰𐌱𐌰𐌹𐌸 𐌼𐌿𐌽𐌳)",
        "template-semiprotected": "(𐌷𐌰𐌱𐌰𐌹𐌸 𐌷𐌰𐌻𐌱𐌰𐌼𐌿𐌽𐌸)",
        "hiddencategories": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃 𐌹𐍃𐍄 𐌲𐌰𐌳𐌰𐌹𐌻𐌰 {{PLURAL:$1|1 𐌰𐌽𐌰𐌻𐌰𐌿𐌲𐌽𐌹𐍃 𐌺𐌿𐌽𐌾𐌹𐍃|$1 𐌰𐌽𐌰𐌻𐌰𐌿𐌲𐌽𐌰𐌹𐌶𐌴 𐌺𐌿𐌽𐌾𐌴}}:‎",
+       "permissionserrors": "𐌰𐌹𐍂𐌶𐌴𐌹 𐌰𐌽𐌳𐌻𐌴𐍄𐌹𐍃",
        "permissionserrorstext-withaction": "𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐍃 𐌰𐌽𐌳𐌻𐌴𐍄 𐌳𐌿 $2, 𐌹𐌽 {{PLURAL:$1|𐌹𐍆𐍄𐌿𐌼𐌰𐌹𐌶𐍉𐍃 𐍅𐌰𐌹𐌷𐍄𐌰𐌹𐍃|𐌹𐍆𐍄𐌿𐌼𐌰𐌹𐌶𐍉 𐍅𐌰𐌹𐌷𐍄𐌴}}:",
        "moveddeleted-notice": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃 𐌿𐍃𐌽𐌿𐌼𐌰𐌽𐍃 𐌹𐍃𐍄. 𐌿𐍃𐌽𐌿𐌼𐍄𐍃 𐌾𐌰𐌷 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌹𐌽𐍃 𐌼𐌹𐌸𐍃𐌰𐍄𐌴𐌹𐌽𐌰𐌹𐍃 𐌿𐍆 𐍃𐌹𐌽𐌳 𐌿𐍃𐍄𐌰𐌹𐌺𐌽𐌴𐌹𐌽𐌰𐌹.",
        "postedit-confirmation-created": "𐌻𐌰𐌿𐍆𐍃 𐌲𐌰𐍃𐌺𐌰𐍀𐌰𐌽𐍃 𐌹𐍃𐍄.",
        "nextn": "𐌹𐍆𐍄𐌿𐌼𐌰 {{PLURAL:$1|$1}}",
        "prevn-title": "𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄(𐌰) $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐍉𐌾𐌰}}",
        "nextn-title": "𐌰𐍆𐍄𐌿𐌼(𐌰) $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐍉𐌾𐌰}}",
-       "shown-title": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²𐌴𐌹 $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐍉𐌾𐌰}} 𐍈𐌰𐍂𐌾𐌰𐌼𐌼𐌴𐌷 𐌻𐌰𐌿𐌱𐌰.",
+       "shown-title": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85𐌴𐌹 $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐍉𐌾𐌰}} 𐍈𐌰𐍂𐌾𐌰𐌼𐌼𐌴𐌷 𐌻𐌰𐌿𐌱𐌰.",
        "viewprevnext": "𐍃𐌹𐌿𐌽𐌴𐌹𐍃 ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-new": "<strong>𐍃𐌺𐌰𐍀𐌴𐌹 𐌻𐌰𐌿𐍆 \"[[:$1]]\" 𐌰𐌽𐌰 𐌸𐌹𐌶𐌰𐌹 𐍅𐌹𐌺𐌹!</strong> {{{{PLURAL:$2|0=|𐍃𐌰𐌹 𐌾𐌰𐌷 𐌻𐌰𐌿𐍆 𐌱𐌹𐌲𐌹𐍄𐌰𐌽𐌰 𐌸𐌴𐌹𐌽𐌰𐌹 𐍃𐍉𐌺𐌴𐌹𐌽𐌰𐌹.|𐍃𐌰𐌹 𐌾𐌰𐌷 𐍄𐍉𐌾𐌰 𐍃𐍉𐌺𐌴𐌹𐌽𐌰𐌹𐍃 𐌱𐌹𐌲𐌹𐍄𐌰𐌽𐌰.}}",
        "searchprofile-articles": "𐌷𐌰𐌱𐌰𐌽𐌳𐌰𐌽𐍃 𐌻𐌰𐌿𐌱𐍉𐍃",
        "grouppage-sysop": "{{ns:project}}:𐍂𐌴𐌹𐌺𐍃",
        "right-writeapi": "𐌱𐍂𐌿𐌺𐌴𐌹𐌽𐍃 API 𐌼𐌴𐌻𐌴𐌹𐌽𐌰𐌹𐍃",
        "rightslog": "Niutandis stutjanlog",
+       "action-edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆",
        "nchanges": "$1 {{PLURAL:$1|𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃}}",
        "enhancedrc-history": "𐍃𐍀𐌹𐌻𐌻",
        "recentchanges": "𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (𐍃𐌰𐌹𐍈 𐌾𐌰𐌷[[Special:NewPages|𐍅𐌹𐌺𐍉 𐌽𐌹𐌿𐌾𐌰𐌹𐌶𐌴 𐌻𐌰𐌿𐌱𐌴]])",
        "rclistfrom": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐌽𐌹𐌿𐌾𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃 𐌰𐌽𐌰𐍃𐍄𐍉𐌳𐌾𐌰𐌽𐌳𐌴𐌹𐌽𐍃 𐍆𐍂𐌰𐌼 $2, $3",
        "rcshowhideminor": "$1 𐌼𐌹𐌽𐌽𐌹𐌶𐌴𐌹𐌽𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃",
-       "rcshowhideminor-show": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²𐌴𐌹",
+       "rcshowhideminor-show": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85𐌴𐌹",
        "rcshowhideminor-hide": "𐌰𐍆𐍆𐌹𐌻𐌷",
        "rcshowhidebots": "$1 𐌼𐌰𐌷𐍄𐌹𐍃𐌺𐌰𐌻𐌺𐍉𐍃",
-       "rcshowhidebots-show": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²𐌴𐌹",
+       "rcshowhidebots-show": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85𐌴𐌹",
        "rcshowhidebots-hide": "𐌰𐍆𐍆𐌹𐌻𐌷",
        "rcshowhideliu": "$1 𐌰𐌽𐌰𐌼𐌴𐌻𐌹𐌳𐌰𐌹 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐍃",
        "rcshowhideliu-hide": "𐌰𐍆𐍆𐌹𐌻𐌷",
        "rcshowhideanons": "$1 𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰𐌹 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐍃",
-       "rcshowhideanons-show": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²𐌴𐌹",
+       "rcshowhideanons-show": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85𐌴𐌹",
        "rcshowhideanons-hide": "𐌰𐍆𐍆𐌹𐌻𐌷",
        "rcshowhidemine": "$1 𐌼𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃",
-       "rcshowhidemine-show": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²𐌴𐌹",
+       "rcshowhidemine-show": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85𐌴𐌹",
        "rcshowhidemine-hide": "𐌰𐍆𐍆𐌹𐌻𐌷",
        "rclinks": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍉𐍃 $1 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌽𐌹𐌽𐍃 𐌹𐌽 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐌰𐌹𐌼 $2 𐌳𐌰𐌲𐌰𐌼",
        "diff": "𐌼𐌹𐍃𐍃",
        "hist": "𐍃𐍀𐌹𐌻𐌻",
        "hide": "𐌰𐍆𐍆𐌹𐌻𐌷",
-       "show": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²𐌴𐌹",
+       "show": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85𐌴𐌹",
        "minoreditletter": "l",
        "newpageletter": "N",
        "boteditletter": "b",
+       "rc-change-size-new": "$1 {{PLURAL:$1|𐌱𐌰𐌾𐍄|𐌱𐌰𐌾𐍄𐌰}} 𐌰𐍆𐌰𐍂 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌰𐌹",
        "recentchangeslinked": "𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃",
        "recentchangeslinked-feed": "𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃",
        "recentchangeslinked-toolbox": "𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃",
        "recentchangeslinked-title": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌽𐍉𐍃 𐌼𐌹𐌸 \"$1\"",
        "recentchangeslinked-summary": "A𐌸𐌰𐍄𐌰 𐌹𐍃𐍄 𐍅𐌹𐌺𐍉 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉 𐌽𐌹𐌿𐌾𐌰𐌱𐌰 𐌲𐌰𐍄𐌰𐍅𐌹𐌳𐍉𐍃 𐌻𐌰𐌿𐌱𐌰𐌼 𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌹 𐍃𐌿𐌼𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰 (𐌸𐌰𐌿 𐌲𐌰𐌳𐌰𐌹𐌻𐌰𐌼 𐍃𐌿𐌼𐌹𐍃 𐌺𐌿𐌽𐌾𐌹𐍃). <strong>𐌻𐌰𐌿𐌱𐍉𐍃 𐌰𐌽𐌰 [[Special:Watchist|your]] 𐍃𐌹𐌽𐌳 </strong>𐍃𐍅𐌹𐌽𐌸𐌰𐌹.",
        "recentchangeslinked-page": "𐌻𐌰𐌿𐌱𐌰𐌽𐌰𐌼𐍉:",
-       "recentchangeslinked-to": "ð\90\8c°ð\90\8d\84ð\90\8c°ð\90\8c¿ð\90\8c²𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌻𐌰𐌿𐌱𐌴 𐌸𐌰𐌹𐌴𐌹 𐌲𐌰𐍅𐌹𐌳𐌰𐌽𐌰𐌹 𐌳𐌿 𐌲𐌹𐌱𐌰𐌽𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.",
-       "upload": "ð\90\8c¿ð\90\8d\83ð\90\8c·ð\90\8c»ð\90\8c°ð\90\8c¸ð\90\8c°ð\90\8c½ ð\90\8d\86ð\90\8c´ð\90\8c¹ð\90\8c»ð\90\8c°ð\90\8c½ð\90\8d\83",
+       "recentchangeslinked-to": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌻𐌰𐌿𐌱𐌴 𐌸𐌰𐌹𐌴𐌹 𐌲𐌰𐍅𐌹𐌳𐌰𐌽𐌰𐌹 𐌳𐌿 𐌲𐌹𐌱𐌰𐌽𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.",
+       "upload": "ð\90\8c°ð\90\8d\84ð\90\8c±ð\90\8c°ð\90\8c¹ð\90\8d\82 ð\90\8d\86ð\90\8c°ð\90\8c¾ð\90\8c»",
        "uploadbtn": "Ushlaþaiþ Feilans",
        "uploadlogpage": "Log af Ushlaþan",
        "filedesc": "𐌼𐌰𐌿𐍂𐌲𐌿𐍃 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐍃",
        "imgfile": "𐍆𐌰𐌴𐌹𐌻",
        "listfiles": "Feilans tala",
        "file-anchor-link": "𐍆𐌴𐌹𐌻𐌰𐌽𐍃",
-       "filehist": "ð\90\8d\86ð\90\8c´ð\90\8c¹ð\90\8c»ð\90\8c°ð\90\8c½ð\90\8d\83 ð\90\8c°ð\90\8c¹ð\90\8d\82ð\90\8c¹ð\90\8d\83",
+       "filehist": "ð\90\8d\86ð\90\8c°ð\90\8c¾ð\90\8c»ð\90\8c°ð\90\8d\83ð\90\8d\80ð\90\8c¹ð\90\8c»ð\90\8c»",
        "filehist-help": "𐌰𐍄𐍄𐌴𐌺 𐌳𐌰𐌲/𐌼𐌴𐌻 𐌳𐌿 𐌰𐍄𐌰𐌿𐌲𐌾𐌰𐌽 𐌳𐌰𐍄𐌰 𐍃𐍅𐌰𐍃𐍅𐌴 𐌲𐌰𐌱𐌰𐌹𐍂𐌷𐍄𐌹𐌳𐌰 𐌹𐌽 𐌸𐌰𐌼𐌼𐌰 𐌼𐌴𐌻𐌰.",
        "filehist-current": "𐌽𐌿",
        "filehist-datetime": "𐌼𐌴𐌻",
        "filehist-dimensions": "𐍅𐌰𐌷𐍃𐍄𐌿𐍃",
        "filehist-filesize": "Feilans wahstus",
        "filehist-comment": "𐍅𐌰𐌿𐍂𐌳",
-       "imagelinks": "ð\90\8c±ð\90\8d\82ð\90\8c¿ð\90\8cºð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8d\83 ð\90\8d\86ð\90\8c°ð\90\8c´ð\90\8c¹ð\90\8c»ð\90\8c´",
+       "imagelinks": "ð\90\8d\86ð\90\8c°ð\90\8c¾ð\90\8c»ð\90\8c°ð\90\8c±ð\90\8d\82ð\90\8c¿ð\90\8cºð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8d\83",
        "linkstoimage": "𐌰𐍆𐍄𐌿𐌼𐌰 {{PLURAL:$1|𐍃𐍉 𐍃𐌴𐌹𐌳𐍉 𐌻𐌴𐌹𐌽𐌺𐍉𐌸|𐌸𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌻𐌴𐌹𐌽𐌺𐍉𐌽𐌳}} 𐌸𐌹𐌶𐍉𐌶𐌿𐌷 𐍆𐌴𐌹𐌻𐍉𐍃",
        "sharedupload-desc-here": "𐍃𐍉 𐌳𐌰𐍄𐌰 𐌹𐍃𐍄 𐍆𐍂𐌰𐌼 $1 𐌾𐌰𐌷 𐌼𐌰𐌲 𐌱𐍂𐌿𐌺𐌾𐌰𐌳𐌰 𐍆𐍂𐌰𐌼 𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐍉𐌼.\n𐌲𐌰𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐍃 𐌰𐌽𐌰 𐍃𐌴𐌹𐌽𐌰𐌼𐌼𐌰 [$2 𐌳𐌰𐍄𐌰 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐌹𐌻𐌰𐌿𐌱𐌰] 𐌾𐌰𐌹𐌽𐌰𐍂 𐌰𐍄𐌰𐌿𐌲𐌹𐌸𐍃 𐌹𐍃𐍄 𐌿𐍆.",
+       "filepage-nofile": "𐍆𐌰𐌾𐌻 𐌼𐌹𐌸 𐌸𐌰𐌼𐌼𐌰 𐌽𐌰𐌼𐌹𐌽 𐌽𐌹𐍃𐍄.",
+       "upload-disallowed-here": "𐌽𐌹 𐌼𐌰𐌲𐍄 𐌿𐍆𐌰𐍂𐌼𐌴𐌻𐌾𐌰𐌽 𐌸𐌰𐍄𐌰 𐍆𐌰𐌾𐌻.",
        "filedelete-submit": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹",
        "mimesearch": "MIME 𐍃𐍉𐌺𐌴𐌹",
        "listredirects": "𐍄𐌰𐌻𐌰 𐌰𐍆 𐍄𐌰𐌹𐌺𐌾𐌰𐌽𐍃𐌴𐌹𐌳𐍉𐍃",
        "statistics": "𐍂𐌰𐌸𐌾𐍉𐌽𐍃",
        "brokenredirects-edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹",
        "brokenredirects-delete": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹",
-       "nbytes": "$1 {{PLURAL:$1|ð\90\8c±ð\90\8c¹ð\90\8d\84\90\8c±ð\90\8c°𐍄𐌰}}",
+       "nbytes": "$1 {{PLURAL:$1|ð\90\8c±ð\90\8c°ð\90\8c¾ð\90\8d\84\90\8c±ð\90\8c°ð\90\8c¾𐍄𐌰}}",
        "ncategories": "$1 {{PLURAL:$1|𐌺𐌿𐌽𐌹|𐌺𐌿𐌽𐌾𐌰}}",
        "nlinks": "$1 {{PLURAL:$1|𐌲𐌰𐍅𐌹𐍃𐍃|𐌲𐌰𐍅𐌹𐍃𐍃𐌴𐌹𐍃}}",
        "nmembers": "$1 {{PLURAL:$1|𐌲𐌰𐌳𐌰𐌹𐌻𐌰|𐌲𐌰𐌳𐌰𐌹𐌻𐌰𐌽𐍃}}",
        "undelete-search-submit": "𐍃𐍉𐌺𐌴𐌹",
        "namespace": "𐌽𐌰𐌼𐌰𐍂𐌿𐌼:",
        "invert": "𐌲𐌰𐍅𐌰𐌽𐌳𐌴𐌹 𐌸𐌰𐍄𐌰 𐌲𐌰𐍅𐌰𐌻𐌹𐌳𐍉",
-       "blanknamespace": "(ð\90\8d\86ð\90\8d\82ð\90\8c¿ð\90\8c¼ð\90\8c¹ð\90\8d\83ð\90\8d\84ð\90\8d\83)",
+       "blanknamespace": "(ð\90\8c·ð\90\8c°ð\90\8c¿ð\90\8c±ð\90\8c¹ð\90\8c¸)",
        "contributions": "𐌱𐌹𐌰𐌿𐌺𐌰𐌹𐌽𐌴𐌹𐍃 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐌹𐍃 {{{{GENDER:$1|User}}",
        "mycontris": "𐌱𐌹𐌰𐌿𐌺𐌰𐌹𐌽𐌴𐌹𐍃",
        "contribsub2": "𐍆𐌰𐌿𐍂 $1 ($2)",
        "sp-contributions-newbies-sub": "Faúr niujis niutandis",
        "sp-contributions-blocklog": "Logboka af afdraúsjan",
        "sp-contributions-talk": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰",
+       "sp-contributions-submit": "𐍃𐍉𐌺𐌴𐌹",
        "whatlinkshere": "𐌰𐌻𐌻𐌰𐌹 𐌻𐌰𐌿𐌱𐍉𐍃 𐌸𐌰𐌹𐌴𐌹 𐌱𐍂𐌹𐌲𐌲𐌰𐌽𐌳 𐌸𐌿𐌺 𐌷𐌹𐌳𐍂𐌴",
        "whatlinkshere-title": "𐌻𐌰𐌿𐌱𐍉𐍃 𐌸𐌰𐌹𐌴𐌹 𐍄𐌰𐌹𐌺𐌽𐌾𐌰𐌽𐌳 𐌳𐌿 \"$1\"",
        "whatlinkshere-page": "𐌻𐌰𐌿𐍆𐍃:",
        "tooltip-ca-move": "𐌼𐌹𐌸𐍃𐌰𐍄𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆",
        "tooltip-ca-watch": "𐌱𐌹𐌰𐌹𐌰𐌿𐌺 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆 𐌳𐌿 𐌸𐌴𐌹𐌽𐌰𐌹 𐍅𐌹𐍄𐌰𐍅𐌹𐌺𐍉𐌽",
        "tooltip-search": "𐍃𐍉𐌺𐌴𐌹 {{SITENAME}}",
-       "tooltip-search-go": "ð\90\8c¾ð\90\8c°ð\90\8c±ð\90\8c°ð\90\8c¹ ð\90\8c¹ð\90\8d\83ð\90\8d\84, ð\90\8c²ð\90\8c°ð\90\8c²ð\90\8c² ð\90\8c³ð\90\8c¿ ð\90\8c»ð\90\8c°ð\90\8c¿ð\90\8c±ð\90\8c° ð\90\8c¼ð\90\8c¹ð\90\8c¸ ð\90\8d\83ð\90\8c°ð\90\8c¼ð\90\8c¹ð\90\8c½ ð\90\8c½ð\90\8c°ð\90\8c¼ð\90\8c¹ð\90\8c½.",
+       "tooltip-search-go": "ð\90\8c²ð\90\8c°ð\90\8c²ð\90\8c² ð\90\8c³ð\90\8c¿ ð\90\8c»ð\90\8c°ð\90\8c¿ð\90\8c±ð\90\8c° ð\90\8c¼ð\90\8c¹ð\90\8c¸ ð\90\8c¸ð\90\8c°ð\90\8c¼ð\90\8c¼ð\90\8c° ð\90\8c²ð\90\8c°ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8cºð\90\8c°ð\90\8c¼ð\90\8c¼ð\90\8c° ð\90\8c½ð\90\8c°ð\90\8c¼ð\90\8c¹ð\90\8c½",
        "tooltip-search-fulltext": "𐍃𐍉𐌺𐌴𐌹 𐌻𐌰𐌿𐌱𐌰𐌽𐍃 𐌸𐌰𐌹𐌼 𐌱𐍉𐌺𐍉𐌼",
        "tooltip-p-logo": "𐌲𐌰𐍅𐌴𐌹𐍃 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌻𐌰𐌿𐌱𐌹𐍃",
        "tooltip-n-mainpage": "𐌲𐌰𐍅𐌴𐌹𐍃 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌻𐌰𐌿𐌱𐌹𐍃",
        "tooltip-t-recentchangeslinked": "𐌰𐌽𐌳𐍅𐌰𐌹𐍂𐌸𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌹𐌽 𐌻𐌰𐌿𐌱𐌰𐌼 𐌲𐌰𐍅𐌹𐌳𐌰𐌽𐌰𐌹𐌼 𐌰𐍆 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.",
        "tooltip-feed-atom": "𐌰𐍄𐍉𐌼 𐍆𐍉𐌳𐌴𐌹𐌽𐍃 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰",
        "tooltip-t-contributions": "𐍅𐌹𐌺𐍉 𐌱𐌹𐌰𐌿𐌺𐌰𐌹𐌽𐌴 𐍆𐍂𐌰𐌼 {{GENDER:$1|𐌸𐌰𐌼𐌼𐌰 𐌱𐍂𐌿𐌺𐌾𐌹𐌽}}",
-       "tooltip-t-upload": "ð\90\8c¿ð\90\8d\83ð\90\8c·ð\90\8c»ð\90\8c°ð\90\8c¸ð\90\8c°ð\90\8c½ ð\90\8d\86ð\90\8c´ð\90\8c¹ð\90\8c»ð\90\8c°ð\90\8c½ð\90\8d\83",
+       "tooltip-t-upload": "ð\90\8c°ð\90\8d\84ð\90\8c±ð\90\8c°ð\90\8c¹ð\90\8d\82 ð\90\8d\86ð\90\8c°ð\90\8c¾ð\90\8c»ð\90\8c°",
        "tooltip-t-specialpages": "𐍅𐌹𐌺𐍉 𐌰𐌻𐌻𐌰𐌹𐌶𐌴 𐌿𐍃𐍃𐌹𐌽𐌳𐌰𐌹𐌶𐌴 𐌻𐌰𐌿𐌱𐌴",
        "tooltip-t-print": "𐌿𐍃𐌼𐌴𐍂𐌴𐌹𐌽𐍃 𐌸𐌹𐍃 𐌻𐌰𐌿𐌱𐌹𐍃 𐌳𐌿 𐌿𐍃𐌼𐌴𐌻𐌾𐌰𐌽",
        "tooltip-t-permalink": "𐌰𐌹𐍅𐌴𐌹𐌽𐌰 𐌲𐌰𐍅𐌹𐍃𐍃 𐌳𐌿 𐌸𐌹𐌶𐌰𐌹 𐌰𐍆𐍄𐍂𐌰𐍃𐌹𐌿𐌽𐌰𐌹 𐌸𐌹𐍃 𐌻𐌰𐌿𐌱𐌹𐍃",
        "tooltip-ca-nstab-user": "𐍃𐌰𐌹𐍈 𐌱𐍂𐌿𐌺𐌾𐌰𐌻𐌰𐌿𐍆",
        "tooltip-ca-nstab-special": "𐍃𐌰 𐌹𐍃𐍄 𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃 𐌾𐌰𐌷 𐌽𐌹 𐌼𐌰𐌲 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌳𐌰.",
        "tooltip-ca-nstab-project": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆",
-       "tooltip-ca-nstab-image": "ð\90\8d\83ð\90\8c°ð\90\8c¹ð\90\8d\88 ð\90\8d\86ð\90\8c°ð\90\8c´ð\90\8c¹𐌻𐌰𐌻𐌰𐌿𐍆",
+       "tooltip-ca-nstab-image": "ð\90\8c±ð\90\8c°ð\90\8c½ð\90\8c³ð\90\8d\85ð\90\8c´ð\90\8c¹ ð\90\8d\86ð\90\8c°ð\90\8c¾𐌻𐌰𐌻𐌰𐌿𐍆",
        "tooltip-ca-nstab-template": "𐍃𐌰𐌹𐍈 𐍆𐌰𐌿𐍂𐌰𐌼𐌴𐌻𐌴𐌹𐌽",
        "tooltip-ca-nstab-category": "𐍃𐌰𐌹𐍈 𐌺𐌿𐌽𐌾𐌰𐌻𐌰𐌿𐍆",
        "tooltip-save": "𐌲𐌰𐍆𐌰𐍃𐍄 𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃",
        "tooltip-preview": "𐍆𐌰𐌿𐍂𐌰𐍃𐌰𐌹𐍈 𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃. 𐌱𐌹𐌳𐌾𐌰𐌼 𐌸𐌿𐌺, 𐌱𐍂𐌿𐌺𐌴𐌹 𐌸𐌹𐍃 𐌸𐌰𐍄𐌰 𐍆𐍂𐌿𐌼𐌹𐍃𐍄 𐍆𐌰𐌿𐍂𐌸𐌹𐌶𐌴𐌹 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌹𐍃.",
-       "tooltip-diff": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐍈𐌹𐌻𐌴𐌹𐌺𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃 𐌲𐌰𐍄𐌰𐍅𐌹𐌳𐌴𐍃 𐌳𐌿 𐌸𐌰𐌹𐌼 𐌱𐍉𐌺𐍉𐌼",
+       "tooltip-diff": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹 𐍈𐌹𐌻𐌴𐌹𐌺𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃 𐌲𐌰𐍄𐌰𐍅𐌹𐌳𐌴𐍃 𐌳𐌿 𐌸𐌰𐌹𐌼 𐌱𐍉𐌺𐍉𐌼",
+       "tooltip-watch": "𐌱𐌹𐌰𐌹𐌰𐌿𐌺 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆 𐌳𐌿 𐌸𐌴𐌹𐌽𐌰𐌹 𐍅𐌹𐍄𐌰𐍅𐌹𐌺𐍉𐌽",
        "tooltip-rollback": "\"𐌰𐍆𐍅𐌰𐌻𐍅𐌴𐌹\" 𐌲𐌰𐌽𐌰𐍃𐌾𐌹𐌸 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽(𐍉𐍃) 𐌳𐌿 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐌹𐍃 𐌱𐌹𐌰𐌿𐌺𐌰𐌽𐌳𐌹𐍃/𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐌰𐌹𐌶𐍉𐍃 𐌱𐌹𐌰𐌿𐌺𐌰𐌽𐌳𐌾𐍉𐍃 𐌹𐌽 𐌰𐌹𐌽𐌰𐌼𐌼𐌰 𐍃𐌹𐌽𐌸𐌰",
        "tooltip-undo": "\"𐌽𐌹𐌿𐍃𐌺𐌰𐍀𐌾𐌰𐌽\" 𐌱𐌰𐌺𐌼𐌰𐌹𐌳𐌾𐌹𐌸 𐌹𐌽𐌼𐌰𐌹𐌳𐌲𐌴𐌹𐌽𐍃 𐌾𐌰𐌷 𐌿𐍃𐌻𐌿𐌺𐍉𐌸 𐌼𐌰𐌹𐌳𐌾𐌰𐍆𐍉𐍂𐌼𐍉𐌽 𐍃𐍅𐌴 𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰 𐌷𐌹𐍅𐌾𐌰. 𐌸𐌰𐍄𐌰 𐌻𐌴𐍄 𐌰𐌽𐌰𐌿𐌺𐌰𐌽𐌰𐌽 𐍃𐌰𐌿𐌸𐌰 𐌹𐌽 𐌹𐌽𐌽𐌰𐌷𐌰𐌻𐌳𐌰𐌰𐌽𐌲𐌰𐌱𐌰.",
        "tooltip-summary": "𐌰𐍄𐌲𐌰𐌲𐌲𐌹𐍃 𐌹𐌽𐌽𐌰𐌷𐌰𐌻𐌳𐌰𐌰𐌽𐌲𐌰𐌱𐌰 𐌼𐌰𐌿𐍂𐌲𐌾𐌰",
+       "pageinfo-header-edits": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐍃𐍀𐌹𐌻𐌻",
+       "pageinfo-robot-index": "𐌰𐌽𐌳𐌻𐌴𐍄𐌰𐌽",
+       "pageinfo-firstuser": "𐌻𐌰𐌿𐌱𐌰𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐍃",
+       "pageinfo-lastuser": "𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃",
+       "pageinfo-recent-edits": "𐌰𐌽𐌳𐍅𐌰𐌹𐍂𐌸𐌰 𐍂𐌰𐌸𐌾𐍉 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉 (𐌹𐌽 $1)",
+       "pageinfo-recent-authors": "𐌰𐌽𐌳𐍅𐌰𐌹𐍂𐌸𐌰 𐍂𐌰𐌸𐌾𐍉 𐌼𐌹𐍃𐍃𐌰𐌻𐌴𐌹𐌺𐌰𐌹𐌶𐌴 𐌼𐌴𐌻𐌾𐌰𐌽𐌳𐌴",
+       "pageinfo-magic-words": "{{PLURAL:$1|𐌻𐌿𐌱𐌾𐌰𐌻𐌴𐌹𐍃|𐌻𐌿𐌱𐌾𐌰𐌻𐌴𐌹𐍃𐌰}} {{PLURAL:$1|𐍅𐌰𐌿𐍂𐌳|𐍅𐌰𐌿𐍂𐌳𐌰}} ($1)",
        "pageinfo-toolboxlink": "𐌺𐌿𐌽𐌸𐌹 𐌻𐌰𐌿𐌱𐌹𐍃",
+       "pageinfo-contentpage-yes": "𐌾𐌰𐌹",
        "previousdiff": "← 𐍆𐌰𐌹𐍂𐌽𐌹𐌶𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃",
        "nextdiff": "𐌽𐌹𐌿𐌾𐌹𐌶𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃 →",
        "file-info-size": "$1 × $2 𐍀𐌹𐌺𐍃𐌴𐌻𐌰, 𐍆𐌴𐌹𐌻𐍅𐌰𐌷𐍃𐍄𐌿𐍃: $3, 𐌼𐌹𐌼𐌴 𐌺𐌿𐌽𐌹: $4",
-       "show-big-image": "ð\90\8d\86ð\90\8d\82ð\90\8c¿ð\90\8c¼ð\90\8c¹ð\90\8d\83ð\90\8d\84 ð\90\8d\86ð\90\8c°ð\90\8c´ð\90\8c¹𐌻",
+       "show-big-image": "ð\90\8d\86ð\90\8d\82ð\90\8c¿ð\90\8c¼ð\90\8c¹ð\90\8d\83ð\90\8d\84 ð\90\8d\86ð\90\8c°ð\90\8c¾𐌻",
        "show-big-image-preview": "𐌼𐌹𐌺𐌹𐌻𐌴𐌹 𐌸𐌹𐌶𐍉𐍃 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽𐌰𐌹𐍃: $1.",
        "show-big-image-size": "$1 × $2 𐍆𐍂𐌹𐍃𐌰𐌷𐍄𐌹𐍃𐍄𐌰𐌱𐌴𐌹𐍃",
        "ilsubmit": "𐍃𐍉𐌺𐌴𐌹",
        "namespacesall": "𐌰𐌻𐌻",
        "monthsall": "𐌰𐌻𐌻",
        "imgmultigo": "𐌲𐌰𐌲𐌲!",
+       "imgmultigoto": "𐌲𐌰𐌲𐌲 𐌳𐌿 𐌻𐌰𐌿𐌱𐌰 $1",
        "table_pager_limit_submit": "Affgaggan",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰]])",
        "version-other": "Anþar",
        "version-poweredby-translators": "translatewiki.net 𐌲𐌰𐍃𐌺𐌴𐌹𐍂𐌾𐌰𐌽𐍃",
+       "redirect-submit": "𐌲𐌰𐌲𐌲",
+       "redirect-value": "𐍅𐌰𐌹𐍂𐌸:",
+       "redirect-revision": "𐌰𐍆𐍄𐍂𐌰𐍃𐌹𐌿𐌽𐍃 𐌻𐌰𐌿𐌱𐌹𐍃",
+       "redirect-file": "𐍆𐌰𐌾𐌻𐌰𐌽𐌰𐌼𐍉",
        "specialpages": "𐌿𐍃𐍃𐌹𐌽𐌳𐌰𐌹 𐌻𐌰𐌿𐌱𐍉𐍃",
        "tag-filter": "[[Special:Tags|𐍄𐌰𐌹𐌺𐌽𐍉𐍃]] 𐍆𐌹𐌻𐌷𐌰",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|𐍃𐍉𐌺𐌴𐌹𐌽𐌹𐍅𐌰𐌿𐍂𐌳|𐍃𐍉𐌺𐌴𐌹𐌽𐌹𐍅𐌰𐌿𐍂𐌳𐌰}}]]: $2)",
        "logentry-move-move": "$1 {{GENDER:$2|𐌼𐌹𐌸𐍃𐌰𐍄𐌹𐌳𐌰}} 𐌻𐌰𐌿𐍆 $3 𐌳𐌿 $4",
        "logentry-newusers-create": "𐌱𐍂𐌿𐌺𐌾𐌰𐌺𐌰𐍅𐍄𐍃𐌾𐍉 $1 𐍅𐌰𐍃 {{{{GENDER:$2|𐌲𐌰𐍃𐌺𐌰𐍀𐌰𐌽𐌰}}",
        "rightsnone": "(𐌽𐌹)",
-       "searchsuggest-search": "𐍃𐍉𐌺𐌴𐌹"
+       "searchsuggest-search": "𐍃𐍉𐌺𐌴𐌹",
+       "duration-days": "$1 {{PLURAL:$1|𐌳𐌰𐌲𐍃|𐌳𐌰𐌲𐍉𐍃}}"
 }
index 27758c3..6a15951 100644 (file)
        "pool-timeout": "સમય સમાપ્ત -  સ્થગિતતા પ્રતિક્ષીત",
        "pool-queuefull": "(Pool) કતાર પૂરી ભરેલી છે",
        "pool-errorunknown": "અજ્ઞાત ત્રુટિ",
+       "pool-servererror": "પૂલ કાઉન્ટર સેવા ઉપલબ્ધ નથી ($1)",
        "poolcounter-usage-error": "વપરાશ ક્ષતિ: $1",
        "aboutsite": "{{SITENAME}} વિષે",
        "aboutpage": "Project:વિષે",
        "laggedslavemode": "\"ચેતવણી:\" પાનું તાજેતરના ફેરફાર ધરાવતું નથી.",
        "readonly": "ડેટાબેઝ સ્થગિત",
        "enterlockreason": "સ્થગિતતા ક્યારે દુર કરાશે તેના અંદાજ શાથે,સ્થગિત કરવાનું કારણ આપો",
-       "readonlytext": "નવી નોંધો અને ફેરફારો માટે ડેટાબેઝ હાલમાં સ્થગિત કરાયેલ છે,કદાચ નિયમિત ડેટાબેઝ સારસંભાળ માટે,તે પછી આ ફરી સામાન્ય થશે.\n\nસ્થગિત કરનાર પ્રબંધકનો ખુલાસો: $1",
+       "readonlytext": "નવી નોંધો અને ફેરફારો માટે ડેટાબેઝ હાલમાં સ્થગિત કરાયેલ છે,કદાચ નિયમિત ડેટાબેઝ સારસંભાળ માટે,તે પછી આ ફરી સામાન્ય થશે.\n\n\nસિસ્ટમ સંચાલક જેણે તેને લૉક કર્યું છે, તે આ સમજૂતી આપે છે: $1",
        "missing-article": "ડેટાબેઝને પાનાનાં જે શબ્દો (\"$1\" $2) મળવા જોઈતા હતા તે મળ્યા નથી.\n\nઆવું સામાન્ય રીતે ત્યારે બને જ્યારે તમે તફાવત કે ઈતિહાસની એવી જુની કડીને અનુસરીને અહીં આવ્યા હોવ કે જે પાનું હટાવી દીધું હોય.\n\nજો તમને ખાતરી છે કે આવું નથી, તો તમારા ભાગે સોફ્ટવેરમાં રહેલી ત્રુટી આવી છે.\nકૃપા કરી આ વાત, જે તે પાનાની પૂર્ણ યુ.આર.એલ. (URL) કડી સાથે, તમારા [[Special:ListUsers/sysop|પ્રબંધક]]ના ધ્યાન પર લાવો.",
        "missingarticle-rev": "(પુનરાવર્તન#: $1)",
        "missingarticle-diff": "(ભેદ: $1, $2)",
        "readonly_lag": "કનિષ્ઠ માહિતીસંચ સર્વરો મુખ્ય સર્વર સુધી પહોંચી ત્યા સુધી આ માહિતીસંચ પર સ્વયંચલિત રીતે તાળું મરાયું છે",
        "internalerror": "આંતરિક ત્રુટિ",
        "internalerror_info": "આંતરિક ત્રુટિ: $1",
+       "internalerror-fatal-exception": "\"$1\" પ્રકારનો ઘાતક અપવાદ",
        "filecopyerror": "\"$1\" થી \"$2\"માં નકલ નિષ્ફળ.",
        "filerenameerror": "\"$1\" નું નામ બદલીને \"$2\" કરવામાં નિષ્ફળ.",
        "filedeleteerror": "\"$1\" ફાઇલ હટાવી ન શકાઇ.",
index b4f87e5..fe7c191 100644 (file)
        "sp-contributions-newonly": "הצגת עריכות שהן יצירות של דפים בלבד",
        "sp-contributions-hideminor": "הסתרת עריכות משניות",
        "sp-contributions-submit": "חיפוש",
+       "sp-contributions-outofrange": "לא ניתן להציג תוצאות. טווח ה־IP המבוקש גדול יותר ממגבלת ה־CIDR, שהיא /$1.",
        "whatlinkshere": "דפים המקושרים לכאן",
        "whatlinkshere-title": "דפים המקשרים לדף \"$1\"",
        "whatlinkshere-page": "דף:",
index 2857f4a..243da8f 100644 (file)
        "autosumm-new": "Stvorena nova stranica sa sadržajem: »$1«.",
        "autosumm-newblank": "Stvorena prazna stranica.",
        "size-bytes": "$1 {{PLURAL:$1|bajt|bajta|bajtova}}",
-       "lag-warn-normal": "Moguće je da izmjene nastale posljednjih $1 {{PLURAL:$1|sekundu|sekundi}} neće biti vidljive na ovom popisu.",
-       "lag-warn-high": "Zbog kašnjenja baze podataka, moguće je da promjene napravljene u posljednjih $1 {{PLURAL:$1|sekundu|sekunde|sekundi}} nisu prikazane u popisu.",
+       "lag-warn-normal": "Promjene načinjene prije manje od $1 {{PLURAL:$1|sekunde|sekundi}} možda ne će biti prikazane na ovom popisu.",
+       "lag-warn-high": "Zbog preopterećenosti poslužitelja na kom je baza podataka, izmjene novije od $1 {{PLURAL:$1|sekunde|sekundi}} možda ne će biti prikazane na ovom popisu.",
        "watchlistedit-normal-title": "Uredi popis praćenja",
        "watchlistedit-normal-legend": "Ukloni stranice iz popisa praćenja",
        "watchlistedit-normal-explain": "Prikazane su stranice na Vašem popisu praćenja.\nDa uklonite stranicu s popisa praćenja, označite kućicu kraj nje i kliknite gumb \"{{int:Watchlistedit-normal-submit}}\".\nMožete također [[Special:EditWatchlist/raw|uređivati ovaj popis u okviru za uređivanje]].",
index 6ab149a..fdfe56b 100644 (file)
        "seconds": "{{PLURAL:$1|egy|$1}} másodperccel",
        "minutes": "{{PLURAL:$1|egy|$1}} perccel",
        "hours": "{{PLURAL:$1|egy|$1}} órával",
-       "days": "{{PLURAL:$1|egy|$1}} nappal",
+       "days": "$1 nappal",
        "weeks": "{{PLURAL:$1|$1 hét|$1 hét}}",
        "months": "{{PLURAL:$1|$1 hónap|$1 hónap}}",
        "years": "{{PLURAL:$1|$1 év|$1 év}}",
index 6d7992b..955aa00 100644 (file)
        "pageinfo-hidden-categories": "{{PLURAL:$1|Categoria nascosta|Categorie nascoste}} ($1)",
        "pageinfo-templates": "Template {{PLURAL:$1|incluso|inclusi}} ($1)",
        "pageinfo-transclusions": "{{PLURAL:$1|Pagina|Pagine}} in cui è incluso ($1)",
-       "pageinfo-toolboxlink": "Informazioni sulla pagina",
+       "pageinfo-toolboxlink": "Informazioni pagina",
        "pageinfo-redirectsto": "Reindirizza a",
        "pageinfo-redirectsto-info": "info",
        "pageinfo-contentpage": "Conteggiata come una pagina di contenuto",
index f4e291f..361d5d5 100644 (file)
@@ -16,7 +16,9 @@
                        "Macofe",
                        "Matma Rex",
                        "Belkacem77",
-                       "Mhenni"
+                       "Mhenni",
+                       "Slimane AMIRI",
+                       "SlimaneAmiri"
                ]
        },
        "tog-underline": "Aderrer n iseɣwan:",
@@ -63,8 +65,8 @@
        "tog-norollbackdiff": "Ur skan  ara amgired seld aḥway",
        "tog-useeditwarning": "Σeggen iyid mi ara fγaγ seg usebter mebla ma skeslaγ ibeddilen.",
        "tog-prefershttps": "Seqdac yal tikelt tuqqna taɣelsant akken ad teqqneḍ",
-       "underline-always": "Daymen",
-       "underline-never": "Abaden",
+       "underline-always": "Yal tikelt",
+       "underline-never": "Werǧin",
        "underline-default": "Azal s lexṣas n iminig neɣ n usentel",
        "editfont-style": "Aɣanib n tasefsit n taɣzut ubeqqeḍ :",
        "editfont-default": "Tasefsit n iminig s lexṣas",
        "viewyourtext": "Tzemṛeḍ ad ẓṛeḍ dɣa ad nɣeleḍ agbur n \"ibeddlen inek/inem\" deg usebter agi :",
        "protectedinterface": "Asebter-agi d amsekker axaṭer yettuseqdac i weḍris n software.",
        "editinginterface": "<strong>Ɣuṛ-k:</strong> Aqla-k tettbeddileḍ asebter yettuseqdacen i tmerna n uḍris n ugrudem n useɣẓan. \nIbeddilen ɣef usebter-agi ad ḥazen udem n ugrudem n useqdac i yiseqdacen-nniḍen n uwiki.",
+       "translateinterface": "Akken ad ternuḍ neɣ ad tbeddleḍ tisuqilin i yiwikiyen meṛṛa, seqdec [https://translatewiki.net/ translatewiki.net], asenfaṛ n usideg utlayan n MediaWiki.",
        "cascadeprotected": "Asebter-agi yettwammesten mgal abeddel acku yedda deh {{PLURAL:$1|usebter d-iteddun yettwammestnen|isebtar-agi d-itedduun yettwammestnen}} s usefran \"ammesten s udabdar\" urmid:\n$2",
        "namespaceprotected": "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ isebtar n tallunt n isemawen \"'''$1'''\".",
        "customcssprotected": "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n CSS, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.",
        "mypreferencesprotected": "Ur tesɛiḍ ara turagt ad beddeleḍ iɣewwaren inek(em).",
        "ns-specialprotected": "Ur t-zemred ara ad beddeleḍ isebtar usligen",
        "titleprotected": "Azwel agi yegdel deg usnulfu ɣef [[User:$1|$1]].\nTaɣẓint id yenna : <em>$2</em>",
-       "filereadonlyerror": "Ulamek an beddel afaylu « $1 » acku akaram n ifuyla « $2 » yella deg taɣuri kan.\n\nAnedbal i tid sekkweṛen yefkad taɣẓint agi : « $3 ».",
+       "filereadonlyerror": "Ulamek ad nbeddel afaylu \"$1\" acku akaram n ifuyla \"$2\" yella deg uskar n tɣuri kan.\n\nAnedbal n unagraw i t-isekkweṛen, yefka-d asegzi-agi : \"$3\".",
        "invalidtitle-knownnamespace": "Azwel ur i ɣbel ara s tallunt n isemawen « $2 » dɣa d-uglam « $3 »",
        "invalidtitle-unknownnamespace": "Azwel ur i ɣbel ara s uṭṭun n tallunt n isemawen $1 dɣa d-uglam « $2 » warisem",
        "exception-nologin": "Ur tekcimeḍ ara",
-       "exception-nologin-text": "Ilaq ad [[Special:Userlogin|qqeneḍ]] iwakken ad kecmeḍ ar usebtar neɣ tawuri agi.",
+       "exception-nologin-text": "Qqen akken ad tizmireḍ ad tkecmeḍ ar usebter-agineɣ tigawt-agi.",
        "exception-nologin-text-manual": "$1 iwakken ad kecmeḍ ar asebtar neɣ tigawt agi.",
        "virus-badscanner": "Yir tawila : anafraḍ n infafaden warisem : ''$1''",
        "virus-scanfailed": "Abrir n unadi (tangalt $1)",
        "virus-unknownscanner": "amgelanfafad warisem :",
        "logouttext": "'''Tura tesensereḍ.'''\n\nKra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ tazarkatut.",
        "cannotlogoutnow-title": "Ur tezmireḍ ara ad teffɣeḍ tura",
+       "cannotlogoutnow-text": "Tuffɣa d tawezɣit ticki tseqdaceḍ $1.",
        "welcomeuser": "Anṣuf, $1 !",
        "welcomecreation-msg": "Amian inek(em) yesnulfad.\nTzemreḍ ad beddeleḍ {{SITENAME}} [[Special:Preferences|ismenyifen]] inek(em) ma tebɣiḍ.",
        "yourname": "Isem n wemseqdac",
        "cannotloginnow-title": "Ur izmir ara ad yeqqen tura",
        "cannotloginnow-text": "Tuqqna d tawezɣit ticki tseqdaceḍ $1.",
        "cannotcreateaccount-title": "Ur izmir ara ad yernu imiḍanen",
+       "cannotcreateaccount-text": "Timerna srid n imiḍanen n iseqdacen ur termid ara ɣef uwiki-agi.",
        "yourdomainname": "Taɣult inek",
        "password-change-forbidden": "Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi ɣef uwiki agi.",
        "externaldberror": "Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.",
        "user-mail-no-addy": "Ɛred ad icegaɛ e-mail war tansa e-mail",
        "user-mail-no-body": "Arram n uceggaɛ email s tafekka tilemt neɣ d-awezlan aṭas.",
        "changepassword": "Beddel awal n tbaḍnit",
-       "resetpass_announce": "Tkecmeḍ s ungal yettwazen-ak s e-mail (ungal-nni qrib yemmut). Iwekken tkemmleḍ, yessefk ad textareḍ awal n tbaḍnit amaynut dagi:",
+       "resetpass_announce": "Akken ad tfakeḍ ajerred-ik, yessefk ad tmuddeḍ awal uffir amaynut.",
        "resetpass_text": "<!-- Rnu aḍris dagi -->",
        "resetpass_header": "Beddel awal n uɛassi n umiḍan",
        "oldpassword": "Awal n tbaḍnit aqdim:",
        "newpassword": "Awal n tbaḍnit amaynut:",
        "retypenew": "Ɛiwed ssekcem n tbaḍnit amaynut:",
        "resetpass_submit": "Eg awal n tbaḍnit u kcem",
-       "changepassword-success": "Awal n uɛaddi yettubeddel s lerbaḥ !",
+       "changepassword-success": "Awal-ik uffir ibeddel!",
        "changepassword-throttled": "Tɛerdeḍ ad qqeneḍ aṭas tiqwal deg dqiqat agi iɛddan.\nIlaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.",
        "botpasswords": "Iwalen uffiren n iṛubuten",
        "botpasswords-disabled": "Awalen uffiren n iṛubuten nsan.",
        "botpasswords-deleted-body": "Awal uffir n uṛubut \"$1\" n useqdac \"$2\" yettwakkes.",
        "botpasswords-no-provider": "Asaǧǧaw n tɣimit n wawal uffir n iṛubuten ulac-it.",
        "resetpass_forbidden": "Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi",
+       "resetpass_forbidden-reason": "Ur tezmireḍ ara ad tẓergeḍ awal uffir : $1",
        "resetpass-no-info": "Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.",
        "resetpass-submit-loggedin": "Beddel awal n uɛaddi",
        "resetpass-submit-cancel": "Semmewet",
-       "resetpass-wrong-oldpass": "Awal n uɛaddi ur i seɣbel ara.\nAhat ilaq ad beddeleḍ awal ik/im n uɛaddi naɣ ad ssutereḍ awal n uɛaddi amaynut.",
+       "resetpass-wrong-oldpass": "Awal uffir d askudan neɣ amira mačči d ameɣtu.\nAhat tbeddleḍ yakanawal-ik uffir neɣ tsutreḍ-d askudan-nniḍen.",
        "resetpass-temp-password": "Awal n uɛaddi amakud",
        "resetpass-abort-generic": "Asiɣzef yesemmewet abeddel n uwal n uɛaddi.",
        "passwordreset": "Awennez tikkelt nniḍen n awal uɛaddi",
        "passwordreset-emailtext-user": "Aseqdac $1 ɣef {{SITENAME}} yessutered awennez n awal n uɛaddi i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yeqqen|imiḍanen n iseqdacen agi qqenen}} s tansa e-mail agi :\n\n$2\n\n{{PLURAL:$3|Awal n uɛaddi uɛḍil agi ad i aff tasewti-s|Awalen n uɛaddi uɛḍilen agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.",
        "passwordreset-emailelement": "Isem n useqdac : \n$1\n\nAwal n uɛddi akudan : \n$2",
        "passwordreset-emailsentemail": "Tirawt n uwennez n awal n uɛaddi tetwaceggaɛ.",
-       "changeemail": "Beddel tansa n e-mail",
+       "passwordreset-invalidemail": "Tansa imayl d tarameɣtut",
+       "changeemail": "Beddel neɣ kkes tansa n imayl",
        "changeemail-header": "Beddel tansa n e-mail n umiḍan",
        "changeemail-no-info": "Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.",
        "changeemail-oldemail": "Tansa e-mail n tura :",
        "changeemail-password": "Awal-ik/im n uɛaddi ɣef {{SITENAME}} :",
        "changeemail-submit": "Beddel tansa e-mail",
        "changeemail-throttled": "Tɛerdeḍ ad qqeneḍ aṭas tiqwal.\nIlaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.",
+       "changeemail-nochange": "Ttxilek sekcem tansa i imayl nniḍen.",
        "resettokens": "Wennez tiddas",
        "resettokens-text": "D-agi tzemreḍ ad twennezeḍ tiddas i ɛemmeden ad kecmeḍ ar isefka usligen i qqenen ar amiḍan inek/inem.\n\nIlaq ad twennezeḍ tiddas ma tferqeḍ-ten s tuccḍa s umseqdac nniḍen neɣ ma amiḍan inek/inem yexṣer.",
        "resettokens-no-tokens": "Ulac tiddas an wennez.",
        "edit-gone-missing": "Ur yezmer ara ad yemucceḍ asebter agi.\nAhat yetwemḥa.",
        "edit-conflict": "Amgirred n ubeddel.",
        "edit-no-change": "Abeddel inek/inem ur yetwexdam ara acku ur di ban ara abeddel deg uḍris.",
+       "postedit-confirmation-created": "Asebter ittwarna.",
+       "postedit-confirmation-restored": "Asebter yuɣal-d.",
        "postedit-confirmation-saved": "Abeddel inek/inem yetwakles.",
        "edit-already-exists": "Asebter amaynut ur d yesnufu ara.\nYella yakan.",
        "defaultmessagetext": "Izen s lexṣas",
        "revdelete-legend": "Sbebd akref n tamuɣli",
        "revdelete-hide-text": "Aḍris n tacaggart",
        "revdelete-hide-image": "Ffer ayen yellan deg ufaylu",
-       "revdelete-hide-name": "Ffer tigawt d nnican",
+       "revdelete-hide-name": "Ffer iberdan d iɣewwaṛen",
        "revdelete-hide-comment": "Beddel agzul",
        "revdelete-hide-user": "Isem n umseqdac/Tansa IP n umaẓrag",
        "revdelete-hide-restricted": "Mḥu isefka agi i inedbalen d yimdanen wiyaḍ",
        "mergehistory-empty": "Ulac lqem i nezmer an zdi.",
        "mergehistory-done": "$3 {{PLURAL:$3|lqem|ileqman}} n $1 {{PLURAL:$3|yezdukel|zdukelen}} deg [[:$2]].",
        "mergehistory-fail": "Ulamek an zdukel imezruyen. Fru tikkelt nniḍen asebter d iɣewwaren is n uzmez.",
+       "mergehistory-fail-invalid-source": "Asebter aɣbalu d arameɣtu.",
        "mergehistory-no-source": "Azar n usebter $1 ulac-it.",
        "mergehistory-no-destination": "Aserken n usebter $1 ulac-it",
        "mergehistory-invalid-source": "Azar n usebter ilaq ad i sɛu azwel i ɣbelen.",
        "unwatchthispage": "Fakk aɛassi",
        "notanarticle": "Mačči d amagrad",
        "notvisiblerev": "Lqem tetwemḥa",
-       "watchlist-details": "{{PLURAL:$1|$1 n usebter|$1 n isebtar}} di tebdart-ik n uḍfaṛ, war ma tseddaḍ isebtar n usqerdec.",
+       "watchlist-details": "{{PLURAL:$1|$1 n usebter|$1 n isebtar}} di tebdart-ik n uḍfaṛ (akked isebtar n usqerdec).",
        "wlheader-enotif": "Talɣut s email yessermed.",
        "wlheader-showupdated": "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s uḍris '''aberbuz'''.",
        "wlnote": "Ddaw-a{{PLURAL:$1|ad twaliḍ abeddel aneggaru yettwagen|ad twaliḍ <strong>$1</strong> n ibeddilen ineggura yettwagen}} deg {{PLURAL:$2| usrag aneggaru|di <strong>$2</strong> n yisragen ineggura}}, arama d $3, $4.",
        "wlshowlast": "Sken wid n $1 n isragen ineggura, wid n $2 n wussan ineggura",
        "watchlist-hide": "Ffer",
        "watchlist-submit": "Sken",
+       "wlshowhideliu": "Iseqdacen yettwajerden",
        "watchlist-options": "Iɣewwaṛen n tebdart n uḍfaṛ",
        "watching": "Ad iɛass...",
        "unwatching": "Ad ifukk aɛessi...",
        "deletepage": "Mḥu asebter",
        "confirm": "Sentem",
        "excontent": "Ayen yella: '$1'",
-       "excontentauthor": "Ayen yella: '$1' ('[[Special:Contributions/$2|$2]]' kan i yekken deg-s)",
+       "excontentauthor": "yegber : \"$1\", udiɣ immttekki-ines d \"[[Special:Ittekkiyen/$2|$2]]\" ([[User talk:$2|asqerdec]])",
        "exbeforeblank": "Ayen yella uqbal ma yettumḥa: '$1'",
        "delete-confirm": "Kkes \"$1\"",
        "delete-legend": "Ekkes",
        "mycontris": "Ittekkiyen",
        "anoncontribs": "Ittekkiyen",
        "contribsub2": "I {{GENDER:$3|$1}} ($2)",
+       "contributions-userdoesnotexist": "Amiḍan n useqdac \"$1\" ur yettwasekles ara.",
        "nocontribs": "Ur yufi ara abddel i tebɣiḍ.",
        "uctop": "(amiran)",
        "month": "Seg uggur (d wid uqbel) :",
        "sp-contributions-newbies-sub": "I yisem yimseqdacen imaynuten",
        "sp-contributions-newbies-title": "Ittekkiyen n imseqdacen gar imiḍanen imaynuten",
        "sp-contributions-blocklog": "Aɣmis n uɛeṭṭil",
+       "sp-contributions-suppresslog": "Attekki n {{GENDER:$1|useqdac|taseqdact}} yettwakkes",
        "sp-contributions-deleted": "isekcam yemḥan",
        "sp-contributions-uploads": "izdamen",
        "sp-contributions-logs": "iɣmisen",
        "sp-contributions-talk": "Mmeslay",
-       "sp-contributions-userrights": "Laɛej iserfan n umseqdac",
+       "sp-contributions-userrights": "sefrek izerfan n {{GENDER:$1|useqdac}}",
        "sp-contributions-blocked-notice": "Aseqdac agi yekyef.\nAsekcem aneggaru n useklas n ikyafen yella ddaw agi :",
        "sp-contributions-blocked-notice-anon": "Tansa IP agi tekyef.\nAsekcem aneggaru n useklas n ikyafen yella ddaw agi :",
        "sp-contributions-search": "Nadi i tikkin",
        "autoblockid": "Asewḥel awurman #$1",
        "block": "Ɛekkel aseqdac",
        "unblock": "Aksasewḥel n umseqdac",
-       "blockip": "Ɛekkel aseqdac",
+       "blockip": "Sewḥel {{GENDER:$1|aseqdac|taseqdact}}",
        "blockip-legend": "Ɛekkel aseqdac",
        "blockiptext": "Seqdec tiferkit ddaw-agi iwakken ad  sewḥeleḍ ineɛruḍen n ubeddel seg yiwet tansa IP tulmist neɣ n yiwen isem umseqdac.\nAsket am wagi, ur ilaq ad yetwexddem kan iwakken ad yeεeggen axeṣṣar dɣa ilaq ad yemtawi s [[{{MediaWiki:Policy-url}}|ilugan igensanen]].\nEfked ddaw-agi taɣẓint tusdidt (amedya : efked isebtar yetwaxeṣṣren).",
        "ipaddressorusername": "Tansa IP neɣ isem n wemseqdac",
        "change-blocklink": "beddel asewḥel",
        "contribslink": "attekki",
        "emaillink": "Ceggaɛ e-mail",
-       "autoblocker": "Tetsewḥeleḍ s uwurman acku tansa IP inek/inem yeseqdac-itt « [[User:$1|$1]] ». Taɣzint id efkan i usewḥel agi d : « $2 ».",
+       "autoblocker": "Tweḥleḍ s wudem awurman acku tansa-ik IP yeseqdac-itt \"[[User:$1|$1]]\"\nTaɣzint i d-ittunefken i usewḥel n $1 d \"$2\"",
        "blocklogpage": "Aɣmis n isewḥelen",
        "blocklog-showlog": "Amseqdac agi, yetseweḥel uqbel. Ad affeḍ aɣmis n isewḥal ddaw-agi :",
        "blocklog-showsuppresslog": "Amseqdac agi, yetseweḥel dɣa yeweffer uqbel. Ad affeḍ aɣmis n tukksiwin ddaw-agi :",
        "pageinfo-category-pages": "Amḍan n isebtar",
        "pageinfo-category-subcats": "Amḍan n adutaggayin",
        "pageinfo-category-files": "Amḍan n ifuyla",
+       "pageinfo-user-id": "Asulay n useqdac",
        "markaspatrolleddiff": "Rcem \"yettwassenqden\"",
        "markaspatrolledtext": "Rcem amagrad-agi \"yettwassenqden\"",
        "markedaspatrolled": "Rcem belli yettwasenqed",
        "newimages-summary": "Asebtar agi uslig yebeqqeḍ ifuyla ineggura i kteren.",
        "newimages-legend": "Tastayt",
        "newimages-label": "Isem n ufaylu (naɣ aḥric ines) :",
+       "newimages-user": "Tansa IP neɣ isem n useqdac",
        "newimages-newbies": "Sken kan ittekkiyen n imiḍanen imaynuten",
        "noimages": "Tugna ulac-itt.",
        "ilsubmit": "Nadi",
        "tags-hitcount-header": "Ibeddilen yesɛan ticraḍ",
        "tags-active-yes": "Ih",
        "tags-active-no": "Ala",
+       "tags-source-manual": "Yettwasnes s ufus sɣur iseqdacen akked iṛubuten",
        "tags-edit": "beddel",
        "tags-hitcount": "$1 {{PLURAL:$1|abeddel|ibeddlen}}",
        "tags-create-heading": "Rnu taṛekkizt tamaynut",
index 3a29feb..c7cd4e2 100644 (file)
        "sp-contributions-hideminor": "사소한 편집 숨기기",
        "sp-contributions-submit": "검색",
        "sp-contributions-explain": "",
+       "sp-contributions-outofrange": "결과를 표시할 수 없습니다. 요청된 IP 대역은 CIDR /$1 한도보다 더 큽니다.",
        "whatlinkshere": "여기를 가리키는 문서",
        "whatlinkshere-title": "\"$1\" 문서를 가리키는 문서 목록",
        "whatlinkshere-page": "문서:",
index 446a372..0f80f82 100644 (file)
@@ -39,7 +39,7 @@
        "tog-shownumberswatching": "Mostra la numero de usores oservante",
        "tog-oldsig": "Tua suscrive presente",
        "tog-fancysig": "Trata la suscrive como vicitesto (sin lia automatica)",
-       "tog-uselivepreview": "Usa un previde direta",
+       "tog-uselivepreview": "Mostra prevides sin recarga la paje",
        "tog-forceeditsummary": "Recorda me cuando entera un resoma vacua de edita",
        "tog-watchlisthideown": "Asconde me editas de la lista de pajes oservada",
        "tog-watchlisthidebots": "Asconde editas par bot de la lista de pajes oservada",
        "jumptosearch": "xerca",
        "view-pool-error": "Pardona, la servadores es tro cargada a esta ora.\nTro multe usores es atenta vide esta paje.\nPer favore espeta ante cuanto tu atenta vide esta paje denova.\n\n$1",
        "generic-pool-error": "Pardona, la servadores es tro cargada a esta ora.\nTro multe usores es atentante vide esta recurso.\nPer favore espeta ante cuando tu atenta vide esta recurso denova.",
+       "pool-errorunknown": "Era nonconoseda",
        "aboutsite": "Sur {{SITENAME}}",
        "aboutpage": "Project:Sur",
        "copyright": "La contenida es disponeda su $1, estra diferes notada.",
        "myprivateinfoprotected": "Tu no ave permete per edita tua informa privata.",
        "mypreferencesprotected": "Tu no ave permete per edita tua preferes.",
        "ns-specialprotected": "La pajes spesial no pote es editada.",
+       "logouttext": "<strong>Tu es aora desautenticida.</strong>\n\nNota ce cisa alga pajes va continua es mostrada como si tu ta es ancora autenticida asta cuando tu vacui la memoria de tua surfador.",
+       "cannotlogoutnow-title": "Tu no pote desautentici a presente",
+       "cannotlogoutnow-text": "Desautentici no es posible cuando tu usa $1.",
        "welcomeuser": "Bonveni, $1!",
+       "welcomecreation-msg": "Tua conta ia es creada.\nTu pote cambia tua {{SITENAME}} [[Special:Preferences|preferes]] si tu desira.",
        "yourname": "Nom de usor:",
        "userlogin-yourname": "Nom de usor",
        "userlogin-yourname-ph": "Entra tua nom de usor",
+       "createacct-another-username-ph": "Tape tua nom de usor",
        "yourpassword": "Sinia de entra:",
        "userlogin-yourpassword": "Parola secreta",
        "userlogin-yourpassword-ph": "Tape tua parola secreta",
        "createacct-yourpasswordagain": "Confirma la parola secreta",
        "createacct-yourpasswordagain-ph": "Retape la parola secreta",
        "userlogin-remembermypassword": "Manteni mea identifia",
-       "yourdomainname": "Tu domina:",
-       "login": "Identifia",
-       "nav-login-createaccount": "Sinia per entra",
-       "logout": "Retira",
-       "userlogout": "Sinia per retira",
+       "userlogin-signwithsecure": "Usa un lia secur",
+       "cannotlogin-title": "Autentici no es posible",
+       "cannotlogin-text": "Autentici no es posible.",
+       "cannotloginnow-title": "Autentici aora no es posible.",
+       "cannotloginnow-text": "Autentici no es posible cuando tu usa $1.",
+       "cannotcreateaccount-title": "Crea de contas no es posible",
+       "cannotcreateaccount-text": "La crea direta de contas no es comutada en esta vici.",
+       "yourdomainname": "Tua domina:",
+       "password-change-forbidden": "Tu no pote cambia tua clave en esta vici.",
+       "externaldberror": "O un era de autentici ia aveni en la banco de datos, o tu no es permeteda a refresci tua conta esterna.",
+       "login": "Autentici",
+       "login-security": "Confirma tua identia",
+       "nav-login-createaccount": "Autentici / crea un conta",
+       "logout": "Desautentici",
+       "userlogout": "Desautentici",
+       "notloggedin": "No autenticida",
        "userlogin-noaccount": "Tu no ave un conta?",
        "userlogin-joinproject": "Crea un conta de {{SITENAME}}",
        "createaccount": "Crea un conta",
        "userlogin-resetpassword-link": "Tu ia oblida tua parola secreta?",
        "userlogin-helplink2": "Aida sur identifia",
-       "createacct-emailrequired": "Adirije de e-posta",
-       "createacct-emailoptional": "Adirije de e-posta (si desirada)",
-       "createacct-email-ph": "Entra tua adirije de e-posta",
-       "createacct-another-email-ph": "Entra tua adirije de e-posta",
+       "userlogin-loggedin": "Tu ia autentici ja como {{GENDER:$1|$1}}.\nUsa la formulario a su per autentici como un otra usor.",
+       "userlogin-reauth": "Tu debe reautentici per confirma ce tu es {{GENDER:$1|$1}}.",
+       "userlogin-createanother": "Crea un conta nova",
+       "createacct-emailrequired": "Adirije de eposta",
+       "createacct-emailoptional": "Adirije de eposta (si desirada)",
+       "createacct-email-ph": "Tape tua adirije de eposta",
+       "createacct-another-email-ph": "Tape tua adirije de eposta",
+       "createaccountmail": "Usa un clave tempora e acaso, e envia lo a la adirije spesifada de eposta",
+       "createaccountmail-help": "On pote usa esta per crea un conta per un otra person sin descovre la clave.",
+       "createacct-realname": "Nom vera (si desirada)",
        "createacct-reason": "Razona:",
+       "createacct-reason-ph": "Perce tu crea un conta nova",
        "createacct-submit": "Crea tua conta",
        "createacct-another-submit": "Crea un conta",
+       "createacct-continue-submit": "Continua la crea de conta",
+       "createacct-another-continue-submit": "Continua la crea de conta",
        "createacct-benefit-heading": "{{SITENAME}} es realida par persones como tu.",
        "createacct-benefit-body1": "{{PLURAL:$1|edita|editas}}",
        "createacct-benefit-body2": "{{PLURAL:$1|paje|pajes}}",
        "nosuchuser": "On no ave un usor con la nom \"$1\".\nOn distingui entre leteras major e minor per nomes de usores.\nEsamina la spele, o [[Special:CreateAccount|crea un conta nova]].",
        "nosuchusershort": "Es no usor con esta nom \"$1\". Esamina la spele.",
        "nouserspecified": "Tu debe indica un nom de usor.",
+       "login-userblocked": "Esta usor es impedida. Autentici no es permeteda.",
        "wrongpassword": "La sinia de entra no es coreta. Per favore, atenta ancora.",
        "wrongpasswordempty": "La sinia de entra es vacua. Per favore, atenta ancora.",
        "passwordtooshort": "Sinias secreta debe ave minima {{PLURAL:$1|1 simbol|$1 simboles}}.",
        "passwordtoolong": "Sinias secreta no pote ave plu ca {{PLURAL:$1|1 simbol|$1 simboles}}.",
        "passwordtoopopular": "Sinias secreta comun debe no es usada. Per favore, eleje un sinia plu unica.",
+       "password-name-match": "Tua clave debe es diferente de tua nom de usor.",
        "mailmypassword": "Cambia tua sinia secreta",
        "passwordremindertitle": "Sinia secreta temporer nova per {{SITENAME}}",
        "passwordremindertext": "Algun (tu, probable, de adirije IP $1)\nia demanda un sinia secreta nova per {{SITENAME}} ($4).\nLa sinia secreta tempora per usor \"$2\" es aora \"$3\". Si esta ia es tua intende, tu debe identifia tu denova per entra e eleje tua sinia nova aora.\nTua sinia tempora va desvalidi en {{PLURAL:$5|un dia|$5 dias}}.\n\nSi algun otra ca tu ia envia esta demanda a nos, o si tu ia recorda tua sinia secreta e no vole cambia lo aora, tu pote iniora esta mesaje e continua usa tua sinia secreta vea.",
        "noemail": "No es un adirije de eposta per usor \"$1\".",
        "passwordsent": "Un sinia secreta ia es enviada a la adirije de eposta per \"$1\".\nPer favore, sinia per entra ancora pos tu ia reseta el.",
        "eauthentsent": "Un eposta de serti ia es enviada a la adirije de eposta spesifada.\nAnte cualce otra epostas es enviada a tua conta, tu va nesesa segue la instruis en la eposta, per serti ce la conta es vera la tua.",
+       "mailerror": "Era en envia eposta: $1",
+       "acct_creation_throttle_hit": "Visitores a esta vici, usante tua adirije IP, ia crea {{PLURAL:$1|1 conta|$1 contas}} en la $2 la plu resente, cual es la masima permeteda en esta periodo.\nComo resulta, visitores con esta adirije IP no pote crea plu contas a esta tempo.",
        "emailconfirmlink": "Aproba tu adirije de eposta",
        "accountcreated": "Conta es creada",
        "loginlanguagelabel": "Lingua: $1",
        "pt-login": "Identifia se",
        "pt-login-button": "Identifia",
+       "pt-login-continue-button": "Continua autentici",
        "pt-createaccount": "Crea un conta",
        "pt-userlogout": "Desidentifia",
        "oldpassword": "Sinia secreta vea:",
        "newpassword": "Sinia secreta nova:",
        "retypenew": "Re-entra tu sinia secreta nova:",
+       "resetpass_submit": "Fisa la clave e autentici tu",
+       "changepassword-success": "Tua clave ia es cambiada!",
+       "changepassword-throttled": "Tu ia fa resente tro multe atentas de autentici.\nPer favore, pausa per $1 ante atenta denova.",
+       "botpasswords": "Claves de bot",
+       "botpasswords-summary": "<em>Claves de bot</em> permete ce on asede un conta de usor par API sin usa la identia xef de la conta. La diretos de usor disponable pos autentici par clave de bot es cisa restrinjeda.\n\nSi tu no sabe perce on ta vole fa esta, probable tu debe no fa lo. Nunca un otra person debe demanda ce tu jenera un de estas e dona lo a el.",
+       "botpasswords-no-central-id": "Per usa claves de bot, tu debe es autenticida con conta sentral.",
+       "botpasswords-existing": "Claves esistente de bot",
+       "botpasswords-createnew": "Crea un clave nova de bot",
+       "botpasswords-editexisting": "Edita un clave esistente de bot",
+       "botpasswords-label-appid": "Nom de bot:",
+       "botpasswords-label-create": "Crea",
+       "botpasswords-label-update": "Fisa",
+       "botpasswords-label-cancel": "Cansela",
+       "botpasswords-label-delete": "Sutrae",
+       "botpasswords-label-resetpassword": "Reinisia la clave",
+       "botpasswords-label-grants": "Permetes pertinente:",
+       "botpasswords-help-grants": "Permetes fa ce diretos ja pertinente a tua conta de usor deveni usable. La comuta de un permete asi no afeta diretos cual tua conta de usor no ave. Vide la [[Special:ListGrants|table de permetes]] per plu informas.",
+       "botpasswords-label-grants-column": "Permeteda",
+       "botpasswords-bad-appid": "La nom de bot \"$1\" no es valida.",
+       "botpasswords-insert-failed": "La clave de bot \"$1\" no ia pote es ajuntada. Esce on ia ajunta ja lo?",
+       "botpasswords-update-failed": "La clave de bot \"$1\" no ia pote es cambiada. Esce on ia sutrae lo?",
+       "botpasswords-created-title": "Clave de bot creada",
+       "botpasswords-created-body": "La clave de bot \"$1\" de usor \"$2\" ia es creada.",
+       "botpasswords-updated-title": "Clave de bot cambiada",
+       "botpasswords-updated-body": "La clave de bot \"$1\" de usor \"$2\" ia es cambiada.",
+       "resetpass_forbidden": "Claves no pote es cambiada",
+       "resetpass_forbidden-reason": "Claves no pote es cambiada: $1",
+       "resetpass-no-info": "Tu debe es autenticida per asede direta esta paje.",
        "resetpass-submit-loggedin": "Cambia la sinia secreta",
-       "resetpass-temp-password": "Sinia secreta tempora:",
-       "passwordreset": "Reinisia tua parola secreta",
+       "resetpass-submit-cancel": "Cansela",
+       "resetpass-wrong-oldpass": "La clave tempora o presente es nonvalida.\nCisa tu ia cambia ja tua clave o ia solisita un clave tempora nova.",
+       "resetpass-recycled": "Per favore, cambia tua clave a alga cosa diferente de tua clave presente.",
+       "resetpass-temp-emailed": "Tu ia autentici con un clave tempora epostada.\nPer fini autentici, tu debe defini un clave nova asi:",
+       "resetpass-temp-password": "Clave tempora:",
+       "resetpass-abort-generic": "La cambia de clave ia es abortada par un estendente.",
+       "resetpass-expired": "Tua clave es no plu valida. Per favore, defini un clave nova per autentici.",
+       "resetpass-expired-soft": "Tua clave es no plu valida e nesesa es reinisiada. Per favore, eleje aora un clave nova, o clica \"{{int:authprovider-resetpass-skip-label}}\" per reinisia plu tarda lo.",
+       "resetpass-validity-soft": "Tua clave es no plu valida: $1\n\nPer favore, eleje aora un clave nova, o clica \"{{int:authprovider-resetpass-skip-label}}\" per reinisia plu tarda lo.",
+       "passwordreset": "Reinisia clave",
+       "passwordreset-text-one": "Completi esta formulario per reseta un clave tempora par eposta.",
+       "passwordreset-text-many": "{{PLURAL:$1|Completi un de la campos per reseta un clave tempora par eposta.}}",
+       "passwordreset-disabled": "Reinisias de clave es descomutada en esta vici.",
+       "passwordreset-emaildisabled": "Capasias de eposta es descomutada en esta vici.",
        "passwordreset-username": "Nom de usor:",
        "passwordreset-domain": "Domina:",
        "passwordreset-email": "Adirije de e-posta",
-       "passwordreset-invalidemail": "Adirije de e-posta no es valida",
-       "changeemail-submit": "Cambia e-posta",
-       "bold_sample": "Testo en leteras spesa",
-       "bold_tip": "Testo en leteras spesa",
-       "italic_sample": "Testo en leteras apoiada",
-       "italic_tip": "Testo en leteras apoiada",
+       "passwordreset-emailtitle": "Detalias de conta de {{SITENAME}}",
+       "passwordreset-emailtext-ip": "Algun (probable tu, de adirije IP $1) ia solisita un reinisia de tua\nclave per {{SITENAME}} ($4). La {{PLURAL:$3|conta|contas}} de usor seguente es\nasosiada con esta adirije de eposta:\n\n$2\n\nEsta {{PLURAL:$3|clave|claves}} tempora va desvalidi pos {{PLURAL:$5|un dia|$5 dias}}.\nTu debe autentici aora e eleje un clave nova. Si un otra person ia fa\nesta solisita, o si tu ia recorda tua clave orijinal e no vole\naora cambia lo, tu pote iniora esta mesaje e continua usa\ntua clave vea.",
+       "passwordreset-emailtext-user": "Usor $1 en {{SITENAME}} ia solisita un reinisia de tua\nclave per {{SITENAME}} ($4). La {{PLURAL:$3|conta|contas}} de usor seguente es\nasosiada con esta adirije de eposta:\n\n$2\n\nEsta {{PLURAL:$3|clave|claves}} tempora va desvalidi pos {{PLURAL:$5|un dia|$5 dias}}.\nTu debe autentici aora e eleje un clave nova. Si un otra person ia fa\nesta solisita, o si tu ia recorda tua clave orijinal e no vole\naora cambia lo, tu pote iniora esta mesaje e continua usa\ntua clave vea.",
+       "passwordreset-emailelement": "Nom de usor:\n$1\n\nClave tempora:\n$2",
+       "passwordreset-emailsentemail": "Si esta adirije de eposta es asosiada con tua conta, alora on va envia un eposta de reinisia de clave.",
+       "passwordreset-emailsentusername": "Si un adirije de eposta es asosiada con esta nom de usor, alora on va envia un eposta de reinisia de clave.",
+       "passwordreset-nocaller": "On nesesa furni un clamor",
+       "passwordreset-nosuchcaller": "Clamor no esiste: $1",
+       "passwordreset-ignored": "La reinisia de clave no ia susede. Cisa no furnor es definida?",
+       "passwordreset-invalidemail": "La adirije de eposta es nonvalida",
+       "passwordreset-nodata": "On ia furni no nom de usor e no adirije de eposta",
+       "changeemail": "Cambia o sutrae adirije de eposta",
+       "changeemail-header": "Completi esta formulario per cambia tua adirije de eposta. Si tu vole sutrae tota asosias de adirije de eposta de tua conta, lasa vacua la adirije nova cuando tu envia la formulario.",
+       "changeemail-no-info": "Tu debe es autenticida per asede direta esta paje.",
+       "changeemail-oldemail": "Adirije de eposta presente:",
+       "changeemail-newemail": "Adirije de eposta nova:",
+       "changeemail-newemail-help": "Lasa vacua esta campo si tu vole sutrae tua adirije de eposta. Si tu sutrae la adirije de eposta, tu no va pote reinisia un clave oblidada, e no va reseta epostas de esta vici.",
+       "changeemail-none": "(vacua)",
+       "changeemail-password": "Tua clave de {{SITENAME}}:",
+       "changeemail-submit": "Cambia eposta",
+       "changeemail-throttled": "Tu ia fa tro multe atentas de autentici.\nPer favore, pausa per $1 ante atenta denova.",
+       "changeemail-nochange": "Tape un adirije de eposta nova, per favore.",
+       "resettokens": "Reinisia marcas",
+       "resettokens-text": "Asi, tu pote reinisia marcas cual permete asede alga datos privata cual pertine a tua conta.\n\nTu debe fa esta si tu ia comparti los con algun sin intende, o si tua conta ia es atacada.",
+       "resettokens-no-tokens": "No marcas esiste per reinisia.",
+       "resettokens-tokens": "Marcas:",
+       "resettokens-token-label": "$1 (valua presente: $2)",
+       "resettokens-watchlist-token": "Marca per la flue ueb (Atom/RSS) de [[Special:Watchlist|cambias a tua pajes monitorida]]",
+       "resettokens-done": "Marcas reinisiada.",
+       "resettokens-resetbutton": "Reinisia marcas elejeda",
+       "bold_sample": "Testo spesa",
+       "bold_tip": "Testo spesa",
+       "italic_sample": "Testo apoiada",
+       "italic_tip": "Testo apoiada",
        "link_sample": "Titulo de lia",
        "link_tip": "Lia interna",
        "extlink_sample": "http://www.example.com titulo de lia",
        "sig_tip": "Tua suscrive con marca de ora",
        "hr_tip": "Linia orizonal (per usas rara)",
        "summary": "Resoma:",
-       "subject": "Sujeto:",
+       "subject": "Tema:",
        "minoredit": "Esta es un cambia minor",
        "watchthis": "Monitori esta paje",
        "savearticle": "Fisa la paje",
+       "savechanges": "Fisa cambias",
        "publishpage": "Publici paje",
        "publishchanges": "Publica la cambias",
        "preview": "Previde",
        "showpreview": "Mostra previde",
        "showdiff": "Mostra diferes",
+       "blankarticle": "<strong>Avisa:</strong> La paje cual tu crea es vacua.\nSi tu clica \"$1\" denova, la paje va es creada sin contenida.",
        "anoneditwarning": "<strong>Avisa:</strong> Tu no ia identifia tu. Tua adirije IP va es publica vidable si tu fa un edita. Si tu <strong>[$1 identifia tu]</strong> o <strong>[$2 crea un conta]</strong>, tua editas va es atribuida a tua nom de usor, entre otra beneficas.",
-       "summary-preview": "Previde soma:",
+       "missingcommenttext": "Tape un comenta a su, per favore.",
+       "missingcommentheader": "<strong>Avisa:</strong> Tu no ia furni un tema per esta comenta.\nSi tu clica \"$1\" denova, tua edita va es fisada sin tema.",
+       "summary-preview": "Previde de resoma:",
+       "subject-preview": "Previde de tema:",
+       "previewerrortext": "Un era ia aveni en atenta previde tua cambias.",
        "blockedtitle": "Usor es impedida",
        "blockedtext": "'''Tua nom de usor o adirije IP es impedida.'''\n\nLa impedi ia es fada par $1.\nLa razona donada es ''$2''.\n\n* Comensa de impedi: $8\n* Fini de impedi: $6\n* Conta impedida: $7\n\nTu pote contata $1 o un otra [[{{MediaWiki:Grouppage-sysop}}|dirijor]] per discute esta impedi.\nTu no pote usa la funsiona \"envia un e-posta a esta usor\" estra si un adirije valida de e-posta legal es spesifada en tua [[Special:Preferences|preferes de conta]] e tu no es impedida de usa lo.\nTua adirije IP presente es $3, e la numero de impedi es #$5.\nInclui tota esta detalias en cualce demandas cual tu fa, per favore.",
+       "autoblockedtext": "<strong>Tua nom de usor o adirije IP es impedida.</strong>\n\nLa impedi ia es fada par $1.\nLa razona donada es ''$2''.\n\n* Comensa de impedi: $8\n* Fini de impedi: $6\n* Conta impedida: $7\n\nTu pote contata $1 o un otra [[{{MediaWiki:Grouppage-sysop}}|dirijor]] per discute esta impedi.\nTu no pote usa la funsiona \"envia un eposta a esta usor\" estra si un adirije valida\nde eposta es spesifada en tua [[Special:Preferences|preferes de conta]] e tu no es impedida de usa lo.\nTua adirije IP presente es $3, e la numero de impedi es #$5.\nInclui tota esta detalias en cualce demandas cual tu fa, per favore.",
+       "systemblockedtext": "\nTua nom de usor o adirije IP ia es automata impedida par MediaWiki.\nLa razona donada es <em>$2</em>.\n\n* Comensa de impedi: $8\n* Fini de impedi: $6\n* Conta impedida: $7\n\\Tua adirije IP presente es $3.\nInclui tota esta detalias en cualce demandas cual tu fa, per favore.",
+       "blockednoreason": "no razona donada",
+       "whitelistedittext": "Per favore, $1 per edita pajes.",
+       "confirmedittext": "Tu debe confirma tua adirije de eposta ante edita pajes.\nPer favore, defini e validi tua adirije de eposta en tua [[Special:Preferences|preferes]].",
+       "nosuchsectiontitle": "Parte no trovada",
+       "nosuchsectiontext": "Tu ia atenta edita un parte cual no esiste.\nCisa on ia move o sutrae lo en cuando tu ia regarda la paje.",
        "loginreqtitle": "Entra de identia nesesada",
-       "loginreqlink": "identifia",
+       "loginreqlink": "autentici",
+       "loginreqpagetext": "Per favore, $1 per regarda otra pajes.",
+       "accmailtitle": "Clave enviada",
+       "accmailtext": "On ia envia un clave acaso jenerada per [[User talk:$1|$1]] a $2. Pos autentici, tu pote cambia esta a la paje de <em?[[Special:ChangePassword|cambia de clave]]</em>.",
        "newarticle": "(Nova)",
        "newarticletext": "Tu ia segue un lia a un paje cual ancora no esista. Per crea la paje, comensa tape en la caxa a su (vide la [$1 paje de aida] per plu informa).\nSi tu ia veni asi par era, clica la boton <strong>retro</strong> de tua surfador.",
        "anontalkpagetext": "<em>Esta es la paje de discute per un usor anonim ci ancora no ia crea un conta, o ci no usa lo.</em>\n Donce nos identifia el par adirije IP numeral.\nUn tal adirije pote es compartida par plu ca un usor.\nSi tu es un usor anonim e opina ce on ia dirije comentas nonpertinente a tu, per favore [[Special:CreateAccount|crea un conta]] o [[Special:UserLogin|identifia tu]] per evita confusas futur con otra usores anonim.",
        "noarticletext": "No testo esiste en esta paje. Tu pote [[Special:Search/{{PAGENAME}}|xerca la titulo de esta paje]] en otra pajes, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca en la arcivos relatada], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crea esta paje]</span>.",
        "noarticletext-nopermission": "No testo esiste en esta paje. Tu pote [[Special:Search/{{PAGENAME}}|xerca esta titulo de paje]] en otra pajes, o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca en arcivos relatada]</span>, ma on no permete ce tu crea esta paje.",
+       "missing-revision": "La revisa $1 de la paje nomida \"{{FULLPAGENAME}}\" no esiste.\n\nEsta es usual causada par segue un lia nonfresca de istoria a un paje cual on ia sutrae.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].",
+       "userpage-userdoesnotexist": "Conta de usor \"$1\" no es rejistrada.\nPer favore, deside esce tu vole crea/edita esta paje.",
        "userpage-userdoesnotexist-view": "La conta de usor \"$1\" no es rejistrada",
+       "blocked-notice-logextract": "Esta usor es impedida a presente.\nLa entrada la plu resente en la rejistra de impedis es presentada a su per clari:",
        "clearyourcache": "<strong>Nota:</strong> Pos fisa, tu debe cisa sircoveni la memoria de tua surfador per vide la cambias.\n* <strong>Firefox / Safari:</strong> Presa la tecla <em>Maj</em> (<em>Shift</em>) e clica <em>Refresci</em>, o presa o <em>Ctrl-F5</em> o <em>Ctrl-R</em> (<em>⌘-R</em> a Mac)\n* <strong>Google Chrome:</strong> Presa <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> a Mac)\n* <strong>Internet Explorer:</strong> Presa <em>Ctrl</em> e clica <em>Refresci</em>, o presa <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Vade a <em>Menu → Settings</em> (<em>Opera → Preferences</em> a Mac) e de ala a <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
+       "usercssyoucanpreview": "<strong>Aviseta:</strong> Usa la boton \"{{int:showpreview}}\" per proba tua CSS nova ante fisa.",
+       "userjsyoucanpreview": "<strong>Aviseta:</strong> Usa la boton \"{{int:showpreview}}\" per proba tua JavaScript nova ante fisa.",
+       "usercsspreview": "<strong>Recorda ce tu regarda mera un previde de tua CSS de usor.\nLo es ancora no fisada!</strong>",
+       "userjspreview": "<strong>Recorda ce tu regarda mera un proba/previde de tua JavaScript de usor.\nLo es ancora no fisada!</strong>",
+       "sitecsspreview": "<strong>Recorda ce tu regarda mera un previde de esta CSS.\nLo es ancora no fisada!</strong>",
+       "sitejspreview": "<strong>Recorda ce tu regarda mera un previde de esta codigo JavaScript.\nLo es ancora no fisada!</strong>",
+       "userinvalidcssjstitle": "<strong>Avisa:</strong> No pel \"$1\" esiste.\nPajes .css e .js personal usa un titulo con leteras minor, pe {{ns:user}}:Foo/vector.css en loca de {{ns:user}}:Foo/Vector.css.",
+       "updated": "(Cambiada)",
+       "note": "<strong>Nota:</strong>",
        "previewnote": "<strong>Recorda ce esta es sola un previde.</strong> Tua cambias es ancora no fisada!",
        "continue-editing": "Vade a la loca de edita",
+       "previewconflict": "Esta previde refleta la testo en la caxa alta de edita, como lo va apare si tu eleje fisa.",
+       "session_fail_preview": "Pardona! Nos no ia pote trata tua edita par causa de un perde de datos de sesion.\n\nCisa tu ia deveni desautenticida. <strong>Per favore, serti ce tu es ancora autenticida e atenta denova.</strong>\nSi lo ancora no susede, proba [[Special:UserLogout|desautentici]] e reautentici, e serti ce tua surfador permete cucis de esta pajeria.",
+       "session_fail_preview_html": "Pardona! Nos no ia pote trata tua edita par causa de un perde de datos de sesion.\n\n<em>Car {{SITENAME}} ia comuta la usa cru de HTML, la previde es ascondeda per defende contra atacas par JavaScript.</em>\n\n<strong>Si esta es un atenta vera de edita, atenta denova, per favore.</strong>\nSi lo ancora no susede, proba [[Special:UserLogout|desautentici]] e reautentici, e serti ce tua surfador permete cucis de esta pajeria.",
+       "token_suffix_mismatch": "<strong>Tua edita ia es refusada car tua surfador ia malfa la sinias de puntua en la marca de edita.</strong>\nLa edita ia es refusada per preveni mali de la testo de la paje.\nEsta aveni a veses si on usa un proxi ueb anonim e defetosa.",
+       "edit_form_incomplete": "<strong>Alga partes de la formulario de edita no ia ateni la servador; serti ce tua editas es intata e atenta denova.</strong>",
        "editing": "Editante $1",
        "creating": "Creante $1",
        "editingsection": "Editante $1 (un parte)",
        "editingcomment": "Edita $1 (sesion nova)",
+       "editconflict": "Desacorda de editas: $1",
+       "explainconflict": "Un otra usor ia cambia esta paje pos cuando tu ia comensa edita lo.\nLa caxa alta de testo conteni la paje como lo esiste a presente.\nTua cambias apare en la caxa basa de testo.\nTu debe fusa tua cambias con la testo esistente.\n<strong>Sola</strong> la testo en la caxa alta va es fisada cuando tu clica \"$1\".",
+       "yourtext": "Tua testo",
+       "storedversion": "Testo esistente",
+       "nonunicodebrowser": "<strong>Avisa: Tua surfador no comprende Unicode.</strong>\nUn solve tempora es ativida per permete ce tu edita pajes sin problem: Sinias estra ASCII va apare en la caxa de edita como codigos exadesimal.",
+       "editingold": "<strong>Avisa: Tu edita un revisa nonfresca de esta paje.</strong>\nSi tu fisa lo, cualce cambias fada pos esta revisa va es perdeda.",
        "yourdiff": "Diferes",
-       "copyrightwarning": "Per favore nota ce tota labora a {{SITENAME}} es judida ce el es relasada su la $2 (vide $1 per detalias). Si tu no desira ce tu scrives ta es editada sin compati e redistribui sin tu permite, no sumita el asi!<br />\nTu ance promete a nos ce tu ia scriveda esta par tu mesma, o copiada esta de un domina publica o otra orijin libre.\n'''NO SUMITA LABORA SU DIRETOS DE AUTOR SIN PERMITE!!'''",
+       "copyrightwarning": "Per favore, nota ce tota contribuis a {{SITENAME}} es regardada como relasada su la $2 (vide $1 per detalias). Si tu no desira ce on edita tua scrives sin compatia e redistribui libre los, alora no ajunta los asi.<br />\nTu promete ance a nos ce tu mesma ia scrive esta, o ia copia lo de un recurso de domina publica o simil libre.\n<strong>No ajunta testo restrinjeda par direto de autor sin permete!</strong>",
+       "copyrightwarning2": "Per favore, nota ce tota contribuis a {{SITENAME}} pote es editada, alterada o sutraeda par otra contribuores.\nSi tu no desira ce on edita tua scrives sin compatia, alora no ajunta los asi.<br />\nTu promete ance a nos ce tu mesma ia scrive esta, o ia copia lo de un recurso de domina publica o simil libre.\n<strong>No ajunta testo restrinjeda par direto de autor sin permete!</strong>",
+       "editpage-cannot-use-custom-model": "La model de contenida de esta paje no pote es cambiada.",
+       "longpageerror": "<strong>Era: La testo cual tu ia envia ave un longia de {{PLURAL:$1|un cilobait|$1 cilobaites}}, cual es plu ca la masima de {{PLURAL:$2|un cilobait|$2 cilobaites}}.</strong>\nLo no pote es fisada.",
+       "readonlywarning": "<strong>Avisa:</strong> La banco de datos es cluida per manteni, donce tu no va pote fisa tua editas a esta tempo.</strong>\nCisa tu ta vole copia e coli tua testo a un fix de testo e fisa lo per plu tarda.\n\nLa dirijor ci ia fa la clui ia ofre esta esplica: $1",
        "templatesused": "{{PLURAL:$1|Modele|Modeles}} usada en esta paje:",
        "templatesusedpreview": "{{PLURAL:$1|Stensil|Stensiles}} usada en esta previde:",
        "template-protected": "(protejeda)",
        "template-semiprotected": "(partal protejeda)",
        "hiddencategories": "Esta paje es un membro de {{PLURAL:$1|1 categoria ascondeda|$1 categorias ascondeda}}:",
        "nocreatetext": "{{SITENAME}} ave un restringe a la capas per crea pajes nova.\nTu pote vade a retro e edita un paje esistente, o  [[Special:UserLogin|sinia per entra o crea un conta]].",
+       "nocreate-loggedin": "Tu no es permeteda a crea pajes nova.",
+       "sectioneditnotsupported-title": "La edita de partes no es suportada",
        "permissionserrors": "Era de permete",
        "permissionserrorstext-withaction": "Tu no pote $2, per la {{PLURAL:$1|razona|razonas}} seguente:",
        "recreate-moveddeleted-warn": "<strong>Avisa: Tu recrea un paje cual on ia sutrae a ante.</strong>\n\nConsidera esce lo conveni ce tu continua edita esta paje. La arcivos de sutrae e move per la paje es presentada asi per aida:",
-       "moveddeleted-notice": "On ia sutrae esta paje. La arcivos de sutrae e move per la paje es presentada a su per clari.",
+       "moveddeleted-notice": "On ia sutrae esta paje. La rejistras de sutrae e move per la paje es presentada a su per clari.",
        "content-model-wikitext": "vicitesto",
+       "content-model-text": "testo plata",
+       "content-model-javascript": "JavaScript",
+       "content-json-empty-object": "Ojeto vacua",
+       "content-json-empty-array": "Lista vacua",
+       "deprecated-self-close-category": "Pajes con eticetas HTML autocluinte nonvalida",
+       "deprecated-self-close-category-desc": "La paje conteni eticetas HTML autocluinte nonvalida, como <code>&lt;b/></code> o <code>&lt;span/></code>. La condui de estas va cambia en la futur prosima per coere con la spesifa HTML5, donce on desaproba usa los en vicitesto.",
+       "duplicate-args-warning": "<strong>Averti:</strong> [[:$1]] clama [[:$2]] con plu ca un valua per la parametre \"$3\". Sola la valua final furnida va es usada.",
+       "duplicate-args-category": "Pajes con parametres duplida en clamas de stensil",
+       "parser-unstrip-recursion-limit": "Esede de la recorsa masima de unstrip ($1)",
+       "converter-manual-rule-error": "Era detetada en regula nonautomata de converti de lingua",
+       "undo-success": "La edita pote es desfada.\nPer favore, esamina la compara a su per serti ce tu vole fa esta, e alora fisa la cambias a su per fini desfa la edita.",
        "undo-failure": "Esta edita no pote es desfada par causa de editas interveninte cual contradise lo.",
+       "undo-norev": "La edita no pote es desfada car lo no esiste o ia es sutraeda.",
+       "undo-nochange": "Lo pare ce la edita es ja desfada.",
        "viewpagelogs": "Mostra la arcivos per esta paje",
        "currentrev": "Cambia presente",
        "currentrev-asof": "Revisa la plu resente de $1",
        "revdelete-radio-unset": "Vidable",
        "pagehist": "Istoria de paje",
        "deletedhist": "Istoria sutraeda",
+       "mergehistory-from": "Paje fontal:",
+       "mergehistory-into": "Paje destinal:",
+       "mergehistory-list": "Istoria fusable de editas",
+       "mergehistory-merge": "La revisas seguente de [[:$1]] pote es fusada con [[:$2]].\nUsa la colona de botones de radio per fusa sola la revisas creada a e ante la tempo spesifada.\nNota ce si tu usa la lias de naviga, esta colona va es reinisiada.",
+       "mergehistory-go": "Mostra editas fusable",
+       "mergehistory-submit": "Fusa revisas",
+       "mergehistory-empty": "No revisas pote es fusada.",
+       "mergehistory-done": "$3 {{PLURAL:$3|revisa|revisas}} de $1 ia es fusada con [[:$2]].",
+       "mergehistory-fail-bad-timestamp": "La indica de ora no es valida.",
+       "mergehistory-fail-invalid-source": "La paje fontal no es valida.",
+       "mergehistory-fail-invalid-dest": "La pajes destinal no es valida.",
+       "mergehistory-fail-no-change": "La fusa de istoria ia fusa no revisas. Per favore, reesamina la parametres de paje e tempo.",
+       "mergehistory-invalid-destination": "La paje destinal debe es un titulo valida.",
+       "mergehistory-autocomment": "[[:$1]] ia es fusada con [[:$2]]",
+       "mergehistory-comment": "[[:$1]] ia es fusada con [[:$2]]: $3",
+       "mergehistory-same-destination": "La pajes fontal e destinal no pote es la mesma.",
+       "mergehistory-reason": "Razona:",
        "mergelog": "Fusa arcivo",
+       "revertmerge": "Desfusa",
+       "mergelogpagetext": "A su es un lista de la fusas la plu resente de la istoria de un paje con un otra.",
        "history-title": "Istoria de revisas de \"$1\"",
        "difference-title": "Difere entre revisas de \"$1\"",
        "lineno": "Linia $1:",
        "diff-multi-otherusers": "({{PLURAL:$1|Un revisa media|$1 revisas media}} par {{PLURAL:$2|un otra usor|$2 usores}} no es mostrada)",
        "searchresults": "Trovadas",
        "searchresults-title": "Trovadas per \"$1\"",
+       "titlematches": "Trovadas en titulo de paje",
+       "textmatches": "Trovadas en testo de paje",
+       "notextmatches": "No resultas trovada",
        "prevn": "{{PLURAL:$1|$1}} presedente",
        "nextn": "{{PLURAL:$1|$1}} seguente",
+       "prev-page": "paje presedente",
+       "next-page": "paje seguente",
        "prevn-title": "$1 {{PLURAL:$1|resulta|resultas}} presedente",
        "nextn-title": "$1 {{PLURAL:$1|resulta|resultas}} seguente",
        "shown-title": "Mostra $1 {{PLURAL:$1|resulta|resultas}} en cada paje",
        "searchall": "tota",
        "search-showingresults": "{{PLURAL:$4|Resulta <strong>$1</strong> de <strong>$3</strong>|Resultas <strong>$1 - $2</strong> de <strong>$3</strong>}}",
        "search-nonefound": "No resultas ia es trovada per la xerca.",
+       "powersearch-legend": "Xerca avansada",
+       "powersearch-ns": "Xerca en spasios de nom:",
+       "powersearch-togglelabel": "Eleje:",
        "powersearch-toggleall": "Tota",
        "powersearch-togglenone": "Zero",
+       "powersearch-remember": "Memori la eleje per xercas futur",
+       "search-external": "Xerca esterna",
        "preferences": "Preferis",
        "mypreferences": "Preferes",
        "skin-preview": "Previde",
        "prefs-help-realname": "Tu nom vera no es obligada, ma si tu vole dona tu nom vera, el va es usada per onora tu per tu labora.\n\nTu no debe entra tua nom vera. Ma si tu entra tua noma vera, lo pote es usada per atribui tua laboras a tu.",
        "prefs-signature": "Suscrive",
        "userrights": "Dirije de la diretos de usores",
-       "saveusergroups": "Fisa la grupo de usores",
+       "saveusergroups": "Fisa la grupo de {{GENDER:$1|usor}}",
        "group": "Grupo:",
        "group-user": "Usores",
        "group-bot": "Botes",
        "ancientpages": "Pajes la plu vea",
        "move": "Move",
        "movethispage": "Move esta paje",
-       "unusedimagestext": "<p>Nota ce otra locas de rede pote lia a un imaje con un URL direta, e donce el pote continua es listada asi contra ce el es usada ativa.</p>",
+       "unusedimagestext": "La fixes seguente esiste ma no apare en un paje.\nPer favore, nota ce otra pajerias pote usa un URL direta per lia a un imaje, donce los pote continua es listada asi an si vera usada.",
        "unusedcategoriestext": "La categorias seguente esiste sin es usada par otra articles o categorias.",
        "pager-newer-n": "{{PLURAL:$1|1 plu resente|$1 plu resentes}}",
        "pager-older-n": "{{PLURAL:$1|1 plu vea|$1 plu veas}}",
        "restriction-edit": "Edita",
        "restriction-move": "Move",
        "undelete": "Restora paje sutraeda",
+       "undeletepage": "Regarda e restora pajes sutraeda",
+       "undeletepagetitle": "<strong>La seguente es composada de revisas sutraeda de [[:$1|$1]]</strong>.",
+       "viewdeletedpage": "\nRegarda pajes sutraeda",
+       "undeletepagetext": "La {{PLURAL:$1|paje|$1 pajes}} seguente es sutraeda ma ancora en la arcivo e pote es rejistrada.\nLa arcivo es cisa periodal vacuida.",
+       "undelete-fieldset-title": "Restora revisas",
+       "undeleteextrahelp": "Per restora la istoria intera de la paje, desmarca tota caxas e clica <strong><em>{{int:undeletebtn}}</em></strong>.\nPer fa un restora partal, marca la caxas corespondente a la revisas cual tu vole restora, e clica <strong><em>{{int:undeletebtn}}</em></strong>.",
+       "undeleterevisions": "$1 {{PLURAL:$1|revisa|revisas}} sutraeda",
+       "undeletehistory": "Si tu restora la paje, tota revisas va es restorada a la istoria. Si un paje nova con la mesma nom ia es creada pos la sutrae, la revisas restorada va apare en la istoria presedente.",
+       "undeleterevdel": "Desutrae no va aveni si lo ta fa ce la revisa la plu resente de la paje o fix va es partal sutraeda.\n En tal casos, tu debe deseleje o desasconde la revisa sutraeda la plu resente.",
+       "undeletehistorynoadmin": "Esta paje es sutraeda.\nLa razona de sutrae es mostrada en la resoma a su, con ance detalias de la usores ci ia edita esta paje ante la sutrae.\nLa testo mesma de esta revisas sutraeda es sola disponable a dirijores.",
+       "undelete-revision": "Revisa sutraeda de $1 (a $4, a $5) par $3:",
+       "undeleterevision-missing": "Revisa nonvalida o mancante.\nTu ave cisa un mal lia, o cisa la revisa ia es restorada o sutraeda de la arcivo.",
+       "undeleterevision-duplicate-revid": "{{PLURAL:$1|One revisa|$1 revisas}} no ia pote es restorada, car sua <code>rev_id</code> ia es ja usada.",
+       "undelete-nodiff": "No revisa presedente ia es trovada.",
        "undeletebtn": "Restora",
+       "undeletelink": "\nregarda/restora",
+       "undeleteviewlink": "regarda",
+       "undeleteinvert": "Inversa la eleje",
+       "undeletecomment": "Razona:",
+       "cannotundelete": "Alga o tota de la desutrae ia fali:\n$1",
+       "undeletedpage": "<strong>$1 ia es restorada</strong>\n\nConsulta la [[Special:Log/delete|rejistra de sutraes]] per un lista de sutraes e restoras resente.",
+       "undelete-header": "Regarda [[Special:Log/delete|la rejistra de sutraes]] per pajes resente sutraeda.",
+       "undelete-search-title": "Xerca en pajes sutraeda",
+       "undelete-search-box": "Xerca en pajes sutraeda",
+       "undelete-search-prefix": "Mostra pajes comensante con:",
+       "undelete-search-full": "Mostra titulos de paje cual conteni:",
        "undelete-search-submit": "Xerca",
+       "undelete-no-results": "No pajes conteninte ia es trovada en la arcivo de sutraes.",
+       "undelete-filename-mismatch": "La revisa de fix con ora $1 no pote es desutraeda: Noncoresponde de nom de fix.",
+       "undelete-bad-store-key": "La revisa de fix con ora $1 no pote es desutraeda: Fix ia manca ante sutrae.",
+       "undelete-cleanup-error": "Era en sutrae fix arcivida nonusada \"$1\".",
        "namespace": "Spasio de nom:",
        "invert": "Inversa la eleje",
        "tooltip-invert": "Marca esta caxa per asconde cambias a pajes en la spasio elejeda (e ance la spasio asosiada si acel es marcada)",
index 6815b8e..13a9fd1 100644 (file)
        "sp-contributions-newonly": "Прикажувај само новосоздадени страници",
        "sp-contributions-hideminor": "Скриј ситни промени",
        "sp-contributions-submit": "Пребарај",
+       "sp-contributions-outofrange": "Не можам да прикажам исход. Бараниот опсег на IP-адреси е поголем од допуштените /$1 во CIDR.",
        "whatlinkshere": "Што води овде",
        "whatlinkshere-title": "Страници со врски што водат до „$1“",
        "whatlinkshere-page": "Страница:",
index 53f0e54..036d084 100644 (file)
        "noarticletext": "Inda nun eisiste testo nesta páigina.\nTu puodes [[Special:Search/{{PAGENAME}}|percurar pul títalo desta páigina]] noutras páiginas,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} percurar ls registros que téngan a ber]\nó [{{fullurl:{{FULLPAGENAME}}|action=edit}} criar esta páigina]</span>.",
        "note": "'''Abiso:'''",
        "previewnote": "<strong>Lhembra-te qu'esto ye solo ua amostra.</strong>\nLas altaraçones inda nun fúrun grabadas!",
+       "continue-editing": "Nabegar pa la ária d'eidiçon",
        "editing": "A eiditar $1",
        "editingsection": "A eiditar $1 (cacho)",
        "yourtext": "L tou testo",
        "table_pager_limit": "Amostrar $1 antradas por páigina",
        "table_pager_empty": "Sien resultados",
        "autoredircomment": "Ancaminamiento pa [[$1]]",
+       "autosumm-new": "Criou la páigina cun \"$1\"",
        "watchlistedit-normal-title": "Eiditar la lhista de páiginas begiadas",
        "watchlistedit-raw-titles": "Títalos",
        "watchlistedit-clear-title": "Lhimpar la lhista de páiginas begiadas",
index cf25286..52e95e9 100644 (file)
        "viewdeletedpage": "मेटिएका पृष्ठहरू हेर्नुहोस्",
        "undeletepagetext": "निम्नलिखित {{PLURAL:$1|पृष्ठ मेटिएकोछ तर पूरालेखभित्रै छ|$1 पृष्ठ मेटिएकाछन् तर पूरालेखभित्रै छन्}} र पुनर्स्थापित गर्न सकिन्छ।\nपूरालेखको समय-समयमा सफाई गर्न सकिन्छ।",
        "undelete-fieldset-title": "पुनरावलोकनहरू  पूर्वावस्थामा ल्याउनुहोस्",
-       "undeleteextrahelp": "यस पृष्ठक पुरै इतिहास पूर्वरुपमा फर्काउनको लागि  छनोट सन्दुकहरुलाई नछानी '''''{{int:undeletebtn}}''''' मा क्लिक गर्नुहोस।\nअनुकुल पूर्वरुपमा फर्काउने कार्य गर्न छनौट चाहिएका संस्करणक सन्दुकहरुलाई छानेर '''''{{int:undeletebtn}}'''''मा क्लिक गर्नुहोस।",
+       "undeleteextrahelp": "यस पृष्ठको पुरै इतिहास पूर्वरुपमा फर्काउनको लागि  छनोट सन्दुकहरूलाई नछानी '''''{{int:undeletebtn}}''''' मा क्लिक गर्नुहोस।\nअनुकुल पूर्वरुपमा फर्काउने कार्य गर्न छनौट चाहिएका संस्करणका सन्दुकहरूलाई छानेर '''''{{int:undeletebtn}}'''''मा क्लिक गर्नुहोस।",
        "undeleterevisions": "$1 {{PLURAL:$1|संशोधन|संशोधनहरू}} संग्रहित",
        "undeletehistory": "यदि कुनै पृष्टलाई पुन: स्थापन गराउनु भयो भने सम्पूर्ण संस्करणहरू इतिहासमा पुन:स्थापन हुनेछन् ।\nयदि यसै नामबाट  नयाँ पृष्ठ निर्माण भैसकेको छ भने पुन: स्थापित संस्करणहरू पूर्व इतिहासको रुपमा स्थापित हुनेछन् ।",
        "undeleterevdel": "यदि यो माथिल्लो पृष्ठ बन्छ  या फाइल संस्करणहरू आंशिक मेटिएका छन् भने मेट्ने काम रद्द गरिने छैन।\nत्यस अवस्थामा तपाईंले छनौटमा अन्तिम मेटिएको नयाँ संस्करण नलुकाउनेमा चिनो लगाउनु पर्छ ।",
index 56b0a91..3bf9a31 100644 (file)
        "sp-contributions-newonly": "Alleen nieuwe pagina's weergeven",
        "sp-contributions-hideminor": "Kleine bewerkingen verbergen",
        "sp-contributions-submit": "Bekijken",
+       "sp-contributions-outofrange": "Kan geen resultaten tonen. Het ingevoerde IP bereik is groter dan de CIDR limiet /$1.",
        "whatlinkshere": "Verwijzingen naar deze pagina",
        "whatlinkshere-title": "Pagina's die verwijzen naar \"$1\"",
        "whatlinkshere-page": "Pagina:",
index e2bb178..b612729 100644 (file)
        "prefs-watchlist-token": "Nykel for overvakingslista:",
        "prefs-misc": "Andre",
        "prefs-resetpass": "Endra passord",
-       "prefs-changeemail": "↓Endre e-postadresse",
+       "prefs-changeemail": "Endre eller fjern e-postadresse",
        "prefs-setemail": "↓Oppgje ei e-postadresse",
        "prefs-email": "Val for e-post",
        "prefs-rendering": "Utsjånad",
index 90b49a3..62f0c48 100644 (file)
        "feedback-submit": "ଦାଖଲ କରିବା",
        "feedback-thanks": "ସାଧୁବାଦ ! ଆପଣଙ୍କର ମତାମତ  \"[$2 $1]\" ପୃଷ୍ଠାରେ ସାଇତାଯାଇଛି ।",
        "feedback-thanks-title": "ସାଧୁବାଦ!",
-       "searchsuggest-search": "ଖୋଜନ୍ତୁ",
+       "searchsuggest-search": "{{SITENAME}}ରେ ଖୋଜିବେ",
        "searchsuggest-containing": "ଖୋଜୁଛି...",
        "api-error-badtoken": "ଭିତର ଅସୁବିଧା: ଖରାପ ଟୋକନ ।",
        "api-error-emptypage": "ନୂଆ, ଖାଲି ପୃଷ୍ଠ ତିଆରି କରିବାର ଅନୁମତି ନାହି ।",
index 1839dfd..e6f323e 100644 (file)
        "rcfilters-empty-filter": "Não há filtros ativos. São mostradas todas as contribuições.",
        "rcfilters-filterlist-title": "Filtros",
        "rcfilters-filterlist-whatsthis": "Como é que funcionam?",
-       "rcfilters-filterlist-feedbacklink": "Dê-nos a sua opinião sobre os novos filtros (beta)",
+       "rcfilters-filterlist-feedbacklink": "Diga-nos o que acha das (novas) ferramentas de filtragem",
        "rcfilters-highlightbutton-title": "Realçar resultados",
        "rcfilters-highlightmenu-title": "Selecionar uma cor",
        "rcfilters-highlightmenu-help": "Selecione uma cor para realçar esta propriedade",
        "rcfilters-liveupdates-button-title-on": "Desligar atualizações ao vivo",
        "rcfilters-liveupdates-button-title-off": "Apresentar mudanças novas à medida que acontecem",
        "rcfilters-watchlist-markseen-button": "Marcar todas as modificações como já vistas",
+       "rcfilters-watchlist-edit-watchlist-button": "Editar a sua lista de páginas vigiadas",
+       "rcfilters-watchlist-showupdated": "As mudanças das páginas que ainda não visitou após terem sido alteradas aparecem a <strong>negrito</strong>, com marcadores sólidos.",
        "rcnotefrom": "Abaixo {{PLURAL:$5|está a mudança|estão as mudanças}} desde <strong>$2</strong> (mostradas até <strong>$1</strong>).",
        "rclistfromreset": "Reiniciar a seleção da data",
        "rclistfrom": "Mostrar as novas mudanças a partir das $2 de $3",
        "unwatchthispage": "Parar de vigiar esta página",
        "notanarticle": "Não é uma página de conteúdo",
        "notvisiblerev": "Edição eliminada",
-       "watchlist-details": "{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} na sua lista de páginas vigiadas, excluindo-se as páginas de discussão.",
+       "watchlist-details": "{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} na sua lista de páginas vigiadas (mais as páginas de discussão).",
        "wlheader-enotif": "A notificação por correio eletrónico está ativa.",
        "wlheader-showupdated": "As páginas modificadas desde a última vez que as visitou aparecem destacadas a <strong>negrito</strong>.",
        "wlnote": "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas <strong>$1</strong> alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas <strong>$2</strong> horas}} até $3, $4.",
        "sp-contributions-newonly": "Mostrar só edições que são criações de páginas",
        "sp-contributions-hideminor": "Ocultar edições menores",
        "sp-contributions-submit": "Pesquisar",
+       "sp-contributions-outofrange": "Não é possível mostrar nenhum resultado. A gama de endereços IP pedida é maior do que o limite /$1 do intervalo CIDR.",
        "whatlinkshere": "Páginas afluentes",
        "whatlinkshere-title": "Páginas com ligações para \"$1\"",
        "whatlinkshere-page": "Página:",
index 897728e..a92504a 100644 (file)
        "diff-form-revid": "Label for the field of the new revision in the comparison for [[Special:Diff]]",
        "diff-form-submit": "Submit button on [[Special:Diff]]",
        "diff-form-summary": "{{doc-specialpagesummary|diff}}",
-       "permanentlink": "The title of [[Special:PermanentLink]]",
-       "permanentlink-revid": "Label for the field for the revision ID in [[Special:PermanentLink]]",
+       "permanentlink": "The title of [[Special:PermanentLink]]\n{{Identical|Permalink}}",
+       "permanentlink-revid": "Label for the field for the revision ID in [[Special:PermanentLink]]\n{{Identical|Revision ID}}",
        "permanentlink-submit": "Submit button on [[Special:PermanentLink]]",
        "permanentlink-summary": "{{doc-specialpagesummary|permanentlink}}",
        "dberr-problems": "This message does not allow any wiki nor html markup.",
index c34cec3..f20985d 100644 (file)
        "sp-contributions-newonly": "Показывать только правки, являющиеся созданием страниц",
        "sp-contributions-hideminor": "Скрыть малые правки",
        "sp-contributions-submit": "Найти",
+       "sp-contributions-outofrange": "Не удаётся показать результаты. Запрашиваемый IP-диапазон больше, чем лимит CIDR /$1.",
        "whatlinkshere": "Ссылки сюда",
        "whatlinkshere-title": "Страницы, ссылающиеся на «$1»",
        "whatlinkshere-page": "Страница:",
index 3997ac7..99a793b 100644 (file)
        "sp-contributions-newonly": "Prikaži samo urejanja, ki so ustvarila nove strani",
        "sp-contributions-hideminor": "Skrij manjša urejanja",
        "sp-contributions-submit": "Išči",
+       "sp-contributions-outofrange": "Ne moremo prikazati nobenih rezultatov. Zahtevano IP-območje je večje kot omejitev CIDR /$1.",
        "whatlinkshere": "Kaj se povezuje sem",
        "whatlinkshere-title": "Strani, ki se povezujejo na $1",
        "whatlinkshere-page": "Stran:",
index 6335655..4126bac 100644 (file)
        "markaspatrolledtext": "Означи страницу као патролирану",
        "markaspatrolledtext-file": "Означи ову верзију датотеке као патролирану",
        "markedaspatrolled": "Означено као патролирано",
-       "markedaspatrolledtext": "Изабрана измена на [[:$1]] је означена као патролирана.",
+       "markedaspatrolledtext": "Изабрана измена странице [[:$1]] означена је као патролирана.",
        "rcpatroldisabled": "Патролирање скорашњих измена је онемогућено",
        "rcpatroldisabledtext": "Патролирање скорашњих измена је онемогућено.",
        "markedaspatrollederror": "Не могу да означим као патролирано",
index 64a7353..95b1797 100644 (file)
        "markaspatrolledtext": "Označi stranicu kao patroliranu",
        "markaspatrolledtext-file": "Označi ovu verziju datoteke kao patroliranu",
        "markedaspatrolled": "Označeno kao patrolirano",
-       "markedaspatrolledtext": "Izabrana izmena na [[:$1]] je označena kao patrolirana.",
+       "markedaspatrolledtext": "Izabrana izmena stranice [[:$1]] označena je kao patrolirana.",
        "rcpatroldisabled": "Patroliranje skorašnjih izmena je onemogućeno",
        "rcpatroldisabledtext": "Patroliranje skorašnjih izmena je onemogućeno.",
        "markedaspatrollederror": "Ne mogu da označim kao patrolirano",
index 547c09c..1ba8bbd 100644 (file)
        "missingcommentheader": "<strong>గుర్తు చేస్తున్నాం:</strong> ఈ వ్యాఖ్యకు మీరు విషయం పెట్టలేదు.\n\"$1\"ని మళ్ళీ నొక్కితే, అది లేకుండానే మీ మార్పును భద్రపరుస్తాం.",
        "summary-preview": "దిద్దుబాటు సారాంశం మునుజూపు:",
        "subject-preview": "విషయపు మునుజూపు:",
-       "previewerrortext": "à°®à±\80 à°®à°¾à°°à±\8dà°ªà±\81à°²à±\81 à°®à±\81à°¨à±\81à°\9cà±\82à°ªà±\81 à°\9aà±\82à°¡à°\9fà°\82à°²à±\8b à°¤à°ªà±\8dపిదమయింది.",
+       "previewerrortext": "à°®à±\80 à°®à°¾à°°à±\8dà°ªà±\81à°²à±\81 à°®à±\81à°¨à±\81à°\9cà±\82à°ªà±\81 à°\9aà±\82పడà°\82à°²à±\8b à°²à±\8bà°ªà°\82 à°¦à±\8aà°°à±\8dà°²ింది.",
        "blockedtitle": "వాడుకరి నిరోధించబడ్డారు",
        "blockedtext": "<strong>మీ వాడుకరి పేరు లేదా ఐ.పీ. చిరునామా నిరోధించబడింది.</strong>\n\nనిరోధించినది $1.\nఅందుకు ఇచ్చిన కారణం: <em>$2</em>.\n\n* నిరోధం మొదలైన సమయం: $8\n* నిరోధించిన కాలం: $6\n* నిరోధానికి గురైనవారు: $7\n\nఈ నిరోధంపై చర్చించేందుకు మీరు $1 ను గాని, మరెవరైనా [[{{MediaWiki:Grouppage-sysop}}|నిర్వాహకులను]] గాని సంప్రదించవచ్చు.\nమీ [[Special:Preferences|ఖాతా అభిరుచులలో]] సరైన ఈ-మెయిలు చిరునామా ఇచ్చివుండకపోయినా లేదా మిమ్మల్ని  'ఈ వాడుకరికి ఈ-మెయిలు పంపు' సౌలభ్యాన్ని వాడుకోవడం నుండి నిరోధించివున్నా మీరు ఈమెయిలు ద్వారా సంప్రదించలేరు.\nమీ ప్రస్తుత ఐ.పీ. చిరునామా $3, మరియు నిరోధపు ID #$5.\nమీ సంప్రదింపులన్నిటిలోనూ వీటిని పేర్కొనండి.",
        "autoblockedtext": "మీ ఐపీ చిరునామా ఆటోమాటిగ్గా నిరోధించబడింది. ఎందుకంటే ఇదే ఐపీ చిరునామాని ఓ నిరోధిత వాడుకరి ఉపయోగించారు. ఆ వాడుకరిని $1 నిరోధించారు.\nఅందుకు ఇచ్చిన కారణం ఇదీ:\n\n:<em>$2</em>\n\n* నిరోధం మొదలైన సమయం: $8\n* నిరోధించిన కాలం: $6\n* ఉద్దేశించిన నిరోధిత వాడుకరి: $7\n\nఈ నిరోధం గురించి చర్చించేందుకు మీరు $1 ను గానీ, లేదా ఇతర [[{{MediaWiki:Grouppage-sysop}}|నిర్వాహకులను]] గానీ సంప్రదించండి.\n\nమీ [[Special:Preferences|అభిరుచులలో]] సరైన ఈమెయిలు ఐడీని ఇచ్చి ఉంటే తప్ప, మీరు \"ఈ సభ్యునికి మెయిలు పంపు\" అనే అంశాన్ని వాడజాలరని గమనించండి. ఆ సౌలభ్యాన్ని వాడటం నుండి మిమ్మల్ని నిరోధించలేదు.\n\nమీ ప్రస్తుత ఐపీ చిరునామా $3, మరియు నిరోధపు ఐడీ: $5.\nమీ సంప్రదింపులన్నిటిలోను అన్ని పై వివరాలను ఉదహరించండి.",
        "history-edit-tags": "ఎంచుకున్న సంస్కరణల ట్యాగులను సవరించు",
        "rev-deleted-comment": "(మార్పుల సంగ్రహాన్ని తొలగించారు)",
        "rev-deleted-user": "(వాడుకరి పేరుని తొలగించారు)",
-       "rev-deleted-event": "(à°\9aà°¿à°\9fà±\8dà°\9fà°¾ à°µà°¿à°µà°°à°¾à°²à°¨à±\81 à°¤à±\8aà°²à°\97à°¿à°\82à°\9aారà±\81)",
+       "rev-deleted-event": "(à°\9aà°¿à°\9fà±\8dà°\9fà°¾ à°µà°¿à°µà°°à°¾à°²à°¨à±\81 à°¤à±\80à°¸à±\87సాà°\82)",
        "rev-deleted-user-contribs": "[వాడుకరిపేరు లేదా ఐపీ చిరునామాని తొలగించారు  - మార్పుచేర్పుల నుండి మార్పుని దాచారు]",
        "rev-deleted-text-permission": "ఈ పేజీ కూర్పుని <strong>తొలగించారు</strong>.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో పూర్తి వివరాలు చూడవచ్చు.",
        "rev-deleted-text-unhide": "పేజీ యొక్క ఈ కూర్పును '''తొలగించాం'''.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు చూడవచ్చు.\nమీరు కావాలనుకుంటే, [$1 ఈ కూర్పుని చూడవచ్చు].",
        "mergehistory-go": "విలీనం చెయ్యదగ్గ దిద్దుబాట్లను చూపించు",
        "mergehistory-submit": "కూర్పులను విలీనం చెయ్యి",
        "mergehistory-empty": "ఏ కూర్పులనూ విలీనం చెయ్యలేము.",
-       "mergehistory-done": "$1 à°¯à±\8aà°\95à±\8dà°\95 $3 {{PLURAL:$3|à°\95à±\82à°°à±\8dà°ªà±\81ని|à°\95à±\82à°°à±\8dà°ªà±\81లనà±\81}} [[:$2]] à°²à±\8bనిà°\95à°¿ à°\9cయపà±\8dà°°à°¦à°\82à°\97à°¾ à°µà°¿à°²à±\80à°¨à°\82 à°\9aà±\87సాà°\82.",
+       "mergehistory-done": "$1 à°¯à±\8aà°\95à±\8dà°\95 $3 {{PLURAL:$3|à°\95à±\82à°°à±\8dà°ªà±\81à°¨à±\81|à°\95à±\82à°°à±\8dà°ªà±\81లనà±\81}} [[:$2]] à°²à±\8bనిà°\95à°¿ à°µà°¿à°²à±\80à°¨à°\82 {{PLURAL:$3|à°\9aà±\87సాà°\82|à°\9aà±\87సాà°\82}}.",
        "mergehistory-fail": "చరితాన్ని విలీనం చెయ్యలేకపోయాం. పేజీని, సమయాలను సరిచూసుకోండి.",
        "mergehistory-fail-bad-timestamp": "కాలముద్ర చెల్లదు.",
+       "mergehistory-fail-invalid-source": "మూలపు పేజీ సరైనది కాదు.",
+       "mergehistory-fail-invalid-dest": "లక్ష్యిత పేజీ సరైనది కాదు.",
+       "mergehistory-fail-permission": "చరిత్ర విలీనానికి సరిపడా అనుమతులు లేవు.",
+       "mergehistory-fail-self-merge": "మూలం, లక్ష్యం పేజీలు ఒకటే.",
        "mergehistory-no-source": "మూలం పేజీ, $1 లేదు.",
        "mergehistory-no-destination": "గమ్యం పేజీ, $1 లేదు.",
        "mergehistory-invalid-source": "మూలం పేజీకి సరైన పేరు ఉండాలి.",
        "search-file-match": "(ఫైలు విషయంతో సరిపోలుతోంది)",
        "search-suggest": "మీరు అంటున్నది ఇదా: $1",
        "search-rewritten": "$1 కు ఫలితాలు చూపిస్తున్నాం. లేదంటే $2 కోసం వెతకండి.",
-       "search-interwiki-caption": "సోదర ప్రాజెక్టులు",
+       "search-interwiki-caption": "à°¸à±\8bదర à°ªà±\8dà°°à°¾à°\9cà±\86à°\95à±\8dà°\9fà±\81లలà±\8bని à°«à°²à°¿à°¤à°¾à°²à±\81",
        "search-interwiki-default": "$1 నుండి ఫలితాలు:",
        "search-interwiki-more": "(మరిన్ని)",
        "search-interwiki-more-results": "మరిన్ని ఫలితాలు",
        "search-external": "బయటి అన్వేషణ",
        "searchdisabled": "{{SITENAME}} అన్వేషణ తాత్కాలికంగా పని చెయ్యడం లేదు. ఈలోగా మీరు గూగుల్‌ ఉపయోగించి అన్వేషించవచ్చు. గమనిక: గూగుల్‌ వారి {{SITENAME}} ఫలితాలు కాలదోషం పట్టి ఉండే అవకాశం ఉంది.",
        "search-error": "$1 కోసం వెతికేటపుడు లోపమేదో దొర్లింది.",
+       "search-warning": "వెతుకుతూండగా ఓ హెచ్చరిక ఎదురైంది: $1",
        "preferences": "అభిరుచులు",
        "mypreferences": "అభిరుచులు",
        "prefs-edits": "దిద్దుబాట్ల సంఖ్య:",
        "prefs-editwatchlist-clear": "మీ వీక్షణజాబితాను తుడిచివేయండి",
        "prefs-watchlist-days": "వీక్షణ జాబితాలో చూపించవలసిన రోజులు:",
        "prefs-watchlist-days-max": "గరిష్ఠంగా $1 {{PLURAL:$1|రోజు|రోజులు}}",
-       "prefs-watchlist-edits": "విసà±\8dà°¤à±\83à°¤ à°µà±\80à°\95à±\8dà°·à°£ à°\9cాబితాలà±\8b à°\9aà±\82పిà°\82à°\9aవలసిన à°¦à°¿à°¦à±\8dà°¦à±\81బాà°\9fà±\8dà°²à±\81:",
+       "prefs-watchlist-edits": "à°µà±\80à°\95à±\8dà°·à°£à°\9cాబితాలà±\8b à°\9aà±\82పిà°\82à°\9aవలసిన à°\97à°°à°¿à°·à±\8dà°  à°¦à°¿à°¦à±\8dà°¦à±\81బాà°\9fà±\8dà°² à°¸à°\82à°\96à±\8dà°¯:",
        "prefs-watchlist-edits-max": "గరిష్ఠ సంఖ్య: 1000",
        "prefs-watchlist-token": "వీక్షణాజాబితా టోకెను:",
        "prefs-misc": "ఇతరత్రా",
        "prefs-help-prefershttps": "ఈ అభిరుచి మీరు పైసారి లాగినైనపుడు అమలౌతుంది.",
        "prefswarning-warning": "మీ అభిరుచులలో మీరు చేసిన మార్పులను ఇంకా భద్రపరచలేదు. మీరు \"$1\" ను నొక్కకుండా ఈ పేజీని వదలి వెళ్తే, మీ అభిరుచులు భద్రం కావు.",
        "prefs-tabs-navigation-hint": "చిట్కా: ట్యాబుల జాబితాలో ఓ ట్యాబు నుండి మరోదానికి వెళ్ళేందుకు కుడి ఎడమ బాణాల కీలను వాడవచ్చు.",
-       "userrights": "వాడుకరి హక్కుల నిర్వహణ",
+       "userrights": "వాడుకరి హక్కుల",
        "userrights-lookup-user": "వాడుకరిని ఎంచుకోండి",
        "userrights-user-editname": "వాడుకరిపేరును ఇవ్వండి:",
        "editusergroup": "వాడుకరి గుంపులను చూపించు",
        "editinguser": "{{GENDER:$1|user}} వాడుకరి హక్కులను మారుస్తున్నారు <strong>[[User:$1|$1]]</strong> $2",
+       "viewinguserrights": "{{GENDER:$1|వాడుకరి}} <strong>[[User:$1|$1]]</strong> హక్కులను చూస్తున్నారు $2",
        "userrights-editusergroup": "{{GENDER:$1|వాడుకరి}} సమూహాలను మార్చండి",
        "userrights-viewusergroup": "{{GENDER:$1|వాడుకరి}} గుంపులను చూడండి",
        "saveusergroups": "{{GENDER:$1|వాడుకరి}} గుంపులను భద్రపరచు",
        "userrights-groupsmember": "సభ్యులు:",
        "userrights-groupsmember-auto": "సంభావిత సభ్యులు:",
-       "userrights-groups-help": "à°\88 à°µà°¾à°¡à±\81à°\95à°°à°¿ à°\8fà°¯à±\87 à°\97à±\81à°\82à°ªà±\81లలà±\8b à°\89à°\82డాలà±\8b à°®à±\80à°°à±\81 à°®à°¾à°°à±\8dà°\9aà°µà°\9aà±\8dà°\9aà±\81.\n* à°\9fà°¿à°\95à±\8dà°\95à±\81 à°ªà±\86à°\9fà±\8dà°\9fà°¿à°µà±\81à°\82à°\9fà±\87 à°\86 à°\97à±\81à°\82à°ªà±\81à°²à±\8b à°\88 à°µà°¾à°¡à±\81à°\95à°°à°¿ à°\89à°¨à±\8dà°¨à°\9fà±\8dà°\9fà±\81.\n* à°\9fà°¿à°\95à±\8dà°\95à±\81 à°²à±\87à°\95à±\81à°\82à°\9fà±\87 à°\86 à°\97à±\81à°\82à°ªà±\81à°²à±\8b à°\88 à°µà°¾à°¡à±\81à°\95à°°à°¿ à°²à±\87à°¨à°\9fà±\8dà°\9fà±\81.\n* à°\88 * à°\97à±\81à°°à±\8dà°¤à±\81 à°\89à°\82à°\9fà±\87 à°\92à°\95సారి à°\86 à°\97à±\81à°\82à°ªà±\81ని చేర్చాక మీరు తీసివేయలేరు, లేదా తీసివేసాక తిరిగి చేర్చలేరు.\n* ఈ # గుర్తు ఉంటే ఆ గుంపు కాలం తీరిపోయే సమయాన్ని పెంచగలరు; దాన్ని తగ్గించలేరు.",
+       "userrights-groups-help": "à°\88 à°µà°¾à°¡à±\81à°\95à°°à°¿ à°\8fà°¯à±\87 à°\97à±\81à°\82à°ªà±\81లలà±\8b à°\89à°\82డాలà±\8b à°®à±\80à°°à±\81 à°®à°¾à°°à±\8dà°\9aà°µà°\9aà±\8dà°\9aà±\81.\n* à°\9fà°¿à°\95à±\8dà°\95à±\81 à°ªà±\86à°\9fà±\8dà°\9fà°¿à°µà±\81à°\82à°\9fà±\87 à°¸à°¦à°°à±\81 à°\97à±\81à°\82à°ªà±\81à°²à±\8b à°\88 à°µà°¾à°¡à±\81à°\95à°°à°¿ à°\89à°¨à±\8dà°¨à°\9fà±\8dà°\9fà±\81.\n* à°\9fà°¿à°\95à±\8dà°\95à±\81 à°²à±\87à°\95à±\81à°\82à°\9fà±\87 à°¸à°¦à°°à±\81 à°\97à±\81à°\82à°ªà±\81à°²à±\8b à°\88 à°µà°¾à°¡à±\81à°\95à°°à°¿ à°²à±\87à°¨à°\9fà±\8dà°\9fà±\81.\n* * à°\97à±\81à°°à±\8dà°¤à±\81 à°\89à°\82à°\9fà±\87 à°\92à°\95సారి à°\86 à°\97à±\81à°\82à°ªà±\81à°\95à±\81 చేర్చాక మీరు తీసివేయలేరు, లేదా తీసివేసాక తిరిగి చేర్చలేరు.\n* ఈ # గుర్తు ఉంటే ఆ గుంపు కాలం తీరిపోయే సమయాన్ని పెంచగలరు; దాన్ని తగ్గించలేరు.",
        "userrights-reason": "కారణం:",
        "userrights-no-interwiki": "ఇతర వికీలలో వాడుకరి హక్కులను మార్చడానికి మీకు అనుమతి లేదు.",
        "userrights-nodatabase": "$1 అనే డేటాబేసు లేదు లేదా అది స్థానికం కాదు.",
        "userrights-changeable-col": "మీరు మార్చదగిన గుంపులు",
        "userrights-unchangeable-col": "మీరు మార్చలేని గుంపులు",
+       "userrights-expiry-current": "కాలంతీరే వ్యవధి $1",
        "userrights-expiry-none": "ఎన్నటికీ కాలం తీరిపోదు",
        "userrights-expiry": "కాలం తీరిపోయే వ్యవధి",
        "userrights-expiry-existing": "ప్రస్తుత కాలం తీరిపోయే సమయం: $3, $2",
        "action-viewmywatchlist": "మీ వీక్షణ జాబితాను చూడండి",
        "action-viewmyprivateinfo": "మీ గోపనీయ సమాచారాన్ని చూడండి",
        "action-editmyprivateinfo": "మీ గోపనీయ సమాచారాన్ని సరిదిద్దండి",
-       "action-editcontentmodel": "à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\95à°\82à°\9fà±\86à°\82à°\9fà±\81 à°®à±\8bà°¡à°²à±\81à°¨à±\81 à°¸à°µà°°à°¿à°\82à°\9aà±\81",
+       "action-editcontentmodel": "à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\95à°\82à°\9fà±\86à°\82à°\9fà±\81 à°®à±\8bà°¡à°²à±\81à°¨à±\81 à°¸à°µà°°à°¿à°\82à°\9aà±\87",
        "action-managechangetags": "ట్యాగులను చేర్చే, (అ)చేతనం చేసే",
        "action-applychangetags": "మీ మార్పులతో ట్యాగులను ఆపాదించే",
        "action-deletechangetags": "డేటాబేసు నుండి ట్యాగులను తొలగించే",
        "recentchanges-legend-heading": "<strong>సూచిక :</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|కొత్త పేజీల జాబితా]]ను కూడా చూడండి)",
        "recentchanges-submit": "చూపించు",
+       "rcfilters-tag-remove": "'$1'ను తీసివెయ్యి",
+       "rcfilters-legend-heading": "<strong>సంక్షేపాల (ఎబ్రీవియేషన్లు) జాబితా:</strong>",
+       "rcfilters-other-review-tools": "<strong>ఇతర సమీక్షా ఉపకరణాలు</strong>",
+       "rcfilters-group-results-by-page": "ఫలితాలను పేజీవారీగా గుదిగుచ్చు",
+       "rcfilters-grouping-title": "గుదిగుచ్చడం",
+       "rcfilters-activefilters": "సచేతనమైన వడపోతలు",
+       "rcfilters-advancedfilters": "ఉన్నత వడపోతలు",
+       "rcfilters-limit-title": "చూపించాల్సిన మార్పులు",
+       "rcfilters-limit-shownum": "చివరి {{PLURAL:$1|మార్పును|$1 మార్పులను}} చూపించు",
+       "rcfilters-days-title": "ఇటీవలి రోజులు",
+       "rcfilters-hours-title": "ఇటీవలి గంటలు",
+       "rcfilters-days-show-days": "$1 {{PLURAL:$1|రోజు|రోజులు}}",
+       "rcfilters-days-show-hours": "$1 {{PLURAL:$1|గంట|గంటలు}}",
+       "rcfilters-highlighted-filters-list": "హైలైటు చేసినవి: $1",
+       "rcfilters-quickfilters": "భద్రపరచిన వడపోతకాలు",
+       "rcfilters-quickfilters-placeholder-title": "ఇంకా లింకులు వేటినీ భద్రపరచలేదు",
+       "rcfilters-quickfilters-placeholder-description": "మీ వడపోత సెట్టింగులను భద్రపరచి తరువాత వాడుకోవాలంటే, కింద ఉన్న యాక్టివ్ ఫిల్టర్ ఏరియా లోని పేజీక (బుక్‌మార్కు) ఐకన్ను నొక్కండి.",
+       "rcfilters-savedqueries-defaultlabel": "భద్రపరచిన వడపోతకాలు",
+       "rcfilters-savedqueries-rename": "పేరుమార్చు",
+       "rcfilters-savedqueries-setdefault": "డిఫాల్టుగా సెట్ చెయ్యండి",
+       "rcfilters-savedqueries-unsetdefault": "డిఫాల్టును తీసివెయ్యి",
        "rcfilters-savedqueries-remove": "తొలగించు",
        "rcfilters-savedqueries-new-name-label": "పేరు",
+       "rcfilters-savedqueries-new-name-placeholder": "వడపోతకపు ఉద్దేశమేంటో వివరించండి",
+       "rcfilters-savedqueries-apply-label": "వడపోతకాన్ని సృష్టించు",
+       "rcfilters-savedqueries-apply-and-setdefault-label": "డిఫాల్టు వడపోతకాన్ని సృష్టించు",
+       "rcfilters-savedqueries-cancel-label": "రద్దు చెయ్యి",
+       "rcfilters-savedqueries-add-new-title": "ప్రస్తుత వడపోత సెట్టింగులను భద్రపరచు",
+       "rcfilters-restore-default-filters": "డిఫాల్టు వడపోతకాలను పునఃస్థాపించు",
+       "rcfilters-clear-all-filters": "వడపోతకాలన్నింటినీ తుడిచెయ్యి",
+       "rcfilters-show-new-changes": "సరికొత్త మార్పులను చూడండి",
+       "rcfilters-search-placeholder": "ఇటీవలి మార్పులను వడకట్టు (శోధించండి లేదా టైపించడం మొదలుపెట్టండి)",
+       "rcfilters-invalid-filter": "తప్పు వడపోతకం",
+       "rcfilters-empty-filter": "చేతనంగా ఉన్న వడపోతకాలేమీ లేవు. మార్పుచేర్పు లన్నిటినీ చూపించాం.",
        "rcfilters-filterlist-title": "వడపోతలు",
+       "rcfilters-filterlist-whatsthis": "ఇవి ఎలా పనిచేస్తాయి?",
+       "rcfilters-filterlist-feedbacklink": "ఈ (కొత్త) వడపోత పరికరాలు ఎలా ఉన్నాయో మాకు చెప్పండి",
+       "rcfilters-highlightbutton-title": "ఫలితాలను హైలైటు చెయ్యి",
        "rcfilters-highlightmenu-title": "ఒక రంగును ఎంచుకోండి",
+       "rcfilters-highlightmenu-help": "ఈ లక్షణాన్ని హైలైటు చేసేందుకు ఓ రంగును ఎంచుకోండి",
+       "rcfilters-filterlist-noresults": "వడపోతకాలేమీ కనబడలేదు",
+       "rcfilters-filtergroup-authorship": "కర్తృత్వం",
        "rcfilters-filter-editsbyself-label": "మీ దిద్దుబాట్లు",
        "rcfilters-filter-editsbyself-description": "మీ స్వంత దిద్దుబాట్లు.",
        "rcfilters-filter-editsbyother-label": "ఇతరుల దిద్దుబాట్లు",
        "rcfilters-filter-editsbyother-description": "మీరు చేసినవి కాకుండా మిగిలిన దిద్దుబాట్లన్నీ.",
-       "rcfilters-filtergroup-userExpLevel": "అనుభవ స్థాయి (నమోదైన వాడుకరులకు మాత్రమే)",
-       "rcfilters-filter-user-experience-level-registered-label": "నమోదైనది",
+       "rcfilters-filtergroup-userExpLevel": "వాడుకరి నమోదు, అనుభవం",
+       "rcfilters-filter-user-experience-level-registered-label": "నమోదైనవారు",
+       "rcfilters-filter-user-experience-level-registered-description": "లాగినై ఉన్న వాడుకరులు.",
+       "rcfilters-filter-user-experience-level-unregistered-label": "నమోదు కానివారు",
+       "rcfilters-filter-user-experience-level-unregistered-description": "లాగినై లేని వాడుకరులు.",
        "rcfilters-filter-user-experience-level-newcomer-label": "కొత్తవారు",
-       "rcfilters-filter-user-experience-level-newcomer-description": "10 కంటే తక్కువ దిద్దుబాట్లు, 4 రోజుల కంటే తక్కువ పని.",
+       "rcfilters-filter-user-experience-level-newcomer-description": "10 కంటే తక్కువ దిద్దుబాట్లు, 4 రోజుల కంటే తక్కువ పని చేసిన నమోదైన వాడుకరులు.",
        "rcfilters-filter-user-experience-level-learner-label": "నేర్చుకుంటున్నవారు",
-       "rcfilters-filter-user-experience-level-learner-description": "\"కొత్తవారి\" కంటే ఎక్కువ, \"అనుభవజ్ఞులైన వాడుకరుల\" కంటే తక్కువ అనుభవం.",
+       "rcfilters-filter-user-experience-level-learner-description": "అనుభవ స్థాయి \"కొత్తవారి\"కి, \"అనుభవజ్ఞులైన వాడుకరుల\"కూ మధ్యలో ఉన్న వాడుకరులు.",
        "rcfilters-filter-user-experience-level-experienced-label": "అనుభవజ్ఞులైన వాడుకరులు",
-       "rcfilters-filter-user-experience-level-experienced-description": "30 రోజుల కంటే ఎక్కువ పని, 500 పైచిలుకు దిద్దుబాట్లు.",
+       "rcfilters-filter-user-experience-level-experienced-description": "30 రోజుల కంటే ఎక్కువ పని, 500 కు పైగా దిద్దుబాట్లూ చేసిన వాడుకరులు.",
+       "rcfilters-filtergroup-automated": "ఆటోమాటిక్ మార్పులు",
        "rcfilters-filter-bots-label": "బాట్",
+       "rcfilters-filter-bots-description": "ఆటోమాటిక్ ఉపకరణాలు చేసిన మార్పులు.",
+       "rcfilters-filter-humans-label": "మనిషి (బాట్ కాదు)",
+       "rcfilters-filter-humans-description": "మనుష్యులు చేసిన మార్పులు.",
+       "rcfilters-filtergroup-reviewstatus": "సమీక్ష స్థాయి",
+       "rcfilters-filter-patrolled-label": "నిఘాలో ఉన్నవి",
+       "rcfilters-filter-patrolled-description": "నిఘాలో ఉన్నట్లు గుర్తించిన మార్పులు",
+       "rcfilters-filter-unpatrolled-label": "నిఘాలో లేనివి",
+       "rcfilters-filter-unpatrolled-description": "నిఘాలో ఉన్నట్లు గుర్తించని మార్పులు",
        "rcfilters-filtergroup-significance": "ప్రాముఖ్యం",
        "rcfilters-filter-minor-label": "చిన్న మార్పులు",
        "rcfilters-filter-minor-description": "రచయిత చిన్నవిగా గుర్తు పెట్టిన దిద్దుబాట్లు.",
        "rcfilters-filter-major-label": "చిన్నవి కాని దిద్దుబాట్లు",
        "rcfilters-filter-major-description": "చిన్నవిగా గుర్తు పెట్టని దిద్దుబాట్లు.",
+       "rcfilters-filtergroup-watchlist": "వీక్షణలో ఉన్న పేజీలు",
+       "rcfilters-filter-watchlist-watched-label": "వీక్షణజాబితాలో",
+       "rcfilters-filter-watchlist-watched-description": "మీ వీక్షణ జబితాలో ఉన్న పేజీల్లో జరిగిన మార్పులు.",
+       "rcfilters-filter-watchlist-watchednew-label": "కొత్త వీక్షణజాబితా మార్పులు",
+       "rcfilters-filter-watchlist-watchednew-description": "మార్పులు జరిగాక ఇంకా మీరు చూడని మీ వీక్షణజాబితా లోని పేజీలు.",
+       "rcfilters-filter-watchlist-notwatched-label": "వీక్షణజాబితాలో లేనివి",
+       "rcfilters-filter-watchlist-notwatched-description": "మీ వీక్షణజాబితాలో ఉన్న పేజీల్లో జరిగినవి తప్ప మిగతా మార్పులన్నీ.",
+       "rcfilters-filtergroup-watchlistactivity": "వీక్షణజాబితా కార్యకలాపం",
+       "rcfilters-filter-watchlistactivity-unseen-label": "చూడని మార్పులు",
+       "rcfilters-filter-watchlistactivity-unseen-description": "పేజీల్లో మార్పులు జరిగిన తరువాత మీరింకా చూడనివి.",
+       "rcfilters-filter-watchlistactivity-seen-label": "చూసిన మార్పులు",
+       "rcfilters-filter-watchlistactivity-seen-description": "మార్పులు జరిగాక మీరు చూసేసినవి.",
        "rcfilters-filtergroup-changetype": "దిద్దుబాటు రకం",
        "rcfilters-filter-pageedits-label": "పేజీ దిద్దుబాట్లు",
+       "rcfilters-filter-pageedits-description": "వికీ పాఠ్యంలో, చర్చల్లో, వర్గ వివరణల్లో జరిగిన మార్పులు...",
        "rcfilters-filter-newpages-label": "పేజీల సృష్టి",
        "rcfilters-filter-newpages-description": "కొత్త పేజీలను సృష్టించే దిద్దుబాట్లు.",
        "rcfilters-filter-categorization-label": "వర్గాల దిద్దుబాట్లు",
-       "rcfilters-filter-logactions-description": "నిర్వాహక పనులు, ఖాతా పనులు, పేజీ తొలగింపులు, ఎక్కింపులు....",
+       "rcfilters-filter-categorization-description": "వర్గాల్లో చేర్చిన, తీసేసిన పేజీల రికార్డు.",
+       "rcfilters-filter-logactions-label": "చిట్టాల్లోకి చేరిన కార్యకలాపాలు",
+       "rcfilters-filter-logactions-description": "నిర్వాహక పనులు, ఖాతాల సృష్టి, పేజీ తొలగింపులు, ఎక్కింపులు...",
+       "rcfilters-filtergroup-lastRevision": "ఇటీవలి కూర్పులు",
+       "rcfilters-filter-lastrevision-label": "ఇటీవలి కూర్పు",
+       "rcfilters-filter-lastrevision-description": "పేజీలో ఇటీవల జరిగిన చిట్టచివరి మార్పు.",
+       "rcfilters-filter-previousrevision-label": "ఇటీవలి కూర్పు కాదు",
+       "rcfilters-filter-previousrevision-description": "\"చిట్టచివరి కూర్పు\" కాని మార్పులన్నీ.",
+       "rcfilters-filter-excluded": "వదిలేసినవి",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-exclude-button-off": "ఎంచుకున్నవాటిని వదిలెయ్యి",
+       "rcfilters-exclude-button-on": "ఎంచుకున్నవాటిని వదిలేస్తున్నాం",
+       "rcfilters-view-advanced-filters-label": "ఉన్నత వడపోతలు",
+       "rcfilters-view-tags": "ట్యాగ్ ఉన్న మార్పులు",
+       "rcfilters-view-namespaces-tooltip": "ఫలితాలను పేరుబరి ప్రకారం వడపోయి",
        "rcnotefrom": "<strong>$3, $4</strong> తరువాత జరిగిన {{PLURAL:$5|మార్పు|మార్పులు}} కింద ఇచ్చాం (<strong>$1</strong> దాకా చూపించాం).",
-       "rclistfrom": "$3, $2 à°\95à±\81 à°®à±\81à°\82à°¦à±\81  జరిగిన మార్పులను చూపించు",
+       "rclistfrom": "$3, $2 à°¤à±\8b à°®à±\8aదలà±\81à°ªà±\86à°\9fà±\8dà°\9fà°¿ à°\86 à°¤à°°à±\81వాత జరిగిన మార్పులను చూపించు",
        "rcshowhideminor": "చిన్న మార్పులను $1",
        "rcshowhideminor-show": "చూపించు",
        "rcshowhideminor-hide": "దాచు",
        "rcshowhidemine": "నా మార్పులను $1",
        "rcshowhidemine-show": "చూపించు",
        "rcshowhidemine-hide": "దాచు",
-       "rcshowhidecategorization": "à°ªà±\87à°\9cà°¿  వర్గీకరణ $1",
+       "rcshowhidecategorization": "à°ªà±\87à°\9cà±\80 వర్గీకరణ $1",
        "rcshowhidecategorization-show": "చూపించు",
        "rcshowhidecategorization-hide": "దాచు",
        "rclinks": "గత  $2 రోజుల లోని చివరి $1 మార్పులను చూపించు",
        "wantedtemplates": "కావాల్సిన మూసలు",
        "mostlinked": "అధిక లింకులు చూపే పేజీలు",
        "mostlinkedcategories": "అధిక లింకులు చూపే వర్గాలు",
-       "mostlinkedtemplates": "à°\8eà°\95à±\8dà°\95à±\81à°µà°\97à°¾ à°\89పయà±\8bà°\97à°¿à°\82à°\9aిన పేజీలు",
+       "mostlinkedtemplates": "à°\8eà°\95à±\8dà°\95à±\81à°µà°\97à°¾ à°\9fà±\8dరానà±\8dà°¸à±\8dâ\80\8cà°\95à±\8dà°²à±\82à°¡à°¯ిన పేజీలు",
        "mostcategories": "అధిక వర్గాలలో చేరిన వ్యాసాలు",
        "mostimages": "అధిక లింకులు గల బొమ్మలు",
        "mostinterwikis": "అత్యధిక అంతరవికీ లింకులు కలిగిన పేజీలు",
        "protectedpages-unknown-timestamp": "తెలియని",
        "protectedpages-unknown-performer": "తెలియని వాడుకరి",
        "protectedtitles": "సంరక్షిత శీర్షికలు",
-       "protectedtitles-summary": "à°¯à±\80 à°ªà±\87à°\9cà±\80à°²à±\8b à°ªà±\8dà°°à°¸à±\8dà°¤à±\81తానిà°\95à°¿ à°¨à°¿à°°à±\8dమాణà°\82 à°¨à°¿à°·à°¿à°¦à±\8dదమà±\88à°¨ à°¶à±\80à°°à±\8dణిà°\95లనà±\8dà°¨à±\80 à°ªà±\8aà°\82à°¦à±\81పరà°\9aబడà±\8dడాయి.à°ªà±\8dà°°à°¸à±\8dà°¤à±\81à°¤à°\82 à°\89à°¨à±\8dà°¨ à°°à°\95à±\8dà°·à°¿à°¤ à°ªà±\87à°\9cà±\80à°²à°\95à±\8bà°¸à°\82 à°¯à°¿à°\95à±\8dà°\95à°¡ à°\9aà±\82à°¡à°\82à°¡à°¿ [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
+       "protectedtitles-summary": "à°¯à±\80 à°ªà±\87à°\9cà±\80à°²à±\8b à°ªà±\8dà°°à°¸à±\8dà°¤à±\81à°¤à°\82 à°¸à±\83à°·à±\8dà°\9fà°¿à°\82à°\9aà°\95à±\81à°\82à°¡à°¾ à°¨à°¿à°°à±\8bధిà°\82à°\9aబడà±\8dà°¡ à°¶à±\80à°°à±\8dణిà°\95లనà±\8dà°¨à±\80 à°ªà±\8aà°\82à°¦à±\81పరà°\9aబడà±\8dడాయి. à°¸à°\82à°°à°\95à±\8dà°·à°¿à°\82à°\9aబడà±\8dà°¦ à°ªà±\87à°\9cà±\80à°²à°\95à±\8bà°¸à°\82 à°¯à°¿à°\95à±\8dà°\95à°¡ à°\9aà±\82à°¡à°\82à°¡à°¿: [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
        "protectedtitlesempty": "ఈ పరామితులతో ప్రస్తుతం శీర్షికలేమీ సరక్షించబడి లేవు.",
        "listusers": "వాడుకరుల జాబితా",
        "listusers-editsonly": "మార్పులు చేసిన వాడుకరులను మాత్రమే చూపించు",
        "apihelp-no-such-module": "\"$1\" మాడ్యూలు కనబడలేదు.",
        "apisandbox": "API ప్రయోగశాల",
        "apisandbox-api-disabled": "ఈ సైటులో API అచేతనమై ఉంది.",
-       "apisandbox-unfullscreen": "à°ªà±\87à°\9cà±\80à°¨à±\81 చూపించు",
+       "apisandbox-unfullscreen": "à°ªà±\87à°\9cà±\80ని చూపించు",
        "apisandbox-submit": "అభ్యర్ధించు",
        "apisandbox-reset": "తుడిచివేయి",
        "apisandbox-retry": "మళ్ళీ ప్రయత్నించు",
        "listgrants-grant": "గ్రాంటు",
        "listgrants-rights": "హక్కులు",
        "trackingcategories": "పహారా కాయు వర్గాలు",
-       "trackingcategories-msg": "పహారా à°\95ారà±\8dà°¯à±\81 à°µà°°à±\8dà°\97à°®à±\81",
+       "trackingcategories-msg": "పహారా కాయు వర్గము",
        "trackingcategories-name": "సందేశం పేరు",
        "trackingcategories-desc": "వర్గపు చేర్పు క్రైటేరియా",
        "broken-file-category-desc": "ఈ పుటలో విరిగిన దస్త్ర లంకె ఉన్నది (దస్త్రం ఉనికిలో లేనప్పుడు దస్త్రానికి ఎంబెడ్ చేయు లంకె).",
        "protectlogpage": "సంరక్షణల చిట్టా",
        "protectlogtext": "ఈ క్రింద ఉన్నది పేజీల సంరక్షణలకు జరిగిన మార్పుల జాబితా.\nప్రస్తుతం అమలులో ఉన్న సంరక్షణలకై [[Special:ProtectedPages|సంరక్షిత పేజీల జాబితా]]ను చూడండి.",
        "protectedarticle": "\"[[$1]]\" సంరక్షించబడింది.",
-       "modifiedarticleprotection": "\"[[$1]]\" సరక్షణ స్థాయిని మార్చాం",
-       "unprotectedarticle": "\"[[$1]]\" à°¯à±\8aà°\95à±\8dà°\95 à°¸à°\82à°°à°\95à±\8dషణనà±\81 à°¤à±\8aà°²à°\97à°¿à°\82à°\9aారà±\81",
+       "modifiedarticleprotection": "\"[[$1]]\" à°¸à°\82à°°à°\95à±\8dà°·à°£ à°¸à±\8dథాయిని à°®à°¾à°°à±\8dà°\9aà°¾à°\82",
+       "unprotectedarticle": "\"[[$1]]\" à°¯à±\8aà°\95à±\8dà°\95 à°¸à°\82à°°à°\95à±\8dషణనà±\81 à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°¾à°\82",
        "movedarticleprotection": "సంరక్షణా అమరికని \"[[$2]]\" నుండి \"[[$1]]\"కి మార్చారు",
        "protectedarticle-comment": "\"[[$1]]\" ను {{GENDER:$2|సంరక్షించారు}}",
        "modifiedarticleprotection-comment": "\"[[$1]]\" యొక్క {{GENDER:$2|సంరక్షణ స్థాయిని మార్చారు}}",
        "unprotectedarticle-comment": "\"[[$1]]\" ను {{GENDER:$2|సంరక్షణ నుండి తీసివేసారు}}",
-       "protect-title": "\"$1\" à°¯à±\8aà°\95à±\8dà°\95 à°¸à°\82à°°à°\95à±\8dà°·à°£ à°¸à±\8dథాయి à°\85à°®ర్పు",
+       "protect-title": "\"$1\" à°¯à±\8aà°\95à±\8dà°\95 à°¸à°\82à°°à°\95à±\8dà°·à°£ à°¸à±\8dథాయి à°®à°¾ర్పు",
        "protect-title-notallowed": "\"$1\" యొక్క సంరక్షణ స్థాయి",
        "prot_1movedto2": "$1, $2కు తరలించబడింది",
        "protect-badnamespace-title": "సంరక్షించజాలని పేరుబరి",
        "protectcomment": "కారణం:",
        "protectexpiry": "గడువు:",
        "protect_expiry_invalid": "గడువు సమయాన్ని సరిగ్గా ఇవ్వలేదు.",
-       "protect_expiry_old": "à°®à±\80à°°à°¿à°\9aà±\8dà°\9aà°¿à°¨ à°\97à°¡à±\81à°µà±\81 à°ªà±\8dà°°à°¸à±\8dà°¤à±\81à°¤ à°¸à°®à°¯à°\82 à°\95à°\82à°\9fà±\87 à°®à±\81à°\82à°¦à±\81 ఉంది.",
+       "protect_expiry_old": "à°\97à°¡à±\81à°µà±\81 à°\97à°¤ à°\95ాలà°\82à°²à±\8b ఉంది.",
        "protect-unchain-permissions": "మరిన్ని సంరక్షణ వికల్పాలను తెరువు",
        "protect-text": "ఈ పెజీ '''$1''' ఎంత సంరక్షణలొ వుందో మీరు ఇక్కడ చూడవచ్చు, మార్చవచ్చు.",
        "protect-locked-blocked": "నిరోధించబడి ఉండగా మీరు సంరక్షణ స్థాయిని మార్చలేరు. ప్రస్తుతం '''$1''' పేజీకి ఉన్న సెట్టింగులివి:",
        "protect-level-autoconfirmed": "స్వయన్నిర్ధారిత వాడుకరులను మాత్రమే అనుమతించు",
        "protect-level-sysop": "నిర్వాహకులను మాత్రమే అనుమతించు",
        "protect-summary-cascade": "కాస్కేడింగు",
-       "protect-expiring": "$1 (UTC)న కాలంచెల్లుతుంది",
-       "protect-expiring-local": "$1న కాలంచెల్లుతుంది",
+       "protect-expiring": "$1 (UTC)న కాలం చెల్లుతుంది",
+       "protect-expiring-local": "$1న కాలం చెల్లుతుంది",
        "protect-expiry-indefinite": "నిరవధికం",
        "protect-cascade": "ఈ పేజీకి జతపరిచిన పేజీలను కూడా రక్షించు (కాస్కేడింగు రక్షణ)",
        "protect-cantedit": "ఈ పేజీ యొక్క సంరక్షణా స్థాయిని మీరు మార్చలేరు, ఎందుకంటే దాన్ని మార్చే అనుమతి మీకు లేదు.",
        "pagesize": "(బైట్లు)",
        "restriction-edit": "మార్చడం",
        "restriction-move": "తరలించడం",
-       "restriction-create": "à°¸à±\83à°·à±\8dà°\9fà°¿à°\82à°\9aà±\81",
-       "restriction-upload": "à°\8eà°\95à±\8dà°\95à°¿à°\82à°\9aà±\81",
+       "restriction-create": "à°¸à±\83à°·à±\8dà°\9fà°¿à°\82à°\9aà°¡à°\82",
+       "restriction-upload": "à°\8eà°\95à±\8dà°\95à°¿à°\82à°\9aà°¡à°\82",
        "restriction-level-sysop": "పూర్తి సంరక్షణ",
        "restriction-level-autoconfirmed": "అర్థ సంరక్షణ",
        "restriction-level-all": "ఏ స్థాయి అయినా",
        "undelete": "తుడిచివేయబడ్డ పేజీలను చూపించు",
        "undeletepage": "తుడిచివేయబడిన పేజీలను చూపించు, పునఃస్థాపించు",
-       "undeletepagetitle": "'''క్రింద చూపిస్తున్నవి [[:$1]] యొక్క తొలగించిన మార్పులు'''.",
+       "undeletepagetitle": "<strong>క్రింద చూపిస్తున్న వాటిలో [[:$1|$1]] యొక్క తొలగించిన కూర్పు లున్నాయి</strong>.",
        "viewdeletedpage": "తొలగించిన పేజీలను చూడండి",
        "undeletepagetext": "క్రింది {{PLURAL:$1|పేజీని|$1 పేజీలను}} తొలగించారు, కానీ పునఃస్థాపనకు వీలుగా భండాగారంలో ఉన్నాయి.\nభండాగారం నిర్ణీత వ్యవధులలో పూర్తిగా ఖాళీ చేయబడుతుంటుంది.",
        "undelete-fieldset-title": "కూర్పులను పునఃస్థాపించండి",
        "month": "ఈ నెల నుండి (అంతకు ముందువి):",
        "year": "ఈ సంవత్సరం నుండి (అంతకు ముందువి):",
        "sp-contributions-newbies": "కొత్త ఖాతాల యొక్క రచనలని మాత్రమే చూపించు",
-       "sp-contributions-newbies-sub": "కొత్తవారి కోసం",
+       "sp-contributions-newbies-sub": "కొత్త ఖాతాల కోసం",
        "sp-contributions-newbies-title": "కొత్త ఖాతాల వాడుకరుల మార్పుచేర్పులు",
        "sp-contributions-blocklog": "నిరోధాల చిట్టా",
        "sp-contributions-suppresslog": "అణచిపెట్టబడిన {{GENDER:$1|వాడుకరి}} రచనలు",
        "whatlinkshere-hideimages": "$1 దస్త్రపు లంకెలు",
        "whatlinkshere-filters": "వడపోతలు",
        "whatlinkshere-submit": "వెళ్ళు",
-       "autoblockid": "tanaDDu #$1",
+       "autoblockid": "ఆటోనిరోధం #$1",
        "block": "వాడుకరి నిరోధం",
        "unblock": "వాడుకరిపై నిరోధాన్ని తీసెయ్యండి",
        "blockip": "{{GENDER:$1|వాడుకరిని}} నిరోధించు",
        "ipaddressorusername": "ఐపీ చిరునామా లేదా వాడుకరిపేరు:",
        "ipbexpiry": "అంతమయ్యే గడువు",
        "ipbreason": "కారణం:",
-       "ipbreason-dropdown": "*సాధారణ నిరోధ కారణాలు\n** తప్పు సమాచారాన్ని చొప్పించడం\n** పేజీల్లోని సమాచారాన్ని తీసెయ్యడం\n** బయటి సైట్లకు లంకెలతో స్పాము చెయ్యడం\n** పేజీల్లోకి చెత్తను ఎక్కించడం\n** బెదిరింపు ప్రవర్తన/వేధింపులు\n** అనేక ఖాతాలను సృష్టించి దుశ్చర్యకు పాల్పడడం\n** అనుచితమైన వాడుకరి పేరు\n** అదుపు తప్పిన బాటు",
+       "ipbreason-dropdown": "*సాధారణ నిరోధ కారణాలు\n** తప్పు సమాచారాన్ని చొప్పించడం\n** పేజీల్లోని సమాచారాన్ని తీసెయ్యడం\n** బయటి సైట్లకు లంకెలతో స్పాము చెయ్యడం\n** పేజీల్లోకి చెత్తను ఎక్కించడం\n** బెదిరింపు ప్రవర్తన/వేధింపులు\n** అనేక ఖాతాలను సృష్టించి దుశ్చర్యకు పాల్పడడం\n** అనుచితమైన వాడుకరి పేరు",
        "ipb-hardblock": "లాగినై ఉన్న వాడుకరులు ఈ ఐపీ అడ్రసు నుంచి మార్పుచేర్పులు చెయ్యకుండా నిరోధించండి",
-       "ipbcreateaccount": "à°\96ాతా à°¸à±\83à°·à±\8dà°\9fà°¿à°\82à°ªà±\81ని à°¨à°¿à°µà°¾à°°à°¿à°\82à°\9aà±\81",
+       "ipbcreateaccount": "ఖాతా సృష్టిని నివారించు",
        "ipbemailban": "వాడుకరిని ఈ-మెయిల్ చెయ్యకుండా నివారించు",
        "ipbenableautoblock": "ఈ వాడుకరి వాడిన చివరి ఐపీ అడ్రసును, అలాగే ఆ తరువాత వాడే అడ్రసులను కూడా ఆటోమాటిగ్గా నిరోధించు",
        "ipbsubmit": "ఈ సభ్యుని నిరోధించు",
        "ipb-unblock": "వాడుకరి పేరుపై లేదా ఐపీ చిరునామాపై ఉన్న నిరోధాన్ని తొలగించండి",
        "ipb-blocklist": "అమల్లో ఉన్న నిరోధాలను చూపించు",
        "ipb-blocklist-contribs": "{{GENDER:$1|$1}} మార్పులు-చేర్పులు",
-       "ipb-blocklist-duration-left": "$1 మిగిలివున్నాయి",
-       "unblockip": "సభà±\8dà°¯à±\81à°¨ిపై నిరోధాన్ని తొలగించు",
+       "ipb-blocklist-duration-left": "ఇంకా $1 మిగిలి ఉంది.",
+       "unblockip": "వాడà±\81à°\95à°°ిపై నిరోధాన్ని తొలగించు",
        "unblockiptext": "కింది ఫారం ఉపయోగించి, నిరోధించబడిన ఐ.పీ. చిరునామా లేదా సభ్యునికి తిరిగి రచనలు చేసే అధికారం ఇవ్వవచ్చు.",
        "ipusubmit": "ఈ నిరోధాన్ని తొలగించు",
        "unblocked": "[[User:$1|$1]]పై నిరోధం తొలగించబడింది",
        "block-log-flags-noemail": "ఈ-మెయిలుని నిరోధించాం",
        "block-log-flags-nousertalk": "తమ చర్చాపేజీని మార్చలేరు",
        "block-log-flags-angry-autoblock": "మరింత ధృడమైన స్వయంనిరోధకం సచేతనం చేయబడింది",
-       "block-log-flags-hiddenname": "వాడà±\81à°\95à°°à°¿à°ªà±\87à°°à±\81ని à°¦à°¾à°\9aారà±\81",
+       "block-log-flags-hiddenname": "వాడà±\81à°\95à°°à°¿à°ªà±\87à°°à±\81ని à°¦à°¾à°\9aà°¾à°\82",
        "range_block_disabled": "శ్రేణి(రేంజి) నిరోధం చెయ్యగల నిర్వాహక అనుమతిని అశక్తం చేసాం.",
        "ipb_expiry_invalid": "అంతమయ్యే గడువు సరైనది కాదు.",
        "ipb_expiry_temp": "దాచిన వాడుకరిపేరు నిరోధాలు శాశ్వతంగా ఉండాలి.",
index b34927e..168b9db 100644 (file)
        "sp-contributions-newonly": "仅显示创建页面的编辑",
        "sp-contributions-hideminor": "隐藏小编辑",
        "sp-contributions-submit": "搜索",
+       "sp-contributions-outofrange": "无法显示任何结果。请求的IP段大于CIDR限制/$1。",
        "whatlinkshere": "链入页面",
        "whatlinkshere-title": "链接至“$1”的页面",
        "whatlinkshere-page": "页面:",
diff --git a/maintenance/archives/patch-bot_passwords-bp_user-unsigned.sql b/maintenance/archives/patch-bot_passwords-bp_user-unsigned.sql
new file mode 100644 (file)
index 0000000..163609a
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/bot_passwords MODIFY bp_user int unsigned NOT NULL;
\ No newline at end of file
diff --git a/maintenance/archives/patch-change_tag-ct_log_id-unsigned.sql b/maintenance/archives/patch-change_tag-ct_log_id-unsigned.sql
new file mode 100644 (file)
index 0000000..1371c47
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/change_tag MODIFY ct_log_id int unsigned NULL;
\ No newline at end of file
diff --git a/maintenance/archives/patch-change_tag-ct_rev_id-unsigned.sql b/maintenance/archives/patch-change_tag-ct_rev_id-unsigned.sql
new file mode 100644 (file)
index 0000000..b7e1f02
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/change_tag MODIFY ct_rev_id int unsigned NULL;
\ No newline at end of file
diff --git a/maintenance/archives/patch-page_restrictions-pr_user-unsigned.sql b/maintenance/archives/patch-page_restrictions-pr_user-unsigned.sql
new file mode 100644 (file)
index 0000000..2337ff0
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/page_restrictions MODIFY pr_user int unsigned NULL;
diff --git a/maintenance/archives/patch-tag_summary-ts_log_id-unsigned.sql b/maintenance/archives/patch-tag_summary-ts_log_id-unsigned.sql
new file mode 100644 (file)
index 0000000..617073d
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/tag_summary MODIFY ts_log_id int unsigned NULL;
\ No newline at end of file
diff --git a/maintenance/archives/patch-tag_summary-ts_rev_id-unsigned.sql b/maintenance/archives/patch-tag_summary-ts_rev_id-unsigned.sql
new file mode 100644 (file)
index 0000000..e6a5bcd
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/tag_summary MODIFY ts_rev_id int unsigned NULL;
\ No newline at end of file
diff --git a/maintenance/archives/patch-user-newtalk-userid-unsigned.sql b/maintenance/archives/patch-user-newtalk-userid-unsigned.sql
deleted file mode 100644 (file)
index a83e03b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ALTER TABLE /*_*/user_newtalk MODIFY user_id int unsigned NOT NULL default 0;
diff --git a/maintenance/archives/patch-user_newtalk-user_id-unsigned.sql b/maintenance/archives/patch-user_newtalk-user_id-unsigned.sql
new file mode 100644 (file)
index 0000000..a83e03b
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/user_newtalk MODIFY user_id int unsigned NOT NULL default 0;
diff --git a/maintenance/archives/patch-user_properties-up_user-unsigned.sql b/maintenance/archives/patch-user_properties-up_user-unsigned.sql
new file mode 100644 (file)
index 0000000..f4f563f
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE /*_*/user_properties MODIFY up_user int unsigned NOT NULL;
\ No newline at end of file
index bed80db..1813f6c 100644 (file)
@@ -213,7 +213,7 @@ CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip);
 --
 CREATE TABLE /*_*/user_properties (
   -- Foreign key to user.user_id
-  up_user int NOT NULL,
+  up_user int unsigned NOT NULL,
 
   -- Name of the option being saved. This is indexed for bulk lookup.
   up_property varbinary(255) NOT NULL,
@@ -231,7 +231,7 @@ CREATE INDEX /*i*/user_properties_property ON /*_*/user_properties (up_property)
 --
 CREATE TABLE /*_*/bot_passwords (
   -- User ID obtained from CentralIdLookup.
-  bp_user int NOT NULL,
+  bp_user int unsigned NOT NULL,
 
   -- Application identifier
   bp_app_id varbinary(32) NOT NULL,
@@ -1640,7 +1640,7 @@ CREATE TABLE /*_*/page_restrictions (
   -- Whether or not to cascade the protection down to pages transcluded.
   pr_cascade tinyint NOT NULL,
   -- Field for future support of per-user restriction.
-  pr_user int NULL,
+  pr_user int unsigned NULL,
   -- Field for time-limited protection.
   pr_expiry varbinary(14) NULL
 ) /*$wgDBTableOptions*/;
@@ -1692,9 +1692,9 @@ CREATE TABLE /*_*/change_tag (
   -- RCID for the change
   ct_rc_id int NULL,
   -- LOGID for the change
-  ct_log_id int NULL,
+  ct_log_id int unsigned NULL,
   -- REVID for the change
-  ct_rev_id int NULL,
+  ct_rev_id int unsigned NULL,
   -- Tag applied
   ct_tag varchar(255) NOT NULL,
   -- Parameters for the tag, presently unused
@@ -1715,9 +1715,9 @@ CREATE TABLE /*_*/tag_summary (
   -- RCID for the change
   ts_rc_id int NULL,
   -- LOGID for the change
-  ts_log_id int NULL,
+  ts_log_id int unsigned NULL,
   -- REVID for the change
-  ts_rev_id int NULL,
+  ts_rev_id int unsigned NULL,
   -- Comma-separated list of tags
   ts_tags blob NOT NULL
 ) /*$wgDBTableOptions*/;
index 81bfb47..8d0aa05 100644 (file)
                        'liveUpdate',
                        {
                                limit: 1,
+                               peek: 1, // bypasses all UI
                                from: this.changesListModel.getNextFrom()
                        }
                );
 
                counterId = counterId || 'updateChangesList';
                params = params || {};
+               params.action = 'render'; // bypasses MW chrome
 
                uri.extend( params );
 
 
                return $.ajax( uri.toString(), { contentType: 'html' } )
                        .then(
-                               function ( html ) {
+                               function ( html, reason ) {
                                        var $parsed,
                                                pieces;
 
                                                return $.Deferred().reject();
                                        }
 
-                                       $parsed = $( $.parseHTML( html ) );
+                                       if ( params.peek && reason === 'notmodified' ) {
+                                               return {
+                                                       changes: 'NO_RESULTS'
+                                               };
+                                       }
+
+                                       // Because of action=render, the response is a list of nodes.
+                                       // It has to be put under a root node so it can be queried.
+                                       $parsed = $( '<div>' ).append( $( $.parseHTML( html ) ) );
 
                                        pieces = {
                                                // Changes list
index c09ca1e..b6fb0bb 100644 (file)
                        color: #54595d;
                        .box-sizing( border-box );
                        display: inline-block;
-                       line-height: normal;
                }
        }
 
        &-whatsThisButton {
                margin-left: 1.5em;
-               &.oo-ui-buttonElement {
-                       vertical-align: text-bottom;
-
-                       & > .oo-ui-buttonElement-button {
-                               font-weight: normal;
-                               // Override OOUI's definitions for button
-                               border-color: transparent;
-                               padding: 0;
-
-                               &:focus {
-                                       box-shadow: none;
-                                       outline: 0;
-                               }
+
+               &.oo-ui-buttonElement > .oo-ui-buttonElement-button {
+                       font-weight: normal;
+                       border: 0; // Override OOUI `border` needed for frameless keyboard focus
+                       padding: 0;
+
+                       &:focus {
+                               box-shadow: none;
+                               outline: 0;
                        }
                }
 
diff --git a/skins/CologneBlue b/skins/CologneBlue
new file mode 160000 (submodule)
index 0000000..4822f11
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 4822f110209e134e98a1e9fa43aca1faa697cffb
diff --git a/skins/MinervaNeue b/skins/MinervaNeue
new file mode 160000 (submodule)
index 0000000..8598c39
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 8598c39cc2d78a9fe5d1f634a15d28f8e7aa59d4
diff --git a/skins/Modern b/skins/Modern
new file mode 160000 (submodule)
index 0000000..b6fb602
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit b6fb6020bac22a9f5fcdc3fb82034183ab3da2a8
diff --git a/skins/MonoBook b/skins/MonoBook
new file mode 160000 (submodule)
index 0000000..fa867dc
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit fa867dc527a97543cd9d9f1fe566a71e34f29a35
diff --git a/skins/Nostalgia b/skins/Nostalgia
new file mode 160000 (submodule)
index 0000000..c8fff6a
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit c8fff6afacddf905b6dbbecf13a0115a610437b0
diff --git a/skins/Timeless b/skins/Timeless
new file mode 160000 (submodule)
index 0000000..d987710
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit d987710180aa683e9351f0d854f5d6a0fb7c7f3b
diff --git a/skins/Vector b/skins/Vector
new file mode 160000 (submodule)
index 0000000..100ec7e
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 100ec7e9a2758015f0afa348796a3ddf08953e99
index 82d195a..3f93793 100644 (file)
@@ -109,6 +109,13 @@ Template:echo
 {{{1}}}
 !! endarticle
 
+// For Serbian; localize Template namespace
+!! article
+Шаблон:Echo
+!! text
+{{{1}}}
+!! endarticle
+
 !! article
 Template:echo_with_span
 !! text
@@ -278,6 +285,12 @@ Template:CircularRef
 <ref>{{CircularRef}}</ref>
 !! endarticle
 
+!! article
+Template:With: Colon
+!! text
+Template with colon
+!! endarticle
+
 ###
 ### Basic tests
 ###
@@ -1855,6 +1868,19 @@ parsoid=wt2html,wt2wt
 </ul>
 !! end
 
+## Make sure ">" gets escaped in comments to avoid XSS
+!! test
+IE conditional comments
+!! wikitext
+<!--[if lt IE 9]>
+       <script>alert('hi');</script>
+<![endif]-->
+!! html/parsoid
+<!--[if lt IE 9]&#x3E;
+       <script&#x3E;alert('hi');</script&#x3E;
+<![endif]-->
+!! end
+
 ###
 ### paragraph wrapping tests
 ###
@@ -2818,7 +2844,7 @@ Templates: Handle comments in the target
 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo&lt;!-- should be ignored -->","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
 
 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</p>
-!!end
+!! end
 
 !! test
 Templates: Handle comments in parameter names (T69657)
@@ -2848,7 +2874,7 @@ Templates: Handle comments in parameter names (T69657)
 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"1&lt;!-- should be ignored -->"}}},"i":0}}]}'>foo</p>
 
 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo","key":{"wt":"&lt;!-- should be ignored -->1"}}},"i":0}}]}'>foo</p>
-!!end
+!! end
 
 !! test
 Templates: Other wikitext in parameter names (T69657)
@@ -2859,11 +2885,23 @@ Templates: Other wikitext in parameter names (T69657)
 </p>
 !! html/parsoid
 <p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"&#39;&#39;1&#39;&#39;":{"wt":"foo"}},"i":0}}]}'>{{{1}}}</p>
-!!end
+!! end
+
+!! test
+Templates: With colons
+!! wikitext
+{{With: Colon}}
+!! html/php
+<p>Template with colon
+</p>
+!! html/parsoid
+<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"With: Colon","href":"./Template:With:_Colon"},"params":{},"i":0}}]}'>Template with colon</p>
+!! end
 
 #--------------------------------------------------------------------
 # Transclusion parameter escaping tests
 #--------------------------------------------------------------------
+
 !! test
 Templates: Parsoid parameter escaping test 1
 !! wikitext
@@ -7719,13 +7757,16 @@ Piped link with extlink-like text
 !! wikitext
 [[Main Page|[bar]]]
 [[Main Page|This is a [bar]]]
+[[Main Page|[bar]]
 !! html/php
 <p><a href="/wiki/Main_Page" title="Main Page">[bar]</a>
 <a href="/wiki/Main_Page" title="Main Page">This is a [bar]</a>
+<a href="/wiki/Main_Page" title="Main Page">[bar</a>
 </p>
 !! html/parsoid
 <p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"piped"}'>[bar]</a>
-<a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"piped"}'>This is a [bar]</a></p>
+<a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"piped"}'>This is a [bar]</a>
+<a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"piped"}'>[bar</a></p>
 !! end
 
 !! test
@@ -8065,7 +8106,6 @@ Plain link to page with question mark in title
 </p>
 !! end
 
-
 # I'm fairly sure the expected result here is wrong.
 # We want these to be URL links, not pseudo-pages with URLs for titles....
 # However the current output is also pretty screwy.
@@ -8088,6 +8128,34 @@ Piped link to URL: [[http://www.example.com|an example URL]]
 <p>Piped link to URL: [<a rel="mw:ExtLink" href="http://www.example.com%7Can" data-parsoid='{"a":{"href":"http://www.example.com%7Can"},"sa":{"href":"http://www.example.com|an"}}'>example URL</a>]</p>
 !! end
 
+!! test
+Plain link in template argument
+!! options
+parsoid=wt2html
+!! wikitext
+{{echo|[http://www.example.com |123]}}
+
+{{echo|[[http://www.example.com |123]]}}
+
+{{echo|[[http://www.example.com |123]}}
+
+{{echo|[http://www.example.com |123]]}}
+!! html/php
+<p>[<a rel="nofollow" class="external free" href="http://www.example.com">http://www.example.com</a> 
+</p><p>[<a rel="nofollow" class="external text" href="http://www.example.com">|123</a>]
+</p><p>{{echo|[<a rel="nofollow" class="external text" href="http://www.example.com">|123</a>}}
+</p><p>[<a rel="nofollow" class="external free" href="http://www.example.com">http://www.example.com</a> 
+</p>
+!! html/parsoid
+<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://www.example.com "},"2":{"wt":"123]"}},"i":0}}]}'>[<a rel="mw:ExtLink" href="http://www.example.com">http://www.example.com</a> </p>
+
+<p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[http://www.example.com |123]]"}},"i":0}}]}'>[<a rel="mw:ExtLink" href="http://www.example.com">|123</a>]</p>
+
+<p>{{echo|[<a rel="mw:ExtLink" href="http://www.example.com" data-parsoid='{"targetOff":114,"contentOffsets":[114,118],"dsr":[90,119,24,1]}'>|123</a>}}</p>
+
+<p about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://www.example.com "},"2":{"wt":"123]]"}},"i":0}}]}'>[<a rel="mw:ExtLink" href="http://www.example.com">http://www.example.com</a> </p>
+!! end
+
 !! test
 T2002: [[page|http://url/]] should link to page, not http://url/
 !! wikitext
@@ -8172,6 +8240,33 @@ Non-breaking spaces in title
 </p>
 !!end
 
+# Add new article for the test below so that it doesn't red-link
+!! article
+Foo bar baz
+!! text
+boo
+!! endarticle
+
+!! test
+Multiple spaces in titles should normalize to a single underscore
+!! options
+parsoid=wt2html,wt2wt
+!! wikitext
+[[Foo bar baz|x]]
+[[Foo  bar baz|x]]
+[[Foo  bar   baz|x]]
+!! html/php
+<p><a href="/wiki/Foo_bar_baz" title="Foo bar baz">x</a>
+<a href="/wiki/Foo_bar_baz" title="Foo bar baz">x</a>
+<a href="/wiki/Foo_bar_baz" title="Foo bar baz">x</a>
+</p>
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Foo_bar_baz" title="Foo bar baz">x</a>
+<a rel="mw:WikiLink" href="./Foo_bar_baz" title="Foo bar baz">x</a>
+<a rel="mw:WikiLink" href="./Foo_bar_baz" title="Foo bar baz">x</a>
+</p>
+!! end
+
 !! test
 Internal link with ca linktrail, surrounded by bold apostrophes (T29473 primary issue)
 !! options
@@ -8743,6 +8838,8 @@ Blah blah blah
 
 !! test
 Multiple colons escaping interlanguage links
+!! options
+parsoid=wt2html
 !! wikitext
 [[:es:Spanish]]
 [[::es:Spanish]]
@@ -8752,6 +8849,10 @@ Multiple colons escaping interlanguage links
 [[::es:Spanish]]
 [[:::es:Spanish]]
 </p>
+!! html/parsoid
+<p><a rel="mw:ExtLink" href="http://es.wikipedia.org/wiki/Spanish" title="es:Spanish">es:Spanish</a>
+[[::es:Spanish]]
+[[:::es:Spanish]]</p>
 !! end
 
 ## parsoid html2wt will normalize the space to _
@@ -9155,8 +9256,6 @@ some text
 <ol data-parsoid='{}'><li data-parsoid='{}'>redirect <a rel="mw:WikiLink" href="./Main_Page" title="Main Page" data-parsoid='{"stx":"simple","a":{"href":"./Main_Page"},"sa":{"href":"Main Page"}}'>Main Page</a></li></ol>
 !! end
 
-# FIXME: Should hoist the redirect to the top of the page and ensure there
-# is only one.
 !! test
 New redirect
 !! options
@@ -9164,7 +9263,53 @@ parsoid=html2wt
 !! html/parsoid
 <p>Foo<link rel="mw:PageProp/redirect" href="./Foo"/></p>
 !! wikitext
+#REDIRECT [[Foo]]
 Foo
+!! end
+
+!! test
+Redirect followed by block on the same line
+!! options
+parsoid=wt2html
+!! wikitext
+#REDIRECT [[Main Page]]<!-- haha -->== hi ==
+!! html/parsoid
+<link rel="mw:PageProp/redirect" href="./Main_Page"/><!-- haha --><h2 id="hi"> hi </h2>
+!! end
+
+!! test
+Redirect followed by a newline
+!! wikitext
+#REDIRECT [[Main Page]]
+A newline
+!! html/parsoid
+<link rel="mw:PageProp/redirect" href="./Main_Page"/>
+<p>A newline</p>
+!! end
+
+!! test
+Redirect followed by multiple newlines
+!! wikitext
+#REDIRECT [[Main Page]]
+
+
+A newline
+!! html/parsoid
+<link rel="mw:PageProp/redirect" href="./Main_Page"/>
+
+<p><br/>
+A newline</p>
+!! end
+
+!! test
+Drop duplicate redirects
+!! options
+parsoid=html2wt
+!! html/parsoid
+<link rel="mw:PageProp/redirect" href="./Foo"/>
+<link rel="mw:PageProp/redirect" href="./Bar"/>
+<link rel="mw:PageProp/redirect" href="./Baz"/>
+!! wikitext
 #REDIRECT [[Foo]]
 !! end
 
@@ -11892,6 +12037,8 @@ parsoid
 ##{{[[-{{{{{{[[Foo|bar}}]]}-}}}}}]]
 !! test
 Preprocessor precedence 1: link is rightmost opening
+!! options
+parsoid=wt2html
 !! wikitext
 {{[[Foo|bar}}]]
 
@@ -11900,13 +12047,17 @@ But close-brace is not a valid character in a link title:
 
 However, we can still tell this was handled as a link in the preprocessor:
 {{echo|[[Foo}}|bar]]|bat}}
-!! html
+!! html/php
 <p>{{<a href="/wiki/Foo" title="Foo">bar}}</a>
 </p><p>But close-brace is not a valid character in a link title:
 {{[[Foo}}|bar]]
 </p><p>However, we can still tell this was handled as a link in the preprocessor:
 [[Foo}}|bar]]
 </p>
+!! html/parsoid
+<p>{{<a rel="mw:WikiLink" href="./Foo" title="Foo">bar}}</a></p>
+<p>But close-brace is not a valid character in a link title: {{[[Foo}}|bar]]</p>
+<p>However, we can still tell this was handled as a link in the preprocessor: <span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Foo}}|bar]]"},"2":{"wt":"bat"}},"i":0}}]}'>[[Foo}}|bar]]</span></p>
 !! end
 
 !! test
@@ -11915,26 +12066,33 @@ Preprocessor precedence 2: template is rightmost opening
 language=zh
 !! wikitext
 -{{echo|foo}-}}-
-!! html
+!! html/php
 <p>-foo}--
 </p>
+!! html/parsoid
+<p>-<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo}-"}},"i":0}}]}'>foo}-</span>-</p>
 !! end
 
 !! test
 Preprocessor precedence 3: language converter is rightmost opening
 !! options
 language=zh
+parsoid=wt2html
 !! wikitext
 {{echo|hi}}
 
 {{-{R|echo|hi}}}-
 
 [[-{R|raw]]}-
-!! html
+!! html/php
 <p>hi
 </p><p>{{echo|hi}}
 </p><p>[[raw]]
 </p>
+!! html/parsoid
+<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi"}},"i":0}}]}'>hi</p>
+<p>{{<span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"echo|hi}}"}}'></span></p>
+<p>[[<span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"raw]]"}}'></span></p>
 !! end
 
 !! test
@@ -11943,7 +12101,9 @@ Preprocessor precedence 4: left-most angle bracket
 language=zh
 !! wikitext
 <!--{raw}-->
-!! html
+!! html/php
+!! html/parsoid
+<!--{raw}-->
 !! end
 
 !! article
@@ -11956,21 +12116,28 @@ Template:Precedence5
 Preprocessor precedence 5: tplarg takes precedence over template
 !! wikitext
 {{Precedence5|Bullet}}
-!! html
+!! html/php
 <ul><li> Bar</li></ul>
 
+!! html/parsoid
+<ul typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Precedence5","href":"./Template:Precedence5"},"params":{"1":{"wt":"Bullet"}},"i":0}}]}'><li> Bar</li></ul>
 !! end
 
 !! test
 Preprocessor precedence 6: broken link is rightmost opening
+!! options
+parsoid=wt2html
 !! wikitext
 {{echo|[[Foo}}
 
 {{echo|[[Foo|bar|bat=baz}}
-!! html
+!! html/php
 <p>{{echo|[[Foo}}
 </p><p>{{echo|[[Foo|bar|bat=baz}}
 </p>
+!! html/parsoid
+<p>{{echo|[[Foo}}</p>
+<p>{{echo|[[Foo|bar|bat=baz}}</p>
 !! end
 
 # This next test exposes a difference between PHP and Parsoid:
@@ -11995,6 +12162,8 @@ Preprocessor precedence 6: broken link is rightmost opening
 
 !! test
 Preprocessor precedence 7: broken template is rightmost opening
+!! options
+parsoid=wt2html
 !! wikitext
 [[Foo|{{echo|Bar]]
 
@@ -12002,12 +12171,17 @@ Preprocessor precedence 7: broken template is rightmost opening
 
 Careful: linktrails can move the end of the wikilink:
 [[Foo|{{echo|y']]a}}l]]l
-!! html
+!! html/php
 <p><a href="/wiki/Foo" title="Foo">{{echo|Bar</a>
 </p><p><a href="/wiki/Foo" title="Foo">Bar</a>-x-y]]-z
 </p><p>Careful: linktrails can move the end of the wikilink:
 <a href="/wiki/Foo" title="Foo">y'al</a>]]l
 </p>
+!! html/parsoid
+<p>[[Foo|{{echo|Bar]]</p>
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo"><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Bar]]-x"}},"i":0}}]}'>Bar]]-x</span>-y</a>-z</p>
+<p>Careful: linktrails can move the end of the wikilink:
+<a rel="mw:WikiLink" href="./Foo" title="Foo"><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"y&#39;]]a"}},"i":0}}]}'>y']]a</span>ll</a></p>
 !! end
 
 !! test
@@ -12034,7 +12208,7 @@ Template:Preprocessor_precedence_9
 Preprocessor precedence 9: groups of braces
 !! wikitext
 {{Preprocessor precedence 9|Four|Bullet|1|2}}
-!! html
+!! html/php
 <dl><dt>4</dt>
 <dd> {Four}</dd>
 <dt>5</dt>
@@ -12045,6 +12219,20 @@ Preprocessor precedence 9: groups of braces
 <dt>7</dt>
 <dd> {Bullet}</dd></dl>
 
+!! html/parsoid
+<dl about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Preprocessor precedence 9","href":"./Template:Preprocessor_precedence_9"},"params":{"1":{"wt":"Four"},"2":{"wt":"Bullet"},"3":{"wt":"1"},"4":{"wt":"2"}},"i":0}}]}'>
+<dt>4</dt>
+<dd>{Four}</dd>
+<dt>5</dt>
+<dd></dd>
+</dl><ul about="#mwt1">
+<li>Bar</li>
+</ul><span about="#mwt1"> </span><dl about="#mwt1">
+<dt>6</dt>
+<dd>Four</dd>
+<dt>7</dt>
+<dd>{Bullet}</dd>
+</dl>
 !! end
 
 !! article
@@ -12065,7 +12253,7 @@ Preprocessor precedence 10: groups of braces with leading dash
 language=zh
 !! wikitext
 {{Preprocessor precedence 10|Three|raw2|Bullet|1|2}}
-!! html
+!! html/php
 <dl><dt>1</dt>
 <dd> raw</dd>
 <dt>2</dt>
@@ -12083,6 +12271,29 @@ language=zh
 <dt>7</dt>
 <dd> raw2</dd></dl>
 
+!! html/parsoid
+<dl about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Preprocessor precedence 10","href":"./Template:Preprocessor_precedence_10"},"params":{"1":{"wt":"Three"},"2":{"wt":"raw2"},"3":{"wt":"Bullet"},"4":{"wt":"1"},"5":{"wt":"2"}},"i":0}}]}'>
+<dt>1</dt>
+<dd><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"raw"}}'></span></dd>
+<dt>2</dt>
+<dd>-</dd>
+</dl><ul about="#mwt1">
+<li>Bar-</li>
+</ul><span about="#mwt1"> </span><dl about="#mwt1">
+<dt>3</dt>
+<dd>-Three-</dd>
+<dt>4</dt>
+<dd><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"raw2"}}'></span></dd>
+<dt>5</dt>
+<dd>-</dd>
+</dl><ul about="#mwt1">
+<li>Bar-</li>
+</ul><span about="#mwt1"> </span><dl about="#mwt1">
+<dt>6</dt>
+<dd>-Three-</dd>
+<dt>7</dt>
+<dd><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"raw2"}}'></span></dd>
+</dl>
 !! end
 
 !! test
@@ -12093,15 +12304,23 @@ Preprocessor precedence 11: found during visual diff testing
 {{echo|-{{echo|-{{echo|x}}}}}}
 
 {{echo|-{{echo|x}}}}
-!! html
+!! html/php
 <p><span>-<span>-x</span></span>
 </p><p>--x
 </p><p>-x
 </p>
+!! html/parsoid
+<p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"#tag:span","function":"tag"},"params":{"1":{"wt":"-{{#tag:span|-{{echo|x}}}}"}},"i":0}}]}'>-<span>-x</span></span></p>
+
+<p about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"-{{echo|-{{echo|x}}}}"}},"i":0}}]}'>--x</p>
+
+<p about="#mwt7" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"-{{echo|x}}"}},"i":0}}]}'>-x</p>
 !! end
 
 !! test
 Preprocessor precedence 12: broken language converter closed by brace.
+!! options
+parsoid=wt2html
 !! wikitext
 This form breaks the template, which is unfortunate:
 * {{echo|foo-{bar}bat}}
@@ -12116,7 +12335,7 @@ tag, nothing bad happens:
 <tag>foo-{bar}bat</tag>
 {{echo|<tag>foo-{bar}bat</tag>}}
 
-!! html+tidy
+!! html/php+tidy
 <p>This form breaks the template, which is unfortunate:</p>
 <ul>
 <li>{{echo|foo-{bar}bat}}</li>
@@ -12144,38 +12363,67 @@ array (
 array (
 )
 </pre>
+!! html/parsoid
+<p>This form breaks the template, which is unfortunate:</p>
+<ul>
+<li>{{echo|foo-{bar}bat}}</li>
+</ul>
+<p>But if the broken language converter markup is inside an extension tag, nothing bad happens:</p>
+<ul>
+<li><span typeof="mw:Nowiki">foo-{bar}bat</span></li>
+<li><span typeof="mw:Transclusion mw:Nowiki" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;nowiki>foo-{bar}bat&lt;/nowiki>"}},"i":0}}]}'>foo-{bar}bat</span></li>
+<li><pre typeof="mw:Extension/pre" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"foo-{bar}bat"}}'>foo-{bar}bat</pre></li>
+<li><pre typeof="mw:Transclusion mw:Extension/pre" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;pre>foo-{bar}bat&lt;/pre>"}},"i":0}}]}'>foo-{bar}bat</pre></li>
+</ul>
+<pre typeof="mw:Extension/tag" data-mw='{"name":"tag","attrs":{},"body":{"extsrc":"foo-{bar}bat"}}'></pre> <pre typeof="mw:Extension/tag mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;tag>foo-{bar}bat&lt;/tag>"}},"i":0}}]}'></pre>
 !! end
 
 !! test
-Preprocessor precedence, 13: broken language converter in external link
+Preprocessor precedence 13: broken language converter in external link
+!! options
+parsoid=wt2html
 !! wikitext
 * [http://example.com/-{foo Example in URL]
 * [http://example.com Example in -{link} description]
 * {{echo|[http://example.com/-{foo Breaks template, however]}}
-!! html+tidy
+!! html/php+tidy
 <ul>
 <li><a rel="nofollow" class="external text" href="http://example.com/-{foo">Example in URL</a></li>
 <li><a rel="nofollow" class="external text" href="http://example.com">Example in -{link} description</a></li>
 <li>{{echo|<a rel="nofollow" class="external text" href="http://example.com/-{foo">Breaks template, however</a>}}</li>
 </ul>
+!! html/parsoid
+<ul>
+<li><a rel="mw:ExtLink" href="http://example.com/-{foo">Example in URL</a></li>
+<li><a rel="mw:ExtLink" href="http://example.com">Example in -{link} description</a></li>
+<li>{{echo|<a rel="mw:ExtLink" href="http://example.com/-{foo">Breaks template, however</a>}}</li>
+</ul>
 !! end
 
 !! test
-Preprocessor precedence, 14: broken language converter in comment
+Preprocessor precedence 14: broken language converter in comment
 !! wikitext
 * <!--{{foo}}--> ...should be ok
 * <!---{{foo}}--> ...extra dashes
 * {{echo|foo<!-- -{bar} -->bat}} ...should be ok
-!! html+tidy
+!! html/php+tidy
 <ul>
 <li>...should be ok</li>
 <li>...extra dashes</li>
 <li>foobat ...should be ok</li>
 </ul>
+!! html/parsoid
+<ul>
+<li><!--{{foo}}--> ...should be ok</li>
+<li><!--&#x2D;{{foo}}--> ...extra dashes</li>
+<li><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo&lt;!-- -{bar} -->bat"}},"i":0}}]}'>foo</span><span about="#mwt1"><!-- &#x2D;{bar} --></span><span about="#mwt1">bat</span> ...should be ok</li>
+</ul>
 !! end
 
 !! test
-Preprocessor precedence, 15: broken brace markup in headings
+Preprocessor precedence 15: broken brace markup in headings
+!! options
+parsoid=wt2html
 !! wikitext
 __NOTOC__ __NOEDITSECTION__
 ===1 foo[bar 1===
@@ -12190,7 +12438,7 @@ __NOTOC__ __NOEDITSECTION__
 5
 ===6 foo-{bar 6===
 6
-!! html+tidy
+!! html/php+tidy
 <h3><span class="mw-headline" id="1_foo.5Bbar_1">1 foo[bar 1</span></h3>
 <p>1</p>
 <h3><span class="mw-headline" id="2_foo.5B.5Bbar_2">2 foo[[bar 2</span></h3>
@@ -12203,6 +12451,35 @@ __NOTOC__ __NOEDITSECTION__
 <p>5</p>
 <h3><span class="mw-headline" id="6_foo-.7Bbar_6">6 foo-{bar 6</span></h3>
 <p>6</p>
+!! html/parsoid
+<meta property="mw:PageProp/notoc"/> <meta property="mw:PageProp/noeditsection"/
+>
+<h3>1 foo[bar 1</h3>
+<p>1</p>
+<h3>2 foo[[bar 2</h3>
+<p>2</p>
+<h3>3 foo{bar 3</h3>
+<p>3</p>
+<h3>4 foo{{bar 4</h3>
+<p>4</p>
+<h3>5 foo{{{bar 5</h3>
+<p>5</p>
+<h3>6 foo-{bar 6</h3>
+<p>6</p>
+!! end
+
+!! test
+Preprocessor precedence 16: matching closing braces to opening braces
+!! options
+language=zh
+parsoid=wt2html
+!! wikitext
+-{{{echo|foo}}bar}-
+!! html/php
+<p>foobar
+</p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[2,14,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"foo\"}},\"i\":0}}]}&#39;>foo&lt;/span>bar"}}'></span></p>
 !! end
 
 ###
@@ -13141,6 +13418,14 @@ Templates: Parameters substituted at the top-level
 <p about="#mwt3" typeof="mw:Param" data-mw='{"parts":[{"templatearg":{"target":{"wt":"foo"},"params":{"1":{"wt":"bar"},"2":{"wt":"baz"}},"i":0}}]}'>bar</p>
 !! end
 
+!! test
+Templates: Param with empty arg in the final position
+!! wikitext
+{{{hi|}}}
+!! html/parsoid
+<span about="#mwt1" typeof="mw:Param" data-mw='{"parts":[{"templatearg":{"target":{"wt":"hi"},"params":{"1":{"wt":""}},"i":0}}]}'></span>
+!! end
+
 !!test
 Parser Functions: 1. Simple example
 !! wikitext
@@ -13884,6 +14169,16 @@ parsoid=wt2html,wt2wt,html2html
 <p><span class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
+!! test
+Serialize simple image with figure-inline wrapper
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
+!! wikitext
+[[File:Foobar.jpg]]
+!! end
+
 !! test
 Simple image (using File: namespace, now canonical)
 !! wikitext
@@ -14503,7 +14798,7 @@ parsoid=wt2html,wt2wt,html2html
 #    enlarged.
 
 !! test
-Image: "unspecified format" and border enlarge
+Image: unspecified format and border enlarge
 !! options
 parsoid=wt2html,wt2wt,html2html
 !! wikitext
@@ -14515,8 +14810,8 @@ parsoid=wt2html,wt2wt,html2html
 </p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="2000" height="227" class="thumbborder" /></a>
 </p>
 !! html/parsoid
-<p><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="227" width="2000"/></a></span></p>
-<p><span class="mw-image-border" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="227" width="2000"/></a></span></p>
+<p><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="227" width="2000"/></a></span></p>
+<p><span class="mw-image-border" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="227" width="2000"/></a></span></p>
 !! end
 
 !! test
@@ -14562,8 +14857,8 @@ parsoid=wt2html,wt2wt,html2html
 <div class="thumb tright"><div class="thumbinner" style="width:2002px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div></div></div></div>
 
 !! html/parsoid
-<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
-<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg" data-file-width="240" data-file-height="180" data-file-type="drawing" height="1500" width="2000"/></a></figure>
+<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure>
+<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" data-file-width="240" data-file-height="180" data-file-type="drawing" height="1500" width="2000"/></a></figure>
 !! end
 
 !! test
@@ -14592,8 +14887,8 @@ parsoid=wt2html,wt2wt,html2html
 </p><p><a href="/wiki/File:Foobar.svg" class="image"><img alt="Foobar.svg" src="http://example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" width="2000" height="1500" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/3000px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/4000px-Foobar.svg.png 2x" /></a>
 </p>
 !! html/parsoid
-<p><span typeof="mw:Image/Frameless"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/1941px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
-<p><span typeof="mw:Image/Frameless"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/240px-Foobar.svg" data-file-width="240" data-file-height="180" data-file-type="drawing" height="1500" width="2000"/></a></span></p>
+<p><span typeof="mw:Image/Frameless"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span typeof="mw:Image/Frameless"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/2000px-Foobar.svg.png" data-file-width="240" data-file-height="180" data-file-type="drawing" height="1500" width="2000"/></a></span></p>
 !! end
 
 !! test
@@ -14690,7 +14985,7 @@ SVG thumbnails with no language set
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg.png" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
 !! end
 
 !! test
@@ -14703,7 +14998,7 @@ parsoid=wt2html,wt2wt,html2html
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="135" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"></a></div>caption</div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg" lang="de" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.svg"><img resource="./File:Foobar.svg" src="//example.com/images/thumb/f/ff/Foobar.svg/220px-Foobar.svg.png" lang="de" data-file-width="240" data-file-height="180" data-file-type="drawing" height="165" width="220"/></a><figcaption>caption</figcaption></figure>
 !! end
 
 !! test
@@ -16811,6 +17106,24 @@ HTML tag with leading space is parsed as text
 </p>
 !! end
 
+## Don't expect Parsoid and PHP to match, since PHP isn't exactly following
+## the HTML5 parsing spec.
+!! test
+Element with broken attribute syntax
+!! options
+parsoid=wt2html
+!! wikitext
+<div style=" style="123">hi</div>
+<div =>ho</div>
+!! html/php
+<div style="123">hi</div>
+<div>ho</div>
+
+!! html/parsoid
+<div style=" style=" data-parsoid='{"stx":"html","a":{"123\"":null},"sa":{"123\"":""}}'>hi</div>
+<div data-parsoid='{"stx":"html","a":{"=":null},"sa":{"=":""}}'>ho</div>
+!! end
+
 ###
 ### Nesting tests (see T43545, T52604, T53081)
 ###
@@ -16899,11 +17212,17 @@ Nesting of <bdo>
 Media link
 !! wikitext
 [[Media:Foobar.jpg]]
+[[Media:Video.ogv]]
+[[:Media:Video.ogv]]
 !! html/php
 <p><a href="http://example.com/images/3/3a/Foobar.jpg" class="internal" title="Foobar.jpg">Media:Foobar.jpg</a>
+<a href="http://example.com/images/0/00/Video.ogv" class="internal" title="Video.ogv">Media:Video.ogv</a>
+<a href="http://example.com/images/0/00/Video.ogv" class="internal" title="Video.ogv">Media:Video.ogv</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" title="Foobar.jpg">Media:Foobar.jpg</a></p>
+<p><a rel="mw:MediaLink" href="//example.com/images/3/3a/Foobar.jpg" title="Foobar.jpg">Media:Foobar.jpg</a>
+<a rel="mw:MediaLink" href="//example.com/images/0/00/Video.ogv" title="Video.ogv">Media:Video.ogv</a>
+<a rel="mw:MediaLink" href="//example.com/images/0/00/Video.ogv" title="Video.ogv" data-parsoid='{"a":{"namespace":"Media"},"sa":{"namespace":":Media"}}'>Media:Video.ogv</a></p>
 !! end
 
 !! test
@@ -16970,8 +17289,6 @@ Image link to nonexistent file (T3850 - good)
 <p><a rel="mw:WikiLink" href="./File:No_such.jpg" title="File:No such.jpg">Image:No such.jpg</a></p>
 !! end
 
-
-
 !! test
 Character reference normalization in link text (T3938)
 !! wikitext
@@ -17967,12 +18284,17 @@ but if we add a conversion instance: -{zh-cn:xxx;zh-tw:yyy}-
 then we get cut off here: }-
 
 all additional text is vanished
-!! html
+!! html/php
 <p>this bit is safe: }-
 </p><p>but if we add a conversion instance: xxx
 </p><p>then we get cut off here: }-
 </p><p>all additional text is vanished
 </p>
+!! html/parsoid
+<p>this bit is safe: }-</p>
+<p>but if we add a conversion instance: <span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"twoway":[{"l":"zh-cn","t":"xxx"},{"l":"zh-tw","t":"yyy"}]}'></span></p>
+<p>then we get cut off here: }-</p>
+<p>all additional text is vanished</p>
 !! end
 
 !! test
@@ -19679,7 +20001,7 @@ File:File:Foobar.jpg
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" type="123" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{"type":"123","summary":"345"},"body":{"extsrc":"\nFile:File:Foobar.jpg\n"}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">File:File:Foobar.jpg</span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:File:Foobar.jpg"><img resource="./File:File:Foobar.jpg" src="./Special:FilePath/File:Foobar.jpg" height="120" width="120"/></a></span></div><div class="gallerytext"></div></li>
 </ul>
 !! end
 
@@ -19742,12 +20064,12 @@ image4    |300px| centre
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt3" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">image1.png </span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">image2.gif</span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">image3</span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">image4    </span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;"> image5.svg</span></div><div class="gallerytext"> <a rel="mw:ExtLink" href="http://///////">http://///////</a></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">* image6</span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:Image1.png"><img resource="./File:Image1.png" src="./Special:FilePath/Image1.png" height="120" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:Image2.gif"><img resource="./File:Image2.gif" src="./Special:FilePath/Image2.gif" height="120" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:Image3"><img resource="./File:Image3" src="./Special:FilePath/Image3" height="120" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:Image4"><img resource="./File:Image4" src="./Special:FilePath/Image4" height="300" width="300"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:Image5.svg"><img resource="./File:Image5.svg" src="./Special:FilePath/Image5.svg" height="120" width="120"/></a></span></div><div class="gallerytext"> <a rel="mw:ExtLink" href="http://///////">http://///////</a></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:*_image6"><img resource="./File:*_image6" src="./Special:FilePath/*_image6" height="120" width="120"/></a></span></div><div class="gallerytext"></div></li>
 </ul>
 !! end
 
@@ -19805,11 +20127,11 @@ image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" style="max-width: 226px; _width: 226px;" typeof="mw:Extension/gallery" about="#mwt3" data-mw='{"name":"gallery","attrs":{"widths":"70px","heights":"40px","perrow":"2"},"body":{}}'>
 <li class="gallerycaption">Foo <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">File:Nonexistent.jpg</span></div><div class="gallerytext">caption</div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">File:Nonexistent.jpg</span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext">some <b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img alt="This is a foo-bar." resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext">blabla.</div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="40" width="70"/></a></span></div><div class="gallerytext">caption</div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="40" width="70"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext">some <b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="This is a foo-bar." resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext">blabla.</div></li>
 </ul>
 !! end
 
@@ -19864,13 +20186,13 @@ image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
 </ul>
 
 !! html/parsoid
-<ul class="gallery mw-gallery-traditional" style="max-width: 226px; _width: 226px;" typeof="mw:Extension/gallery" about="#mwt3" data-parsoid='{}' data-mw='{"name":"gallery","attrs":{"widths":"70px","heights":"40px","perrow":"2","caption":"Foo [[Main Page]]"},"body":{"extsrc":"\nFile:Nonexistent.jpg|caption\nFile:Nonexistent.jpg\nimage:foobar.jpg|some &#39;&#39;&#39;caption&#39;&#39;&#39; [[Main Page]]\nimage:foobar.jpg\nimage:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.\n"}}'>
+<ul class="gallery mw-gallery-traditional" style="max-width: 226px; _width: 226px;" typeof="mw:Extension/gallery" about="#mwt3" data-mw='{"name":"gallery","attrs":{"widths":"70px","heights":"40px","perrow":"2","caption":"Foo [[Main Page]]"},"body":{"extsrc":"\nFile:Nonexistent.jpg|caption\nFile:Nonexistent.jpg\nimage:foobar.jpg|some &#39;&#39;&#39;caption&#39;&#39;&#39; [[Main Page]]\nimage:foobar.jpg\nimage:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.\n"}}'>
 <li class="gallerycaption">Foo <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">File:Nonexistent.jpg</span></div><div class="gallerytext">caption</div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">File:Nonexistent.jpg</span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext">some <b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img alt="This is a foo-bar." resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext">blabla.</div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="40" width="70"/></a></span></div><div class="gallerytext">caption</div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="40" width="70"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext">some <b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 105px;"><div class="thumb" style="width: 100px; height: 70px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="This is a foo-bar." resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/70px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="8" width="70"/></a></span></div><div class="gallerytext">blabla.</div></li>
 </ul>
 !! end
 
@@ -19910,9 +20232,9 @@ image:foobar.jpg|link=Main Page#section|caption
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./Main_Page#section"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./Main_Page#section"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext">caption</div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./Main_Page"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./Main_Page#section"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./Main_Page#section"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext">caption</div></li>
 </ul>
 !! end
 
@@ -19942,7 +20264,7 @@ File:Foobar.jpg|{{echo|ho}}
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt6" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
 <li class="gallerycaption"><span about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi"}},"i":0}}]}'>hi</span></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><span about="#mwt5" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"ho"}},"i":0}}]}'>ho</span></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><span about="#mwt5" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"ho"}},"i":0}}]}'>ho</span></div></li>
 </ul>
 !! end
 
@@ -19977,8 +20299,8 @@ File:Foobar.jpg|alt=galleryalt|{{Test|unamedParam|alt=param}}
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt6" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><span typeof="mw:Image" data-mw='{"caption":"desc"}'><a href="./File:Foobar.jpg"><img alt="inneralt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="2" width="20"/></a></span></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><span about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Test","href":"./Template:Test"},"params":{"1":{"wt":"unamedParam"},"alt":{"wt":"param"}},"i":0}}]}'>This is a test template</span></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><span typeof="mw:Image" data-mw='{"caption":"desc"}'><a href="./File:Foobar.jpg"><img alt="inneralt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="2" width="20"/></a></span></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><span about="#mwt4" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Test","href":"./Template:Test"},"params":{"1":{"wt":"unamedParam"},"alt":{"wt":"param"}},"i":0}}]}'>This is a test template</span></div></li>
 </ul>
 !! end
 
@@ -20031,14 +20353,14 @@ some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt3" data-mw='{"name":"gallery","attrs":{"showfilename":""},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">File:Nonexistent.jpg</span></div><div class="gallerytext"><a href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" title="File:Nonexistent.jpg">File:Nonexistent.jpg</a>caption</div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">File:Nonexistent.jpg</span></div><div class="gallerytext"><a href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" title="File:Nonexistent.jpg">File:Nonexistent.jpg</a></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><a href="./File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">File:Foobar.jpg</a>some <b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><a href="./File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">File:Foobar.jpg</a></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="120" width="120"/></a></span></div><div class="gallerytext"><a href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" title="File:Nonexistent.jpg">File:Nonexistent.jpg</a>caption</div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="120" width="120"/></a></span></div><div class="gallerytext"><a href="./File:Nonexistent.jpg" class="galleryfilename galleryfilename-truncate" title="File:Nonexistent.jpg">File:Nonexistent.jpg</a></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><a href="./File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">File:Foobar.jpg</a>some <b>caption</b> <a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"><a href="./File:Foobar.jpg" class="galleryfilename galleryfilename-truncate" title="File:Foobar.jpg">File:Foobar.jpg</a></div></li>
 </ul>
 !! end
 
-## Should Parsoid be preserving these variations?
+## Should Parsoid be preserving these variations?  See T151367
 !! test
 Gallery (with namespace-less filenames)
 !! options
@@ -20079,10 +20401,10 @@ foobar.jpg
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">File:Nonexistent.jpg</span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">Nonexistent.jpg</span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="120" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Error mw:Image"><a href="./File:Nonexistent.jpg"><img resource="./File:Nonexistent.jpg" src="./Special:FilePath/Nonexistent.jpg" height="120" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
 </ul>
 !! end
 
@@ -20107,7 +20429,7 @@ File:Foobar.jpg|alt=galleryalt|link=InterWikiLink
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-parsoid='{"dsr":[0,70,2,2]}' data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./InterWikiLink"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./InterWikiLink"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
 </ul>
 !! end
 
@@ -20132,7 +20454,7 @@ File:Foobar.jpg|alt=galleryalt|link=http://www.example.org
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="http://www.example.org"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="http://www.example.org"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
 </ul>
 !! end
 
@@ -20179,10 +20501,11 @@ File:Foobar.jpg|alt=galleryalt|link=" onclick="alert('malicious javascript code!
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./%22_onclick=%22alert('malicious_javascript_code!');"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./%22_onclick=%22alert('malicious_javascript_code!');"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
 </ul>
 !! end
 
+# Note that parsoid uses the invalid link as a caption, PHP does not.
 !! test
 Gallery with invalid title as link (T45964)
 !! options
@@ -20205,7 +20528,7 @@ File:Foobar.jpg|link=<
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext">link=&lt;</div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext">link=&lt;</div></li>
 </ul>
 !! end
 
@@ -20219,7 +20542,7 @@ parsoid={
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","body":{}}'>
 <li class="gallerycaption">123</li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span style="vertical-align: middle; display: inline-block;">File:Test.png</span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span>File:Test.png</span></div><div class="gallerytext"></div></li>
 </ul>
 !! wikitext
 <gallery caption="123">
@@ -20248,7 +20571,7 @@ File:Foobar.jpg
 
 !! html/parsoid
 <ul class="gallery mw-gallery-traditional center" style="text-align: center;" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{"class":"center","style":"text-align: center;"},"body":{}}'>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span style="display: inline-block; height: 100%; vertical-align: middle;"></span><span typeof="mw:Image" style="vertical-align: middle; display: inline-block;"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div><div class="gallerytext"></div></li>
 </ul>
 !! end
 
@@ -20996,16 +21319,22 @@ Parsing of overlapping (improperly nested) inline html tags
 ###
 ### Language variants related tests
 ###
+
+# Parsoid does not mark self-links.
+# Parsoid does not convert links; PHP will do any necessary redirects.
+
 !! test
 Self-link in language variants
 !! options
 title=[[Dunav]] language=sr
 !! wikitext
 Both [[Dunav]] and [[Дунав]] are names for this river.
-!! html
+!! html/php
 <p>Both <a class="mw-selflink selflink">Dunav</a> and <a class="mw-selflink selflink">Дунав</a> are names for this river.
 </p>
-!!end
+!! html/parsoid
+<p>Both <a rel="mw:WikiLink" href="./Dunav" title="Dunav">Dunav</a> and <a rel="mw:WikiLink" href="./Дунав" title="Дунав">Дунав</a> are names for this river.</p>
+!! end
 
 !! article
 Дуна
@@ -21019,9 +21348,11 @@ Link to another existing title shouldn't be parsed as self-link even if it's a v
 title=[[Duna]] language=sr
 !! wikitext
 [[Дуна]] is not a self-link while [[Duna]] and [[Dуна]] are still self-links.
-!! html
+!! html/php
 <p><a href="/wiki/%D0%94%D1%83%D0%BD%D0%B0" title="Дуна">Дуна</a> is not a self-link while <a class="mw-selflink selflink">Duna</a> and <a class="mw-selflink selflink">Dуна</a> are still self-links.
 </p>
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Дуна" title="Дуна">Дуна</a> is not a self-link while <a rel="mw:WikiLink" href="./Duna" title="Duna">Duna</a> and <a rel="mw:WikiLink" href="./Dуна" title="Dуна">Dуна</a> are still self-links.</p>
 !! end
 
 !! test
@@ -21030,9 +21361,11 @@ Link to a section of a variant of this title shouldn't be parsed as self-link
 title=[[Duna]] language=sr
 !! wikitext
 [[Dуна]] is a self-link while [[Dunа#Foo]] and [[Dуна#Foo]] are not self-links.
-!! html
+!! html/php
 <p><a class="mw-selflink selflink">Dуна</a> is a self-link while <a href="/wiki/%D0%94%D1%83%D0%BD%D0%B0" title="Дуна">Dunа#Foo</a> and <a href="/wiki/%D0%94%D1%83%D0%BD%D0%B0" title="Дуна">Dуна#Foo</a> are not self-links.
 </p>
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Dуна" title="Dуна">Dуна</a> is a self-link while <a rel="mw:WikiLink" href="./Dunа#Foo" title="Dunа">Dunа#Foo</a> and <a rel="mw:WikiLink" href="./Dуна#Foo" title="Dуна">Dуна#Foo</a> are not self-links.</p>
 !! end
 
 !! test
@@ -21041,10 +21374,12 @@ Link to pages in language variants
 language=sr
 !! wikitext
 Main Page can be written as [[Маин Паге]]
-!! html
+!! html/php
 <p>Main Page can be written as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a>
 </p>
-!!end
+!! html/parsoid
+<p>Main Page can be written as <a rel="mw:WikiLink" href="./Маин_Паге" title="Маин Паге">Маин Паге</a></p>
+!! end
 
 
 !! test
@@ -21053,10 +21388,12 @@ Multiple links to pages in language variants
 language=sr
 !! wikitext
 [[Main Page]] can be written as [[Маин Паге]] same as [[Маин Паге]].
-!! html
+!! html/php
 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a> can be written as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a> same as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a>.
 </p>
-!!end
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page">Main Page</a> can be written as <a rel="mw:WikiLink" href="./Маин_Паге" title="Маин Паге">Маин Паге</a> same as <a rel="mw:WikiLink" href="./Маин_Паге" title="Маин Паге">Маин Паге</a>.</p>
+!! end
 
 
 !! test
@@ -21065,7 +21402,7 @@ Simple template in language variants
 language=sr
 !! wikitext
 {{тест}}
-!! html
+!! html/php
 <p>This is a test template
 </p>
 !! end
@@ -21077,7 +21414,7 @@ Template with explicit namespace in language variants
 language=sr
 !! wikitext
 {{Template:тест}}
-!! html
+!! html/php
 <p>This is a test template
 </p>
 !! end
@@ -21089,7 +21426,7 @@ Basic test for template parameter in language variants
 language=sr
 !! wikitext
 {{парамтест|param=foo}}
-!! html
+!! html/php
 <p>This is a test template with parameter foo
 </p>
 !! end
@@ -21143,9 +21480,11 @@ Stripping -{}- tags (language variants)
 language=sr
 !! wikitext
 Latin proverb: -{Ne nuntium necare}-
-!! html
+!! html/php
 <p>Latin proverb: Ne nuntium necare
 </p>
+!! html/parsoid
+<p>Latin proverb: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Ne nuntium necare"}}'></span></p>
 !! end
 
 
@@ -21155,9 +21494,11 @@ Prevent conversion with -{}- tags (language variants)
 language=sr variant=sr-ec
 !! wikitext
 Latinski: -{Ne nuntium necare}-
-!! html
+!! html/php
 <p>Латински: Ne nuntium necare
 </p>
+!! html/parsoid
+<p>Latinski: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Ne nuntium necare"}}'></span></p>
 !! end
 
 
@@ -21167,9 +21508,11 @@ Prevent conversion of text with -{}- tags (language variants)
 language=sr variant=sr-ec
 !! wikitext
 Latinski: -{Ne nuntium necare}-
-!! html
+!! html/php
 <p>Латински: Ne nuntium necare
 </p>
+!! html/parsoid
+<p>Latinski: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Ne nuntium necare"}}'></span></p>
 !! end
 
 
@@ -21179,9 +21522,11 @@ Prevent conversion of links with -{}- tags (language variants)
 language=sr variant=sr-ec
 !! wikitext
 -{[[Main Page]]}-
-!! html
+!! html/php
 <p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
 </p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"&lt;a rel=\"mw:WikiLink\" href=\"./Main_Page\" title=\"Main Page\" data-parsoid=&#39;{\"stx\":\"simple\",\"a\":{\"href\":\"./Main_Page\"},\"sa\":{\"href\":\"Main Page\"},\"dsr\":[2,15,2,2]}&#39;>Main Page&lt;/a>"}}'></span></p>
 !! end
 
 
@@ -21191,11 +21536,26 @@ language=sr variant=sr-ec
 language=sr variant=sr-ec
 !! wikitext
 == -{Naslov}- ==
-!! html
+
+Note that even an unprotected headline ID is not affected by language
+conversion:
+
+== Latinski ==
+!! html/php
 <h2><span class="mw-headline" id="-.7BNaslov.7D-">Naslov</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Уреди одељак „Naslov“">уреди</a><span class="mw-editsection-bracket">]</span></span></h2>
+<p>Ноте тхат евен ан унпротецтед хеадлине ИД ис нот аффецтед бy лангуаге
+цонверсион:
+</p>
+<h2><span class="mw-headline" id="Latinski">Латински</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Уреди одељак „Латински“">уреди</a><span class="mw-editsection-bracket">]</span></span></h2>
 
-!! end
+!! html/parsoid
+<h2 id="-.7BNaslov.7D-"><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Naslov"}}'></span></h2>
+
+<p>Note that even an unprotected headline ID is not affected by language
+conversion:</p>
 
+<h2 id="Latinski">Latinski</h2>
+!! end
 
 !! test
 Explicit definition of language variant alternatives
@@ -21203,66 +21563,284 @@ Explicit definition of language variant alternatives
 language=zh variant=zh-tw
 !! wikitext
 -{zh:China;zh-tw:Taiwan}-, not China
-!! html
+!! html/php
 <p>Taiwan, not China
 </p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'></span>, not China</p>
 !! end
 
+!! test
+Filter syntax for language variants
+!! options
+language=zh variant=zh-tw
+!! wikitext
+foo-{zh;zh-hans;zh-hant|blog, WEBJOURNAL, WEBLOG}-quux
+!! html/php
+<p>fooblog, WEBJOURNAL, WEBLOGquux
+</p>
+!! html/parsoid
+<p>foo<span typeof="mw:LanguageVariant" data-mw-variant='{"filter":{"l":["zh","zh-hans","zh-hant"],"t":"blog, WEBJOURNAL, WEBLOG"}}'></span>quux</p>
+!! end
 
+# Note that Parsoid post-processing for language variants needs to
+# update the `title` attribute here, based on the mw:ExpandedAttrs property
 !! test
 Conversion around HTML tags
 !! options
 language=sr variant=sr-ec
 !! wikitext
--{H|span=>sr-ec:script;title=>sr-ec:src;}-
-<span title="La-{sr-el:L;sr-ec:C;}-tin">ski</span>
-!! html
+-{H|span=>sr-ec:script;title=>sr-ec:src}-
+<span title="La-{sr-el:L;sr-ec:C}-tin">ski</span>
+!! html/php
 <p>
 <span title="ЛаCтин">ски</span>
 </p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[8]}' data-mw-variant='{"add":true,"oneway":[{"f":"span","l":"sr-ec","t":"script"},{"f":"title","l":"sr-ec","t":"src"}]}'/>
+<span title="Latin" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"title"},{"html":"La&lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"twoway\":[{\"l\":\"sr-el\",\"t\":\"L\"},{\"l\":\"sr-ec\",\"t\":\"C\"}]}&#39; data-parsoid=&#39;{\"fl\":[],\"tSp\":[6],\"dsr\":[57,76,null,2]}&#39;>&lt;/span>tin"}]]}'>ski</span></p>
 !! end
 
-
 !! test
-Explicit session-wise language variant mapping (A flag and - flag)
+Explicit session-wise two-way language variant mapping (A flag and - flag)
 !! options
 language=zh variant=zh-tw
 !! wikitext
+This is -{zh:China; zh-tw:Taiwan}-, but we'll forget that now.
+
 Taiwan is not China.
-But -{A|zh:China;zh-tw:Taiwan}- is China,
-(This-{-|zh:China;zh-tw:Taiwan}- should be stripped!)
+
+But -{A|zh:China; zh-tw:Taiwan}- is China,
+
+(This-{-|zh:China; zh-tw:Taiwan}- should be stripped!)
+
 and -{China}- is China.
-!! html
-<p>Taiwan is not China.
-But Taiwan is Taiwan,
-(This should be stripped!)
-and China is China.
+!! html/php
+<p>This is Taiwan, but we'll forget that now.
+</p><p>Taiwan is not China.
+</p><p>But Taiwan is Taiwan,
+</p><p>(This should be stripped!)
+</p><p>and China is China.
+</p>
+!! html/parsoid
+<p>This is <span typeof="mw:LanguageVariant" data-mw-variant='{"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'></span>, but we'll forget that now.</p>
+<p>Taiwan is not China.</p>
+<p>But <span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'></span> is China,</p>
+<p>(This<meta typeof="mw:LanguageVariant" data-mw-variant='{"remove":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/> should be stripped!)</p>
+<p>and <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"China"}}'></span> is China.</p>
+!! end
+
+!! test
+Explicit session-wise one-way language variant mapping (A flag and - flag)
+!! options
+language=zh variant=zh-tw
+!! wikitext
+This is -{COUNTRY=>zh:China;COUNTRY=>zh-tw:Taiwan}-, but we'll forget that now.
+
+COUNTRY is China or Taiwan.
+
+But -{A|COUNTRY=>zh:China;COUNTRY=>zh-tw:Taiwan}- is COUNTRY,
+
+(This-{-|COUNTRY=>zh:China;COUNTRY=>zh-tw:Taiwan}- should be stripped!)
+
+and -{COUNTRY}- is COUNTRY.
+!! html/php
+<p>This is Taiwan, but we'll forget that now.
+</p><p>COUNTRY is China or Taiwan.
+</p><p>But Taiwan is Taiwan,
+</p><p>(This should be stripped!)
+</p><p>and COUNTRY is COUNTRY.
 </p>
+!! html/parsoid
+<p>This is <span typeof="mw:LanguageVariant" data-mw-variant='{"oneway":[{"f":"COUNTRY","l":"zh","t":"China"},{"f":"COUNTRY","l":"zh-tw","t":"Taiwan"}]}'></span>, but we'll forget that now.</p>
+<p>COUNTRY is China or Taiwan.</p>
+<p>But <span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"COUNTRY","l":"zh","t":"China"},{"f":"COUNTRY","l":"zh-tw","t":"Taiwan"}]}'></span> is COUNTRY,</p>
+<p>(This<meta typeof="mw:LanguageVariant" data-mw-variant='{"oneway":[{"f":"COUNTRY","l":"zh","t":"China"},{"f":"COUNTRY","l":"zh-tw","t":"Taiwan"}],"remove":true}'/> should be stripped!)</p>
+<p>and <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"COUNTRY"}}'></span> is COUNTRY.</p>
 !! end
 
 !! test
-Explicit session-wise language variant mapping (H flag for hide)
+Explicit session-wise two-way language variant mapping (H flag for hide)
 !! options
 language=zh variant=zh-tw
 !! wikitext
 (This-{H|zh:China;zh-tw:Taiwan}- should be stripped!)
+
 Taiwan is China.
-!! html
+!! html/php
 <p>(This should be stripped!)
-Taiwan is Taiwan.
+</p><p>Taiwan is Taiwan.
 </p>
+!! html/parsoid
+<p>(This<meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/> should be stripped!)</p>
+<p>Taiwan is China.</p>
+!! end
+
+!! test
+Explicit session-wise one-way language variant mapping (H flag for hide)
+!! options
+language=zh variant=zh-tw
+!! wikitext
+(This-{H|COUNTRY=>zh:China;COUNTRY=>zh-tw:Taiwan}- should be stripped!)
+
+COUNTRY is Taiwan or China.
+!! html/php
+<p>(This should be stripped!)
+</p><p>Taiwan is Taiwan or China.
+</p>
+!! html/parsoid
+<p>(This<meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[8]}' data-mw-variant='{"add":true,"oneway":[{"f":"COUNTRY","l":"zh","t":"China"},{"f":"COUNTRY","l":"zh-tw","t":"Taiwan"}]}'/> should be stripped!)</p>
+<p>COUNTRY is Taiwan or China.</p>
 !! end
 
+## Note that parsoid test runner does not support 'showtitle' option.
 !! test
 Adding explicit conversion rule for title (T flag)
 !! options
 language=zh variant=zh-tw showtitle
 !! wikitext
 Should be stripped-{T|zh:China;zh-tw:Taiwan}-!
-!! html
+
+Taiwan is China.
+!! html/php
 Taiwan
 <p>Should be stripped!
+</p><p>Taiwan is China.
 </p>
+!! html/parsoid
+<p>Should be stripped<meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"title":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>!</p>
+<p>Taiwan is China.</p>
+!! end
+
+!! test
+Code coverage: T combined with H flag
+!! options
+language=zh variant=zh-tw showtitle
+!! wikitext
+Should be stripped-{T;H|zh:China; zh-tw:Taiwan}-!
+
+Taiwan is China.
+!! html/php
+Taiwan
+<p>Should be stripped!
+</p><p>Taiwan is Taiwan.
+</p>
+!! html/parsoid
+<p>Should be stripped<meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"title":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>!</p>
+<p>Taiwan is China.</p>
+!! end
+
+!! test
+Code coverage: T with no variants
+!! options
+language=zh variant=zh-tw showtitle
+!! wikitext
+-{H|zh:China; zh-tw:Taiwan}-
+Taiwan is China.-{T|Taiwan is China}-
+!! html/php
+Taiwan is China
+<p>
+Taiwan is Taiwan.
+</p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>
+Taiwan is China.<meta typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Taiwan is China"},"title":true}'/></p>
+!! end
+
+!! test
+Code coverage: rules with no variants
+!! options
+language=zh variant=zh-tw
+!! wikitext
+-{H|zh:China; zh-tw:Taiwan}-
+Taiwan is China.
+-{H|China}-
+Taiwan is China.
+!! html/php
+<p>
+Taiwan is Taiwan.
+
+Taiwan is China.
+</p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>
+Taiwan is China.
+<meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"*","t":"China"}]}'/>
+Taiwan is China.</p>
+!! end
+
+
+!! test
+Code coverage: D flag for conversion rule
+!! options
+language=zh variant=zh-tw
+!! wikitext
+-{D|zh-cn:XA; zh-tw:YA}-
+-{A;D|zh-cn:XB; zh-tw:YB}-
+-{D;H|zh-cn:XC; zh-tw:YC}-
+
+-{D;H|FOO=>zh-tw:BAR;FOO=>zh-cn:BAT}-
+
+-{D|0=>zh-tw:1}-
+-{A;D|2=>zh-tw:3}-
+-{D;H|4=>zh-tw:5}-
+
+XA XB XC YA YB YC FOO BAR BAT 012345
+!! html/php
+<p>大陆:XA;台灣:YA;
+
+大陆:XC;台灣:YC;
+</p><p>FOO⇒台灣:BAR;FOO⇒大陆:BAT;
+</p><p>0⇒台灣:1;
+
+4⇒台灣:5;
+</p><p>XA YB YC YA YB YC BAR BAR BAT 013355
+</p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"describe":true,"twoway":[{"l":"zh-cn","t":"XA"},{"l":"zh-tw","t":"YA"}]}'></span>
+<meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"twoway":[{"l":"zh-cn","t":"XB"},{"l":"zh-tw","t":"YB"}]}'/>
+<span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"twoway":[{"l":"zh-cn","t":"XC"},{"l":"zh-tw","t":"YC"}]}'></span></p>
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"oneway":[{"f":"FOO","l":"zh-tw","t":"BAR"},{"f":"FOO","l":"zh-cn","t":"BAT"}]}'></span></p>
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"describe":true,"oneway":[{"f":"0","l":"zh-tw","t":"1"}]}'></span>
+<meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"oneway":[{"f":"2","l":"zh-tw","t":"3"}]}'/>
+<span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"describe":true,"oneway":[{"f":"4","l":"zh-tw","t":"5"}]}'></span></p>
+<p>XA XB XC YA YB YC FOO BAR BAT 012345</p>
+!! end
+
+!! test
+Code coverage: N flag for conversion rule
+!! options
+language=zh variant=zh-cn
+!! wikitext
+-{N|zh-cn}-
+
+-{N|zh-tw}-
+
+-{N|sr-ec}-
+!! html/php
+<p>大陆
+</p><p>台灣
+</p><p>српски (ћирилица)‎
+</p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"name":{"t":"zh-cn"}}'></span></p>
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"name":{"t":"zh-tw"}}'></span></p>
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"name":{"t":"sr-ec"}}'></span></p>
+!! end
+
+# html2wt suppresses the bogus 'D' flag, so this is wt2html only
+!! test
+Code coverage: N flag for conversion rule (wt2html only)
+!! options
+language=zh variant=zh-cn
+parsoid=wt2html,html2html
+!! wikitext
+-{D;N|en}-
+!! html/php
+<p>English
+</p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"name":{"t":"en"}}' data-parsoid='{"fl":["D","N"]}'></span></p>
 !! end
 
 !! test
@@ -21270,25 +21848,31 @@ Testing that changing the language variant here in the tests actually works
 !! options
 language=zh variant=zh showtitle
 !! wikitext
-Should be stripped-{T|zh:China;zh-tw:Taiwan}-!
-!! html
+Should be stripped-{T|zh:China; zh-tw:Taiwan}-!
+!! html/php
 China
 <p>Should be stripped!
 </p>
+!! html/parsoid
+<p>Should be stripped<meta typeof="mw:LanguageVariant" data-mw-variant='{"title":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>!</p>
 !! end
 
 !! test
 Recursive conversion of alt and title attrs shouldn't clear converter state
 !! options
-language=zh variant=zh-cn showtitle
+language=zh variant=zh-cn
+showtitle
 !! wikitext
--{H|zh-cn:Exclamation;zh-tw:exclamation;}-
-Should be stripped-{T|zh-cn:China;zh-tw:Taiwan}-<span title="exclamation">!</span>
-!! html
+-{H|zh-cn:Exclamation; zh-tw:exclamation}-
+Should be stripped-{T|zh-cn:China; zh-tw:Taiwan}-<span title="exclamation">!</span>
+!! html/php
 China
 <p>
 Should be stripped<span title="Exclamation">!</span>
 </p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh-cn","t":"Exclamation"},{"l":"zh-tw","t":"exclamation"}]}'/>
+Should be stripped<meta typeof="mw:LanguageVariant" data-mw-variant='{"title":true,"twoway":[{"l":"zh-cn","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/><span title="exclamation">!</span></p>
 !! end
 
 !! test
@@ -21296,13 +21880,17 @@ T26072: more test on conversion rule for title
 !! options
 language=zh variant=zh-tw showtitle
 !! wikitext
-This should be stripped-{T|zh:China;zh-tw:Taiwan}-!
-This won't take interferes with the title rule-{H|zh:Beijing;zh-tw:Taipei}-.
-!! html
+This should be stripped-{T|zh:China; zh-tw:Taiwan}-!
+
+This won't take interferes with the title rule-{H|zh:Beijing; zh-tw:Taipei}-.
+!! html/php
 Taiwan
 <p>This should be stripped!
-This won't take interferes with the title rule.
+</p><p>This won't take interferes with the title rule.
 </p>
+!! html/parsoid
+<p>This should be stripped<meta typeof="mw:LanguageVariant" data-mw-variant='{"title":true,"twoway":[{"l":"zh","t":"China"},{"l":"zh-tw","t":"Taiwan"}]}'/>!</p>
+<p>This won't take interferes with the title rule<meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh","t":"Beijing"},{"l":"zh-tw","t":"Taipei"}]}'/>.</p>
 !! end
 
 !! test
@@ -21311,10 +21899,12 @@ Partly disable title conversion if variant == main language code
 language=zh variant=zh title=[[ZH]] showtitle
 !! wikitext
 -{T|zh-cn:CN;zh-tw:TW}-
-!! html
+!! html/php
 ZH
 <p>
 </p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"title":true,"twoway":[{"l":"zh-cn","t":"CN"},{"l":"zh-tw","t":"TW"}]}'/></p>
 !! end
 
 !! test
@@ -21323,10 +21913,12 @@ Partly disable title conversion if variant == main language code, more
 language=zh variant=zh title=[[ZH]] showtitle
 !! wikitext
 -{T|TW}-
-!! html
+!! html/php
 ZH
 <p>
 </p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"TW"},"title":true}'/></p>
 !! end
 
 !! test
@@ -21335,9 +21927,26 @@ Raw output of variant escape tags (R flag)
 language=zh variant=zh-tw
 !! wikitext
 Raw: -{R|zh:China;zh-tw:Taiwan}-
-!! html
+!! html/php
 <p>Raw: zh:China;zh-tw:Taiwan
 </p>
+!! html/parsoid
+<p>Raw: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"zh:China;zh-tw:Taiwan"}}'></span></p>
+!! end
+
+# html2wt suppresses the bogus 'D' flags, so this is wt2html only
+!! test
+Raw output of variant escape tags (R flag) (wt2html only)
+!! options
+language=zh variant=zh-tw
+parsoid=wt2html,html2html
+!! wikitext
+-{Variant}- -{D|syntax}- -{D;R|options}-
+!! html/php
+<p>Variant syntax options
+</p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"Variant"}}'></span> <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"syntax"}}'></span> <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"options"}}'></span></p>
 !! end
 
 !! test
@@ -21346,9 +21955,24 @@ Nested markup inside raw output of variant escape tags (R flag)
 language=zh variant=zh-tw
 !! wikitext
 Nested raw: -{R|nested -{zh:China;zh-tw:Taiwan}- nested}-
-!! html
+!! html/php
 <p>Nested raw: nested Taiwan nested
 </p>
+!! html/parsoid
+<p>Nested raw: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"nested &lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"twoway\":[{\"l\":\"zh\",\"t\":\"China\"},{\"l\":\"zh-tw\",\"t\":\"Taiwan\"}]}&#39; data-parsoid=&#39;{\"fl\":[],\"tSp\":[6],\"dsr\":[23,48,null,2]}&#39;>&lt;/span> nested"}}'></span></p>
+!! end
+
+!! test
+Nested markup and spaces inside raw output of variant escape tags (R flag)
+!! options
+language=zh variant=zh-tw
+!! wikitext
+X-{ outer -{ inner }- outer }-X
+!! html/php
+<p>X outer  inner  outer X
+</p>
+!! html/parsoid
+<p>X<span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":" outer &lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"disabled\":{\"t\":\" inner \"}}&#39; data-parsoid=&#39;{\"fl\":[],\"dsr\":[10,21,null,2]}&#39;>&lt;/span> outer "}}'></span>X</p>
 !! end
 
 !! test
@@ -21357,9 +21981,11 @@ Templates inside raw output of variant escape tags (R flag)
 language=zh variant=zh-tw
 !! wikitext
 Nested raw: -{R|nested {{echo|hi}} templates}-
-!! html
+!! html/php
 <p>Nested raw: nested hi templates
 </p>
+!! html/parsoid
+<p>Nested raw: <span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"nested &lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[23,34,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"hi\"}},\"i\":0}}]}&#39;>hi&lt;/span> templates"}}'></span></p>
 !! end
 
 !! test
@@ -21368,9 +21994,11 @@ Strings evaluating false shouldn't be ignored by Language converter (T51072)
 language=zh variant=zh-cn
 !! input
 -{zh-cn:0;zh-sg:1;zh-tw:2;zh-hk:3}-
-!! result
+!! html/php
 <p>0
 </p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[12]}' data-mw-variant='{"twoway":[{"l":"zh-cn","t":"0"},{"l":"zh-sg","t":"1"},{"l":"zh-tw","t":"2"},{"l":"zh-hk","t":"3"}]}'></span></p>
 !! end
 
 !! test
@@ -21379,31 +22007,37 @@ Conversion rules from [numeric-only string] to [something else] (T48634)
 language=zh variant=zh-cn
 !! input
 -{H|0=>zh-cn:B}--{H|0=>zh-cn:C;0=>zh-cn:D}--{H|0=>zh-hans:A}-012345-{A|zh-tw:0;zh-cn:E;}-012345
-!! result
+!! html/php
 <p>D12345EE12345
 </p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"0","l":"zh-cn","t":"B"}]}'/><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"0","l":"zh-cn","t":"C"},{"f":"0","l":"zh-cn","t":"D"}]}'/><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"0","l":"zh-hans","t":"A"}]}'/>012345<span typeof="mw:LanguageVariant" data-parsoid='{"fl":["A"],"tSp":[7]}' data-mw-variant='{"add":true,"twoway":[{"l":"zh-tw","t":"0"},{"l":"zh-cn","t":"E"}]}'></span>012345</p>
 !! end
 
 !! test
-Bidirectional converter rule entries with an empty value should be ignored (T53551)
+Two-way converter rule entries with an empty value should be ignored (T53551)
 !! options
 language=zh variant=zh-cn
 !! input
 -{H|zh-cn:foo;zh-tw:;}-foobar
-!! result
+!! html/php
 <p>foobar
 </p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[7]}' data-mw-variant='{"add":true,"twoway":[{"l":"zh-cn","t":"foo"},{"l":"zh-tw","t":""}]}'/>foobar</p>
 !! end
 
 !! test
-Unidirectional converter rule entries with an empty "from" string should be ignored (T53551)
+One-way converter rule entries with an empty "from" string should be ignored (T53551)
 !! options
 language=zh variant=zh-cn
 !! input
 -{H|=>zh-cn:foo;}-foobar
-!! result
+!! html/php
 <p>foobar
 </p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-parsoid='{"tSp":[5]}' data-mw-variant='{"add":true,"oneway":[{"f":"","l":"zh-cn","t":"foo"}]}'/>foobar</p>
 !! end
 
 !! test
@@ -21412,9 +22046,11 @@ Empty converter rule entries shouldn't be inserted into the conversion table (T5
 language=zh variant=zh-cn
 !! input
 -{H|}-foobar
-!! result
+!! html/php
 <p>foobar
 </p>
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"*","t":""}]}'/>foobar</p>
 !! end
 
 !! test
@@ -21423,9 +22059,11 @@ Nested using of manual convert syntax
 language=zh variant=zh-hk
 !! wikitext
 Nested: -{zh-hans:Hi -{zh-cn:China;zh-sg:Singapore;}-;zh-hant:Hello -{zh-tw:Taiwan;zh-hk:H-{ong}- K-{}-ong;}-;}-!
-!! html
+!! html/php
 <p>Nested: Hello Hong Kong!
 </p>
+!! html/parsoid
+<p>Nested: <span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[7]}' data-mw-variant='{"twoway":[{"l":"zh-hans","t":"Hi &lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"twoway\":[{\"l\":\"zh-cn\",\"t\":\"China\"},{\"l\":\"zh-sg\",\"t\":\"Singapore\"}]}&#39; data-parsoid=&#39;{\"fl\":[],\"tSp\":[7],\"dsr\":[21,53,null,2]}&#39;>&lt;/span>"},{"l":"zh-hant","t":"Hello &lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"twoway\":[{\"l\":\"zh-tw\",\"t\":\"Taiwan\"},{\"l\":\"zh-hk\",\"t\":\"H&amp;lt;span typeof=\\\"mw:LanguageVariant\\\" data-mw-variant=&amp;#39;{\\\"disabled\\\":{\\\"t\\\":\\\"ong\\\"}}&amp;#39; data-parsoid=&amp;#39;{\\\"fl\\\":[],\\\"dsr\\\":[90,97,null,2]}&amp;#39;>&amp;lt;/span> K&amp;lt;span typeof=\\\"mw:LanguageVariant\\\" data-mw-variant=&amp;#39;{\\\"disabled\\\":{\\\"t\\\":\\\"\\\"}}&amp;#39; data-parsoid=&amp;#39;{\\\"fl\\\":[],\\\"dsr\\\":[99,103,null,2]}&amp;#39;>&amp;lt;/span>ong\"}]}&#39; data-parsoid=&#39;{\"fl\":[],\"tSp\":[7],\"dsr\":[68,109,null,2]}&#39;>&lt;/span>"}]}'></span>!</p>
 !! end
 
 !! test
@@ -21434,25 +22072,146 @@ HTML markups with conversion syntax in attribs, nested in other conversion block
 language=zh variant=zh-cn
 !! wikitext
 -{zh;zh-hans;zh-hant|<span title="-{X}-">A</span>}-
-!! html
+!! html/php
 <p><span title="X">A</span>
 </p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"filter":{"l":["zh","zh-hans","zh-hant"],"t":"&lt;span title=\"\" about=\"#mwt1\" typeof=\"mw:ExpandedAttrs\" data-parsoid=&#39;{\"stx\":\"html\",\"a\":{\"title\":\"\"},\"sa\":{\"title\":\"-{X}-\"},\"dsr\":[21,49,20,7]}&#39; data-mw=&#39;{\"attribs\":[[{\"txt\":\"title\"},{\"html\":\"&amp;lt;span typeof=\\\"mw:LanguageVariant\\\" data-mw-variant=&amp;#39;{\\\"disabled\\\":{\\\"t\\\":\\\"X\\\"}}&amp;#39; data-parsoid=&amp;#39;{\\\"fl\\\":[],\\\"dsr\\\":[34,39,null,2]}&amp;#39;>&amp;lt;/span>\"}]]}&#39;>A&lt;/span>"}}'></span></p>
 !! end
 
 !! test
-HTML markups with conversion syntax in attribs, nested in other conversion blocks (not working yet)
+HTML markups with conversion syntax in attribs, nested in other conversion blocks (not working yet in PHP parser)
 !! options
-language=zh variant=zh-cn disabled
+language=zh variant=zh-cn
 !! wikitext
 -{<span title="-{X}-">A</span>}-
-!! html
+!! html/php+disabled
 <p><span title="X">A</span>
 </p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"&lt;span title=\"\" about=\"#mwt1\" typeof=\"mw:ExpandedAttrs\" data-parsoid=&#39;{\"stx\":\"html\",\"a\":{\"title\":\"\"},\"sa\":{\"title\":\"-{X}-\"},\"dsr\":[2,30,20,7]}&#39; data-mw=&#39;{\"attribs\":[[{\"txt\":\"title\"},{\"html\":\"&amp;lt;span typeof=\\\"mw:LanguageVariant\\\" data-mw-variant=&amp;#39;{\\\"disabled\\\":{\\\"t\\\":\\\"X\\\"}}&amp;#39; data-parsoid=&amp;#39;{\\\"fl\\\":[],\\\"dsr\\\":[15,20,null,2]}&amp;#39;>&amp;lt;/span>\"}]]}&#39;>A&lt;/span>"}}'></span></p>
+!! end
+
+# Parsoid and PHP disagree on how to parse this example: Parsoid
+# insists that the content of a language converter element be a valid
+# DOM fragment or attribute string
+!! test
+Language converter markup with block content
+!! options
+language=zh variant=zh-cn
+!! wikitext
+<span>a-{b<div>c}-d
+
+<span>a-{zh;zh-hans;zh-hant|b<div>c}-d
+
+<span>a-{H|0=>zh-cn:x<span>y;0=>zh-tw:b<div>c}-d
+!! html/php+tidy
+<p><span>ab</span></p>
+<div><span>cd <span>ab</span></span>
+<div><span>cd <span>ad</span></span></div>
+</div>
+!! html/parsoid
+<p><span data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a</span></p><div typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"b&lt;div data-parsoid=&#39;{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[10,16,5,0]}&#39;>c&lt;/div>"}}'></div><p>d</p>
+
+<p><span data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a</span></p><div typeof="mw:LanguageVariant" data-mw-variant='{"filter":{"l":["zh","zh-hans","zh-hant"],"t":"b&lt;div data-parsoid=&#39;{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[50,56,5,0]}&#39;>c&lt;/div>"}}'></div><p>d</p>
+
+<p><span data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a<meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"0","l":"zh-cn","t":"x&lt;span data-parsoid=&#39;{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[82,89,6,0]}&#39;>y&lt;/span>"},{"f":"0","l":"zh-tw","t":"b&lt;div data-parsoid=&#39;{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[100,106,5,0]}&#39;>c&lt;/div>"}]}'/>d</span></p>
+!! end
+
+!! test
+LanguageConverter selser (1)
+!! options
+language=zh variant=zh-cn
+parsoid={
+  "modes": ["wt2wt", "selser"],
+  "changes": [
+    ["span[typeof]", "attr", "data-mw-variant", "{\"disabled\":{\"t\":\"edited\"}}"]
+  ]
+}
+!! wikitext
+-{raw}-
+!! wikitext/edited
+-{edited}-
+!! end
+
+!! test
+LanguageConverter selser (2)
+!! options
+language=zh variant=zh-cn
+parsoid={
+  "modes": ["wt2wt", "selser"],
+  "changes": [
+    ["span[class='x']", "contents", "text", "-{foo}-"],
+    ["a", "contents", "text", "-{"],
+    ["span[typeof]", "attr", "data-mw", "{\"parts\":[{\"template\":{\"target\":{\"wt\":\"1x\",\"href\":\"./Template:1x\"},\"params\":{\"1\":{\"wt\":\"-{\"}},\"i\":0}}]}"]
+  ]
+}
+!! wikitext
+<span class="x">TEXT1</span>
+[http://example.com TEXT2]
+[[Foo|TEXT3]]
+{{echo|TEXT4}}
+!! wikitext/edited
+<span class="x"><nowiki>-{foo}-</nowiki></span>
+[http://example.com -{]
+[[Foo|<nowiki>-{</nowiki>]]
+{{1x|<nowiki>-{</nowiki>}}
+!! end
+
+# Tests LanguageVariantText in ConstrainedText
+!! test
+LanguageConverter selser (3)
+!! options
+language=zh variant=zh-cn
+parsoid={
+  "modes": ["wt2wt", "selser"],
+  "changes": [
+    ["td > span", "attr", "typeof", "mw:LanguageVariant"],
+    ["td > span", "attr", "data-mw-variant", "{\"disabled\":{\"t\":\"edited\"}}"]
+  ]
+}
+!! wikitext
+{|
+|-
+|<span>Foo</span>
+|}
+!! wikitext/edited
+{|
+|-
+|<nowiki/>-{edited}-
+|}
+!! end
+
+# Tests LanguageVariantText._fromSelser
+!! test
+LanguageConverter selser (4)
+!! options
+language=zh variant=zh-cn
+parsoid={
+  "modes": ["wt2wt", "selser"],
+  "changes": [
+    ["td > span.x", "remove"]
+  ]
+}
+!! wikitext
+{|
+|-
+|<span class="x">Foo</span>-{Bar}-
+||<span class="x">Foo</span>-{Bar}-
+|}
+!! wikitext/edited
+{|
+|-
+|<nowiki/>-{Bar}-
+||-{Bar}-
+|}
 !! end
 
 # Since Parsoid is starting to emit canonical wikitext for links,
 # [http://example.com http://example.com] will not RT back to that
 # form anymore.
+# Parsoid does not language-convert links (it is done in a
+# post-processing step)
 !! test
 Proper conversion of text in external links
 !! options
@@ -21481,8 +22240,8 @@ gopher://www.google.com
 <a rel="mw:ExtLink" href="http://www.google.com">http://www.google.com</a>
 <a rel="mw:ExtLink" href="gopher://www.google.com">gopher://www.google.com</a>
 <a rel="mw:ExtLink" href="https://www.google.com">irc://www.google.com</a>
-<a rel="mw:ExtLink" href="ftp://www.google.com">www.гоогле.цом/фтп://дир</a>
-<a rel="mw:ExtLink" href="//www.google.com">www.гоогле.цом</a></p>
+<a rel="mw:ExtLink" href="ftp://www.google.com">www.google.com/ftp://dir</a>
+<a rel="mw:ExtLink" href="//www.google.com">www.google.com</a></p>
 !! end
 
 !! test
@@ -21491,9 +22250,11 @@ Do not convert roman numbers to language variants
 language=sr variant=sr-ec
 !! wikitext
 Fridrih IV je car.
-!! html
+!! html/php
 <p>Фридрих IV је цар.
 </p>
+!! html/parsoid
+<p>Fridrih IV je car.</p>
 !! end
 
 !! test
@@ -21513,9 +22274,11 @@ Don't convert raw rule "-{R|=&gt;}-" to "=>"
 language=sr
 !! wikitext
 -{R|=&gt;}-
-!! html
+!! html/php
 <p>=&gt;
 </p>
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"=&lt;span typeof=\"mw:Entity\" data-parsoid=&#39;{\"src\":\"&amp;amp;gt;\",\"srcContent\":\">\",\"dsr\":[5,9,null,null]}&#39;>>&lt;/span>"}}'></span></p>
 !!end
 
 !! test
@@ -21524,9 +22287,11 @@ Don't break link parsing if language converter markup is in the caption.
 language=sr variant=sr-ec
 !! wikitext
 [[Main Page|-{R|main page}-]]
-!! html
+!! html/php
 <p><a href="/wiki/Main_Page" title="Маин Паге">main page</a>
 </p>
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Main_Page" title="Main Page"><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"main page"}}' data-parsoid='{"fl":["R"]}'></span></a></p>
 !! end
 
 !! test
@@ -21538,6 +22303,8 @@ language=sr variant=sr-ec
 !! html/php
 <p>foo
 </p>
+!! html/parsoid
+<p><span typeof="mw:Transclusion mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"foo"}}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Шаблон:Echo"},"params":{"1":{"wt":"-{R|foo}-"}},"i":0}}]}'></span></p>
 !! end
 
 !! test
@@ -21545,12 +22312,12 @@ T146305: Don't break image parsing if language converter markup is in the captio
 !! options
 language=sr
 !! wikitext
-[[File:Foobar.jpg|thumb|-{R|caption:}-]]
+[[Датотека:Foobar.jpg|thumb|-{R|caption:}-]]
 !! html/php
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/%D0%94%D0%B0%D1%82%D0%BE%D1%82%D0%B5%D0%BA%D0%B0:Foobar.jpg" class="internal" title="Повећај"></a></div>caption:</div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./Датотека:Foobar.jpg"><img resource="./Датотека:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><span typeof="mw:LanguageVariant" data-mw='{"disabled":true,"show":true,"text":"caption:"}'></span></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"}]}'><a href="./Датотека:Foobar.jpg"><img resource="./Датотека:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"caption:"}}' data-parsoid='{"fl":["R"]}'></span></figcaption></figure>
 !! end
 
 !! test
@@ -21558,14 +22325,15 @@ T146305: Don't break image parsing if nested language converter markup is in the
 !! options
 language=zh variant=zh-cn
 !! wikitext
-[[File:Foobar.jpg|thumb|-{zh-cn:blog (hk: -{zh-hans|WEBJOURNAL}-, tw: -{zh-hans|WEBLOG}-)}-]]
+[[File:Foobar.jpg|thumb|-{|zh-cn:blog (hk: -{zh-hans|WEBJOURNAL}-, tw: -{zh-hans|WEBLOG}-)}-]]
 !! html/php
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="放大"></a></div>blog (hk: WEBJOURNAL, tw: WEBLOG)</div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><span typeof="mw:LanguageVariant" data-mw='{"bidir":[{"l":"zh-cn","t":"blog (hk: &lt;span typeof=\"mw:LanguageVariant\" data-parsoid=&#39;{\"fl\":[\"zh-hans\"],\"dsr\":[42,64,null,2]}&#39; data-mw=&#39;{\"filter\":[\"zh-hans\"],\"text\":\"WEBJOURNAL\"}&#39;>&lt;/span>, tw: &lt;span typeof=\"mw:LanguageVariant\" data-parsoid=&#39;{\"fl\":[\"zh-hans\"],\"dsr\":[70,88,null,2]}&#39; data-mw=&#39;{\"filter\":[\"zh-hans\"],\"text\":\"WEBLOG\"}&#39;>&lt;/span>)"}],"show":true}'></span></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><span typeof="mw:LanguageVariant" data-mw-variant='{"twoway":[{"l":"zh-cn","t":"blog (hk: &lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"filter\":{\"l\":[\"zh-hans\"],\"t\":\"WEBJOURNAL\"}}&#39; data-parsoid=&#39;{\"fl\":[\"zh-hans\"],\"dsr\":[43,65,null,2]}&#39;>&lt;/span>, tw: &lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"filter\":{\"l\":[\"zh-hans\"],\"t\":\"WEBLOG\"}}&#39; data-parsoid=&#39;{\"fl\":[\"zh-hans\"],\"dsr\":[71,89,null,2]}&#39;>&lt;/span>)"}]}'></span></figcaption></figure>
 !! end
 
+# XXX html2wt disabled because rich markup in alt is not preserved.
 !! test
 Don't break gallery if language converter markup is inside.
 !! options
@@ -21575,7 +22343,7 @@ language=zh
 File:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=-{R|foo}-|-{R|bar}-]]|alt=-{R|bat}-
 File:foobar.jpg|{{Test|unamedParam|alt=-{R|param}-}}|alt=galleryalt
 </gallery>
-!! html
+!! html/php
 <ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
                        <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="bat" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
@@ -21593,6 +22361,17 @@ File:foobar.jpg|{{Test|unamedParam|alt=-{R|param}-}}|alt=galleryalt
                </div></li>
 </ul>
 
+!! html/parsoid
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=-{R|foo}-|-{R|bar}-]]|alt=-{R|bat}-\nFile:foobar.jpg|{{Test|unamedParam|alt=-{R|param}-}}|alt=galleryalt\n"}}'>
+<li class="gallerybox">
+<div class="thumb"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div>
+<div class="gallerytext"><span typeof="mw:Image" data-mw='{"caption":"&lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"disabled\":{\"t\":\"bar\"}}&#39; data-parsoid=&#39;{\"fl\":[\"R\"],\"dsr\":[68,77,null,2]}&#39;>&lt;/span>"}'><a href="./File:Foobar.jpg"><img alt="" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/20px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="2" width="20"/></a></span></div>
+</li>
+<li class="gallerybox">
+<div class="thumb"><span typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></span></div>
+<div class="gallerytext"><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"Test","href":"./Template:Test"},"params":{"1":{"wt":"unamedParam"},"alt":{"wt":"-{R|param}-"}},"i":0}}]}'>This is a test template</span></div>
+</li>
+</ul>
 !! end
 
 !! test
@@ -21607,9 +22386,8 @@ language=zh variant=zh-cn
 <dt>foo:bar</dt></dl>
 
 !! html/parsoid
-<dl>
-<dt><span typeof="mw:LanguageVariant" data-mw='{"bidir":[{"l":"zh-cn","t":"AAA"},{"l":"zh-tw","t":"BBB"}],"show":true}'></span></dt>
-<dt><span typeof="mw:LanguageVariant" data-mw='{"disabled":true,"show":true,"text":"foo:bar"}'></span></dt>
+<dl><dt data-parsoid='{"dsr":[0,24,1,0]}'><span typeof="mw:LanguageVariant" data-parsoid='{"tSp":[6]}' data-mw-variant='{"twoway":[{"l":"zh-cn","t":"AAA"},{"l":"zh-tw","t":"BBB"}]}'></span></dt>
+<dt data-parsoid='{"dsr":[25,39,1,0]}'><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"foo:bar"}}'></span></dt>
 </dl>
 !! end
 
@@ -21622,16 +22400,15 @@ language=zh variant=zh-cn
 !! wikitext
 ;<b>foo:bar
 ;-{zh-cn:AAA
-!! html/php
-<dl><dt><b>foo:bar</dt>
-<dt>-{zh-cn:AAA</b></dt></dl>
-
-!! html/parsoid
+!! html/php+tidy
 <dl>
 <dt><b>foo:bar</b></dt>
-<b>
-<dt>-{zh-cn</dt>
-<dd>AAA</dd>
+<dt><b>-{zh-cn:AAA</b></dt>
+</dl>
+!! html/parsoid
+<dl><dt data-parsoid='{"dsr":[0,11,1,0]}'><b data-parsoid='{"stx":"html","autoInsertedEnd":true}'>foo:bar</b></dt><b data-parsoid='{"stx":"html","autoInsertedEnd":true,"autoInsertedStart":true}'>
+<dt data-parsoid='{"dsr":[12,20,1,0]}'>-{zh-cn</dt>
+<dd data-parsoid='{"stx":"row","dsr":[20,24,1,0]}'>AAA</dd>
 </b></dl>
 !! end
 
@@ -21640,22 +22417,23 @@ T153135: Nested language converter markup in definition list (code coverage)
 !! options
 language=zh variant=zh-cn
 !! wikitext
-;-{zh-cn:AAA -{zh-hans|foo:bar}- -{R|bat:baz}-}-:def
+;-{|zh-cn:AAA -{zh-hans|foo:bar}- -{R|bat:baz}-}-:def
 !! html/php
 <dl><dt>AAA foo:bar bat:baz</dt>
 <dd>def</dd></dl>
 
 !! html/parsoid
-<dl>
-<dt><span typeof="mw:LanguageVariant" data-mw='{"bidir":[{"l":"zh-cn","t":"AAA &lt;span typeof=\"mw:LanguageVariant\" data-parsoid=&#39;{\"fl\":[\"zh-hans\"],\"dsr\":[13,32,null,2]}&#39; data-mw=&#39;{\"filter\":[\"zh-hans\"],\"text\":\"bar\"}&#39;>&lt;/span> &lt;span typeof=\"mw:LanguageVariant\" data-parsoid=&#39;{\"fl\":[\"R\"],\"dsr\":[33,46,null,2]}&#39; data-mw=&#39;{\"disabled\":true,\"show\":true,\"text\":\"bat:baz\"}&#39;>&lt;/span>"}],"show":true}'></span></dt>
-<dd>def</dd>
+<dl><dt data-parsoid='{"dsr":[0,49,1,0]}'><span typeof="mw:LanguageVariant" data-mw-variant='{"twoway":[{"l":"zh-cn","t":"AAA &lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"filter\":{\"l\":[\"zh-hans\"],\"t\":\"foo:bar\"}}&#39; data-parsoid=&#39;{\"fl\":[\"zh-hans\"],\"dsr\":[14,33,null,2]}&#39;>&lt;/span> &lt;span typeof=\"mw:LanguageVariant\" data-mw-variant=&#39;{\"disabled\":{\"t\":\"bat:baz\"}}&#39; data-parsoid=&#39;{\"fl\":[\"R\"],\"dsr\":[34,47,null,2]}&#39;>&lt;/span>"}]}'></span></dt>
+<dd data-parsoid='{"stx":"row","dsr":[49,53,1,0]}'>def</dd>
 </dl>
 !! end
 
+# html2wt mode disabled due to <nowiki> insertion.
 !! test
 T153140: Don't break table handling if language converter markup is in the cell.
 !! options
 language=sr variant=sr-ec
+parsoid=wt2html,wt2wt,html2html
 !! wikitext
 {|
 |-
@@ -21670,11 +22448,112 @@ language=sr variant=sr-ec
 
 !! html/parsoid
 <table>
-
+<tbody>
 <tr>
-<td> B
-</td></tr></table>
+<td><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"B"}}'></span></td>
+</tr>
+</tbody>
+</table>
+!! end
+
+!! test
+Language converter tricky html2wt cases (1)
+!! options
+language=sr
+parsoid=html2wt,wt2wt
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"}-"}}'></span></p>
+!! wikitext
+-{<nowiki>}-</nowiki>}-
+!! html/php
+<p>&#125;-
+</p>
+!! end
 
+!! test
+Language converter tricky html2wt cases (2)
+!! options
+language=sr
+parsoid=html2wt,wt2wt
+!! html/parsoid
+<p>-{foo}-</p>
+!! wikitext
+<nowiki>-{foo}-</nowiki>
+!! html/php
+<p>-&#123;foo&#125;-
+</p>
+!! end
+
+!! test
+Language converter tricky html2wt cases (3)
+!! options
+language=sr
+parsoid=html2wt,wt2wt
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"|"}}'></span></p>
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"R|raw"}}'></span></p>
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"-{foo}-"}}'></span></p>
+!! wikitext
+-{R||}-
+
+-{R|R|raw}-
+
+-{<nowiki>-{foo}-</nowiki>}-
+!! html/php
+<p>|
+</p><p>R|raw
+</p><p>-&#123;foo&#125;-
+</p>
+!! end
+
+!! test
+Language converter tricky html2wt cases (4)
+!! options
+language=sr
+parsoid=html2wt,wt2wt
+!! html/parsoid
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[2,14,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"hey\"}},\"i\":0}}]}&#39;>hey&lt;/span>"}}'></span></p>
+!! wikitext
+-{R|{{echo|hey}}}-
+!! html/php
+<p>hey
+</p>
+!! end
+
+# Note that the <nowiki> escaping added by parsoid for source text,
+# destination text, and language names only works on the PHP side
+# for *destination text*.  (HTML entity escaping wouldn't work
+# any better.)  This is probably a bug, at least for source texts.
+# (For language names PHP uses a precise regexp based on the languages
+# it currently knows have variants, which is fragile since this set
+# can grow/shrink over time.)
+!! test
+Language converter tricky html2wt cases (5)
+!! options
+language=zh variant=zh-cn
+!! html/parsoid
+<p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"a:b=>c","l":"zh-cn","t":"x;foo=>zh-cn:boo"},{"f":"bar","l":"zh-cn","t":"bat;xyz=>zh-cn:abc"}]}'/>foobar</p>
+<p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"A","l":"bo:g;us","t":"B"}]}'/></p>
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"twoway":[{"l":"zh-tw","t":"xyz"},{"l":"zh-cn","t":"0;zh-tw:bar"}]}'></span></p>
+<p><span typeof="mw:LanguageVariant" data-mw-variant='{"twoway":[{"l":"bo:g;us","t":"xyz"},{"l":"zh-cn","t":"abc"}]}'></span></p>
+<p>a:b=>c xyz</p>
+!! wikitext
+-{H|<nowiki>a:b=>c</nowiki>=>zh-cn:<nowiki>x;foo=>zh-cn:boo</nowiki>;bar=>zh-cn:<nowiki>bat;xyz=>zh-cn:abc</nowiki>}-foobar
+
+-{H|A=><nowiki>bo:g;us</nowiki>:B}-
+
+-{A|zh-tw:xyz; zh-cn:<nowiki>0;zh-tw:bar</nowiki>}-
+
+-{<nowiki>bo:g;us</nowiki>:xyz; zh-cn:abc}-
+
+a:b=>c xyz
+!! html/php+disabled
+<p>foobat;xyz=&gt;zh-cn:abc
+</p><p>A
+</p><p>0;zh-tw:bar
+</p><p>abc
+</p><p>a:b=&gt;c 0;zh-tw:bar
+</p>
 !! end
 
 !! test
@@ -25982,12 +26861,17 @@ parsoid=html2wt
 <p><a rel='mw:WikiLink' href='fr%3AFoo'>Foo</a>
 <a rel='mw:ExtLink' href='fr%3AFoo'>Foo</a>
 <a href='fr%3AFoo'>Foo</a></p>
+<p><a href='FR%3AFoo'>Foo</a>
+<a href='./FR:Foo'>Foo</a></p>
 !! wikitext
 [[:fr:Foo|Foo]]
 [[:fr:Foo|Foo]]
 [[:fr:Foo|Foo]]
 
 [[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+
 [[:fr:Foo|Foo]]
 [[:fr:Foo|Foo]]
 !! end
@@ -26257,7 +27141,7 @@ Image: Block level image should have \n before and after
 <p>123</p>
 <figure class="mw-halign-right" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="17" width="150"/></a></figure>
 <p>456</p>
-!!end
+!! end
 
 !! test
 Image: New block level image should have \n before and after (existing content)
@@ -26269,7 +27153,7 @@ Image: New block level image should have \n before and after (existing content)
 <p>123</p>
 <figure class="mw-halign-right" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"right","ak":"right"},{"ck":"thumbnail","ak":"thumb"},{"ck":"width","ak":"150x150px"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/150px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="17" width="150" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"17","width":"150"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure>
 <p>456</p>
-!!end
+!! end
 
 !! test
 Image: upright option (parsoid)
@@ -26281,7 +27165,7 @@ Image: upright option (parsoid)
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/170px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="19" width="170"/></a><figcaption>caption</figcaption></figure>
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/110px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="12" width="110"/></a><figcaption>caption</figcaption></figure>
 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/500px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="57" width="500"/></a><figcaption>caption</figcaption></figure>
-!!end
+!! end
 
 !! test
 Image: upright option is ignored on inline and frame images (parsoid)
@@ -26289,7 +27173,15 @@ Image: upright option is ignored on inline and frame images (parsoid)
 [[File:Foobar.jpg|500x500px|upright=0.5|caption]]
 !! html/parsoid
 <p><span typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/500px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="57" width="500"/></a></span></p>
-!!end
+!! end
+
+!! test
+Image: in template parameter with empty parameter
+!! wikitext
+{{echo|[[File:Foobar.jpg|link=]]}}
+!! html/parsoid
+<p><span class="mw-default-size" typeof="mw:Transclusion mw:Image" about="#mwt1" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[File:Foobar.jpg|link=]]"}},"i":0}}]}'><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></span></span></p>
+!! end
 
 !! test
 Image: from basic HTML (1)
index 8af3434..d9c01cb 100644 (file)
@@ -305,6 +305,7 @@ class TitleMethodsTest extends MediaWikiLangTestCase {
                        [ 'Help:Main Page', 'Help talk:Main Page' ],
                        [ 'Help talk:Main Page', 'Help:Main Page' ],
                        [ 'Special:FooBar', null ],
+                       [ 'Media:File.jpg', null ],
                ];
        }
 
diff --git a/vendor b/vendor
new file mode 160000 (submodule)
index 0000000..508fc65
--- /dev/null
+++ b/vendor
@@ -0,0 +1 @@
+Subproject commit 508fc6533a41f263b43b4a70cd1ddd0bfe402281